任务之间的同步与通信( 四 )


( *)
使一个任务进入等待状态 。当某个任务要等待一个事件的发生时,需要调用本函数将该任务从就绪任务表中删除,并放到相应事件的等待任务表中;
【任务之间的同步与通信】void OSEventTaskWait (OS_EVENT *pevent){OSTCBCur->OSTCBEventPtr = pevent;if ((OSRdyTbl[OSTCBCur->OSTCBY] &= ~OSTCBCur->OSTCBBitX) == 0) {OSRdyGrp &= ~OSTCBCur->OSTCBBitY;}pevent->OSEventTbl[OSTCBCur->OSTCBY] |= OSTCBCur->OSTCBBitX;pevent->OSEventGrp |= OSTCBCur->OSTCBBitY;}
( *)
由于等待超时而将任务置为就绪态 。如果一个任务等待的事件在预先指定的时间内没有发生,需要调用本函数将该任务从等待列表中删除,并把它置为就绪状态;
void OSEventTO (OS_EVENT *pevent){if ((pevent->OSEventTbl[OSTCBCur->OSTCBY] &= ~OSTCBCur->OSTCBBitX) == 0){pevent->OSEventGrp &= ~OSTCBCur->OSTCBBitY;}OSTCBCur->OSTCBStat = OS_STAT_RDY;OSTCBCur->OSTCBEventPtr = (OS_EVENT *)0;}