完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在thread.c的275行用了RT_OBJECT_HOOK_CALL这么一个宏
RT_OBJECT_HOOK_CALL(rt_scheduler_hook, (from_thread, to_thread)); 其中用到了rt_scheduler_hook这么一个函数指针 static void (*rt_scheduler_hook)(struct rt_thread *from, struct rt_thread *to); 这是指针的声明。 我的疑问是在这个宏调用之前没看到关于rt_scheduler_hook这个指针的初始化就调用了,不是野指针吗,没看懂。。。。 另外请帮忙解释一下钩子应该怎么用,谢谢 |
|
相关推荐
6个回答
|
|
您可以展开一下 RT_OBJECT_HOOK_CALL 的实现,肯定有空判断。
|
|
|
|
对的,这个指针并没有“初始化”。这个是未初始化的变量,对于未初始化的变量(ZI/bss段),系统在启动时会默认清零。所以这里我们依然沿用这样的方式
|
|
|
|
展开之后的形式是:
do { if(rt_scheduler_hook != RT_NULL) { rt_scheduler_hook(from_thread, to_thread); } } while(0) RT_NULL是个空指针,如果rt_scheduler_hook没有初始化是个野指针的话,不知道指向哪里,那应该肯定不会等于RT_NULL,程序就继续往下执行了,那这个逻辑就说不通了,不知道我的理解对不对。。 |
|
|
|
|
|
|
|
非常感谢,我明白了。。
|
|
|
|
苏州惠普联电子有限公司生产CPCI机箱 VME机箱
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
933 浏览 0 评论
IaaS+on+DPU(IoD)+下一代高性能算力底座技术白皮书
1859 浏览 0 评论
飞凌嵌入式-ELFBOARD 常用的USB接口及其不同版本介绍第1期
1056 浏览 0 评论
【Vision Board创客营连载体验】RA8D1-Vision Board上OSPI-Flash实践
1511 浏览 0 评论
I.MX6ULL-飞凌 ElfBoard ELF1板卡- 应用层更改引脚复用的方法
3741 浏览 0 评论
64933 浏览 21 评论
嵌入式热门DIY项目:智能机器人开源资料合集(原理图、代码、论文)
67672 浏览 22 评论
57644 浏览 32 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-15 13:29 , Processed in 0.599510 second(s), Total 48, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191