rtthread中发送信号给就绪态线程 , 线程伪造现场, 为什么-32 呀,这不是增加了线程的开销吗,虽然后边恢复了sp指针,但是万一因为这个32+16*4这个伪造的现场导致线程栈溢出呢?我认为-4就够了 , 请大佬指教!!!
线程栈的初始化 (-4)
信号伪造现场 (-32)
线程栈初始化函数 (+4)
这个栈的初始化为什么要先-4后+4呢? 是基于什么考虑的呢?
查看更多
为什么要先-4后+4呢?
历史问题,为了兼容。你可以只看减4。加4是为了libcpu里面方便计算。这里的加4减4与signal无关。
别纠结,也有预估的成分,或者说保险起见。
欢迎发表与嵌入式相关的技术分享、开发技巧、工具介绍、技术设想、职业心得、行业评论等对他人有启发,排版优雅的文章
回到 顶部
发布 问题
分享 好友
手机 浏览
投诉 建议
回到 底部
没太明白 😭 ,是为了兼容什么呢
最早减4,libcpu里面就可以直接用了。
后面发一有些芯片的栈要8字节对齐,以及64位,以及向上生长的情况。
所以libcpu里面需要减4之前的值方便计算。
方案有2个:
参考