[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 <guozhanxin@rt-thread.com>
This commit is contained in:
parent
d4b5555b7e
commit
5178e7ec0b
|
@ -85,6 +85,9 @@ void rt_tick_set(rt_tick_t tick);
|
||||||
void rt_tick_increase(void);
|
void rt_tick_increase(void);
|
||||||
rt_tick_t rt_tick_from_millisecond(rt_int32_t ms);
|
rt_tick_t rt_tick_from_millisecond(rt_int32_t ms);
|
||||||
rt_tick_t rt_tick_get_millisecond(void);
|
rt_tick_t rt_tick_get_millisecond(void);
|
||||||
|
#ifdef RT_USING_HOOK
|
||||||
|
void rt_tick_sethook(void (*hook)(void));
|
||||||
|
#endif
|
||||||
|
|
||||||
void rt_system_timer_init(void);
|
void rt_system_timer_init(void);
|
||||||
void rt_system_timer_thread_init(void);
|
void rt_system_timer_thread_init(void);
|
||||||
|
|
28
src/clock.c
28
src/clock.c
|
@ -26,6 +26,32 @@
|
||||||
static volatile rt_tick_t rt_tick = 0;
|
static volatile rt_tick_t rt_tick = 0;
|
||||||
#endif /* RT_USING_SMP */
|
#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
|
* @addtogroup Clock
|
||||||
*/
|
*/
|
||||||
|
@ -67,6 +93,8 @@ void rt_tick_increase(void)
|
||||||
struct rt_thread *thread;
|
struct rt_thread *thread;
|
||||||
rt_base_t level;
|
rt_base_t level;
|
||||||
|
|
||||||
|
RT_OBJECT_HOOK_CALL(rt_tick_hook, ());
|
||||||
|
|
||||||
level = rt_hw_interrupt_disable();
|
level = rt_hw_interrupt_disable();
|
||||||
|
|
||||||
/* increase the global tick */
|
/* increase the global tick */
|
||||||
|
|
Loading…
Reference in New Issue