diff options
| author | Bernard Xiong <[email protected]> | 2017-05-23 11:08:26 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2017-05-23 11:08:26 +0800 |
| commit | 1730dcb83f6079c4e382ef8a35e51e391507754c (patch) | |
| tree | 995dacfc0d286f98310dbdf48d95638c76273703 | |
| parent | ceacca1202fbbe10f177cfea0be497cfb3cf4c82 (diff) | |
| parent | 05052127c3fe2fcc8989e5cafa8099e7091a9a0c (diff) | |
Merge pull request #736 from geniusgogo/IDLE_hook
[kernel] Idle hook
| -rw-r--r-- | include/rtthread.h | 2 | ||||
| -rw-r--r-- | src/idle.c | 18 |
2 files changed, 16 insertions, 4 deletions
diff --git a/include/rtthread.h b/include/rtthread.h index d719e4bfb4..2037645e44 100644 --- a/include/rtthread.h +++ b/include/rtthread.h @@ -164,7 +164,7 @@ void rt_thread_inited_sethook (void (*hook)(rt_thread_t thread)); * idle thread interface */ void rt_thread_idle_init(void); -#ifdef RT_USING_HOOK +#if defined(RT_USING_HOOK) || defined(RT_USING_IDLE_HOOK) void rt_thread_idle_sethook(void (*hook)(void)); #endif void rt_thread_idle_excute(void); diff --git a/src/idle.c b/src/idle.c index aab09cb913..b821c66fd9 100644 --- a/src/idle.c +++ b/src/idle.c @@ -30,8 +30,14 @@ #include <rthw.h> #include <rtthread.h> +#if defined (RT_USING_HOOK) +#ifndef RT_USING_IDLE_HOOK +#define RT_USING_IDLE_HOOK 1 +#endif +#endif + #ifndef IDLE_THREAD_STACK_SIZE -#if defined (RT_USING_HOOK) || defined(RT_USING_HEAP) +#if defined (RT_USING_IDLE_HOOK) || defined(RT_USING_HEAP) #define IDLE_THREAD_STACK_SIZE 256 #else #define IDLE_THREAD_STACK_SIZE 128 @@ -44,7 +50,7 @@ static rt_uint8_t rt_thread_stack[IDLE_THREAD_STACK_SIZE]; extern rt_list_t rt_thread_defunct; -#ifdef RT_USING_HOOK +#ifdef RT_USING_IDLE_HOOK static void (*rt_thread_idle_hook)(); /** @@ -179,7 +185,13 @@ static void rt_thread_idle_entry(void *parameter) { while (1) { - RT_OBJECT_HOOK_CALL(rt_thread_idle_hook,()); + #ifdef RT_USING_IDLE_HOOK + if (rt_thread_idle_hook != RT_NULL) + { + rt_thread_idle_hook(); + } + #endif + rt_thread_idle_excute(); } } |
