请问线程休眠时清除 errno 的设计意图是什么?

发布于 2020-10-12 21:22:45

在使用 rt_set_errno() / rt_get_errno() 时,发现如果 rt_set_errno()rt_get_errno() 之间使用线程休眠,会导致 errno 清零,追踪源码发现确实有一步是清零 errno,如图所示。

请教一下这个步骤的设计意图是怎么样的?

image.png

查看更多

关注者
0
被浏览
179
Remember
Remember 2020-10-13

是正常逻辑吧:

  1. 休眠定时器到期后会设置thread->error-RT_ETIMEOUT,表示定时到期;
  2. rt_thread_sleep中判断只有-RT_ETIMEOUT错误,表示休眠结束,就将thread->error恢复为RT_EOK;如果不是-RT_ETIMEOUT错误,则不会恢复
1 个回答

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览