新版本中,在开启HOOK功能的前提下,定义宏开关RT_HOOK_USING_FUNC_PTR将开启与过去相同的基于函数指针运行时注册的HOOK机制,实现向前兼容。 需要特别说明的是: ●该机制的优点:在运行时刻允许用户动态修改HOOK函数; ●其缺点是:即便用户并未使用对应的HOOK,该机制也...
在rtconfig.h定义宏开关RT_USING_HOOK将开启HOOK功能。默认情况下,在该宏未定义时,所有HOOK功能都将被强制关闭,不会生成任何代码。 2.2 向前兼容 在4.1.0之前,RT-Thread提供了一套基于函数指针运行时注册的HOOK机制。新版本中,在开启HOOK功能的前提下,定义宏开关RT_HOOK_USING_FUNC_PTR将开启与过去相同的基于函数...
在rtconfig.h定义宏开关RT_USING_HOOK将开启HOOK功能。默认情况下,在该宏未定义时,所有HOOK功能都将被强制关闭,不会生成任何代码。 2.2 向前兼容 在4.1.0之前,RT-Thread提供了一套基于函数指针运行时注册的HOOK机制。新版本中,在开启HOOK功能的前提下,定义宏开关RT_HOOK_USING_FUNC_PTR将开启与过去相同的基于函数...
update Kconfig, add RT_HOOK_USING_FUNC_PTR Improving hooking methods Backward compatible with existing function-pointer based hooking method Using RT_USING_HOOK as an on/off switch Introducing a new low-overhead macro-based hooking method [include/rtthread.h] Add function declarations to avoid com...
/* RT_USING_SMP */ #ifndef __on_rt_tick_hook #define __on_rt_tick_hook() __ON_HOOK_ARGS(rt_tick_hook, ()) #endif #if defined(RT_USING_HOOK) && defined(RT_HOOK_USING_FUNC_PTR) static void (*rt_tick_hook)(void); /** ...
621 + #define _RT_OBJECT_HOOK_CALL(func, argv) __ON_HOOK_ARGS(func, argv) 622 + #define RT_OBJECT_HOOK_CALL(func, argv) _RT_OBJECT_HOOK_CALL(func, argv) 623 + 600 624 #ifdef RT_HOOK_USING_FUNC_PTR 601 625 #define __ON_HOOK_ARGS(__hook, argv) do {if ((__hook) ...
#define RT_USING_OVERFLOW_CHECK #define RT_USING_HOOK #define RT_HOOK_USING_FUNC_PTR #define RT_USING_IDLE_HOOK #define RT_IDLE_HOOK_LIST_SIZE 4 #define IDLE_THREAD_STACK_SIZE 256 #define RT_USING_TIMER_SOFT #define RT_TIMER_THREAD_PRIO 4 ...
RT_EOK;}```stop函数就相对来说简单了很多,主要就是:1.参数检查2.调用rt_object_put_hook钩子...
新版本中,在开启HOOK功能的前提下,定义宏开关RT_HOOK_USING_FUNC_PTR将开启与过去相同的基于函数指针运行时注册的HOOK机制,实现向前兼容。...(struct rt_thread *from, struct rt_thread *to); 因此,我们只需要在rtconfig.h(或其直接、间接包含的头文件)中定义如下的宏: #define __...*/ \ } while(0)...
RT_OBJECT_HOOK_CALL(rt_timer_timeout_hook, (t)); /* remove timer from timer list firstly */ _rt_timer_remove(t); /* call timeout function */ t->timeout_func(t->parameter); /* re-get tick */ current_tick = rt_tick_get(); RT_DEBUG_LOG(RT_DEBUG_TIMER, ("current tick: %d...