[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:
tyustli 2022-02-13 14:50:51 +08:00 committed by GitHub
parent d4b5555b7e
commit 5178e7ec0b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 31 additions and 0 deletions

View File

@ -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);

View File

@ -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 */