summaryrefslogtreecommitdiff
path: root/include/rtthread.h
diff options
context:
space:
mode:
author[email protected] <[email protected]>2011-06-12 10:01:48 +0000
committer[email protected] <[email protected]>2011-06-12 10:01:48 +0000
commit864bd1180237c952beefda21266c3f76f288b99a (patch)
tree0d437761b4efee23c50b0a6e88e6a664fd55b2cf /include/rtthread.h
parent8c3d1e5eaec88d77a2fe623e9d478b9542bad040 (diff)
Add reentrance check. Put kernel debug switch together.
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@1494 bbd45198-f89e-11dd-88c7-29a3b14d5316
Diffstat (limited to 'include/rtthread.h')
-rw-r--r--include/rtthread.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/include/rtthread.h b/include/rtthread.h
index 7793663873..95ab191397 100644
--- a/include/rtthread.h
+++ b/include/rtthread.h
@@ -21,6 +21,7 @@
#define __RT_THREAD_H__
#include <rtdef.h>
+#include <rtdebug.h>
#ifdef __cplusplus
extern "C" {
@@ -48,6 +49,24 @@ void rt_object_detach_sethook(void (*hook)(struct rt_object* object));
void rt_object_trytake_sethook(void (*hook)(struct rt_object* object));
void rt_object_take_sethook(void (*hook)(struct rt_object* object));
void rt_object_put_sethook(void (*hook)(struct rt_object* object));
+#define RT_OBJECT_HOOK_CALL(hookfunc)\
+ do{\
+ register rt_base_t temp;\
+ temp = rt_hw_interrupt_disable();\
+ RT_DEBUG_REENT_IN\
+ if (hookfunc != RT_NULL) hookfunc();\
+ RT_DEBUG_REENT_OUT\
+ rt_hw_interrupt_enable(temp);\
+ }while(0)
+#define RT_OBJECT_HOOK_CALL2(hookfunc,...)\
+ do{\
+ register rt_base_t temp;\
+ temp = rt_hw_interrupt_disable();\
+ RT_DEBUG_REENT_IN\
+ if (hookfunc != RT_NULL) hookfunc(__VA_ARGS__);\
+ RT_DEBUG_REENT_OUT\
+ rt_hw_interrupt_enable(temp);\
+ }while(0)
#endif
/*@}*/