新版本中,在开启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将开启与过去相同的基于函数...
从4.1.0版本开始,RT-Thread在保证向前兼容的基础上对原有的HOOK方式进行了改进,实现了如下的效果: 与原有使用函数指针进行“运行时刻”HOOK的方式兼容,依赖原有方式进行代码插入或HOOK的模块无需修改; 使用RT_USING_HOOK作为总开关 当未定义该宏时,将关闭所有HOOK功能,也不再生成任何相关代码 当定义该宏时,在未...
hook函数是指在系统运行期间,将用户定义的函数(hook函数)嵌入RT-Thread系统内核函数的一个机制。当某些重要系统函数调用时,hook函数被触发,从而可以进行一些额外的处理。这种机制将RT-Thread系统的功能扩展到了应用程序部分。 2.作用 hook函数具有以下三个作用: (1)底层驱动操作:在驱动层面上,由于底层硬件的差异,不可...
1. 新增了静态宏方式的HOOK机制 从4.1.0版本开始,RT-Thread在保证向前兼容的基础上对原有的HOOK方式进行了改进,实现了如下的效果: 与原有使用函数指针进行“运行时刻”HOOK的方式兼容,依赖原有方式进行代码插入或HOOK的模块无需修改; 使用RT_USING_HOOK作为总开关 ...
rt_err_trt_thread_idle_sethook(void(*hook)(void));rt_err_trt_thread_idle_delhook(void(*hook)(void)); !!! note “注意事项” 空闲线程是一个线程状态永远为就绪态的线程,因此设置的钩子函数必须保证空闲线程在任何时刻都不会处于挂起状态,例如rt_thread_delay(),rt_sem_take() 等可能会导致线程挂...
*/voidrt_free_sethook(void(*hook)(void*ptr));/* 上面函数的hook 函数接口 参数 描述 ptr 待释放的内存块指针 */voidhook(void*ptr); 释放内存块后要清空内存块指针,不然会成为野指针。 三、RT-Thread 内存池 RT-Thread 的第二种内存管理方式是 内存池,内存池是一种内存分配方式,用于分配大量大小相同...
void rt_free_sethook(void (*hook)(void *ptr)); 设置的钩子函数会在调用内存释放完成前进行回调。回调时,释放的内存块地址会做为入口参数传递进去(此时内存块并没有被释放)。下表描述了该函数的输入参数: rt_free_sethook() 的输入参数其中hook 函数接口如下: ...
*/rt_err_trt_thread_idle_sethook(void(*hook)(void));rt_err_trt_thread_idle_delhook(void(*hook)(void)); 官方有一段注意说明如下: 1.6.6 设置调度器钩子 在整个系统的运行时,系统都处于线程运行、中断触发 - 响应中断、切换到其他线程,甚至是线程间的切换过程中,或者说系统的上下文切换是系统中最普...
void cpu_usage_init(void){ /* set idle thread hook */ rt_thread_idle_sethook(cpu_usage_idle_hook);} 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 以上的代码网上找的,首先分析这两个宏,第二个宏就是前面所说的防止变量溢出用的,而第一个值就是CPU计算周期,这个值比较关键,后面再说。