diff options
| author | [email protected] <[email protected]> | 2011-06-12 10:01:48 +0000 |
|---|---|---|
| committer | [email protected] <[email protected]> | 2011-06-12 10:01:48 +0000 |
| commit | 864bd1180237c952beefda21266c3f76f288b99a (patch) | |
| tree | 0d437761b4efee23c50b0a6e88e6a664fd55b2cf /include/rtthread.h | |
| parent | 8c3d1e5eaec88d77a2fe623e9d478b9542bad040 (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.h | 19 |
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 /*@}*/ |
