summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernard Xiong <[email protected]>2017-05-23 11:08:26 +0800
committerGitHub <[email protected]>2017-05-23 11:08:26 +0800
commit1730dcb83f6079c4e382ef8a35e51e391507754c (patch)
tree995dacfc0d286f98310dbdf48d95638c76273703
parentceacca1202fbbe10f177cfea0be497cfb3cf4c82 (diff)
parent05052127c3fe2fcc8989e5cafa8099e7091a9a0c (diff)
Merge pull request #736 from geniusgogo/IDLE_hook
[kernel] Idle hook
-rw-r--r--include/rtthread.h2
-rw-r--r--src/idle.c18
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();
}
}