From b1f15366883aac930cb07767a7929d64a61d8a34 Mon Sep 17 00:00:00 2001 From: Bernard Xiong Date: Sun, 9 Apr 2017 19:12:53 +0800 Subject: [PATCH] [kernel] Add thread_inited_hook. --- include/rtthread.h | 3 ++- src/thread.c | 19 ++++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/include/rtthread.h b/include/rtthread.h index b8809474f6..d719e4bfb4 100644 --- a/include/rtthread.h +++ b/include/rtthread.h @@ -156,7 +156,8 @@ void rt_thread_timeout(void *parameter); #ifdef RT_USING_HOOK void rt_thread_suspend_sethook(void (*hook)(rt_thread_t thread)); -void rt_thread_resume_sethook(void (*hook)(rt_thread_t thread)); +void rt_thread_resume_sethook (void (*hook)(rt_thread_t thread)); +void rt_thread_inited_sethook (void (*hook)(rt_thread_t thread)); #endif /* diff --git a/src/thread.c b/src/thread.c index ec7bfdefbd..0eef331d52 100644 --- a/src/thread.c +++ b/src/thread.c @@ -48,7 +48,9 @@ extern rt_list_t rt_thread_defunct; #ifdef RT_USING_HOOK static void (*rt_thread_suspend_hook)(rt_thread_t thread); -static void (*rt_thread_resume_hook)(rt_thread_t thread); +static void (*rt_thread_resume_hook) (rt_thread_t thread); +static void (*rt_thread_inited_hook) (rt_thread_t thread); + /** * @ingroup Hook * This function sets a hook function when the system suspend a thread. @@ -61,6 +63,7 @@ void rt_thread_suspend_sethook(void (*hook)(rt_thread_t thread)) { rt_thread_suspend_hook = hook; } + /** * @ingroup Hook * This function sets a hook function when the system resume a thread. @@ -73,6 +76,18 @@ void rt_thread_resume_sethook(void (*hook)(rt_thread_t thread)) { rt_thread_resume_hook = hook; } + +/** + * @ingroup Hook + * This function sets a hook function when a thread is initialized. + * + * @param hook the specified hook function + */ +void rt_thread_inited_sethook(void (*hook)(rt_thread_t thread)) +{ + rt_thread_inited_hook = hook; +} + #endif void rt_thread_exit(void) @@ -162,6 +177,8 @@ static rt_err_t _rt_thread_init(struct rt_thread *thread, 0, RT_TIMER_FLAG_ONE_SHOT); + RT_OBJECT_HOOK_CALL(rt_thread_inited_hook,(thread)); + return RT_EOK; } -- GitLab