深入解析Xenomai实时系统
1. 核心代码逻辑
在Xenomai系统中,有一段关键代码用于处理任务等待消息的逻辑,以下是代码示例:
task = vrtx_current_task();
/*
* Set up a few status bits the VRTX way, so that inquiries
* about the task state will return proper information.
*/
task->vrtxtcb.TCBSTAT = TBSMBOX;
if (timeout)
task->vrtxtcb.TCBSTAT |= TBSDELAY;
/* We have to wait for a message now. */
xnsynch_sleep_on(&mb->synchbase, timeout, XN_RELATIVE);
/* Are we waking up due to a Linux signal, or some unblocking call? */
if (xnthread_test_info(&task->threadbase, XNBREAK)) {
*errp = -EINTR;
goto unlock_and_exit;
}
/* Did we reach the timeout limit? */
if (xnthread_test_info(&task->threadbase, XNTIMEO)) {
*errp = ER_TMO;
goto unlock_and_exi
超级会员免费看
订阅专栏 解锁全文
51

被折叠的 条评论
为什么被折叠?



