深入了解Xenomai实时系统
1. 核心代码分析
以下是一段关键代码,其主要功能是等待消息并处理超时和中断情况:
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_exit; } done: /*