From 5178e7ec0ba0bb65c1bc9bde4c9421e695abb50a Mon Sep 17 00:00:00 2001 From: tyustli <43946994+tyustli@users.noreply.github.com> Date: Sun, 13 Feb 2022 14:50:51 +0800 Subject: [add] src/clock.c add hook for rt_tick_increase (#5569) * [add] src/clock.c add hook for rt_tick_increase * [fix] clock.c rt_tick_incerase hook function * Update clock.c Co-authored-by: guo --- src/clock.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'src') diff --git a/src/clock.c b/src/clock.c index 21be3a4203..0e88bf4d61 100644 --- a/src/clock.c +++ b/src/clock.c @@ -26,6 +26,32 @@ static volatile rt_tick_t rt_tick = 0; #endif /* RT_USING_SMP */ +#ifndef __on_rt_tick_hook + #define __on_rt_tick_hook() __ON_HOOK_ARGS(rt_tick_hook, ()) +#endif + +#if defined(RT_USING_HOOK) && defined(RT_HOOK_USING_FUNC_PTR) +static void (*rt_tick_hook)(void); + +/** + * @addtogroup Hook + */ + +/**@{*/ + +/** + * This function will set a hook function, which will be invoked when tick increase + * + * + * @param hook the hook function + */ +void rt_tick_sethook(void (*hook)(void)) +{ + rt_tick_hook = hook; +} +/**@}*/ +#endif /* RT_USING_HOOK */ + /** * @addtogroup Clock */ @@ -67,6 +93,8 @@ void rt_tick_increase(void) struct rt_thread *thread; rt_base_t level; + RT_OBJECT_HOOK_CALL(rt_tick_hook, ()); + level = rt_hw_interrupt_disable(); /* increase the global tick */ -- cgit v1.3.1