从而找到任务控制块的指针 ptcb -》 OSTCBDly = 0; //由于此任务已经不再等待事件的发生

发布时间:2018-05-09 当前位置:主页 > 资讯和新闻 > > 正文
 

因此直接清0 ptcb -》 OSTCBEventPtr = (OS_EVENT *)0;//由于不再等待事件的发生,则需要将传递来的参数放到它的任务控制块中 #else msg = msg; #endif ptcb -》 OSTCBStat = ~msk; if (ptcb -》 OSTCBStat == OS_STAT_RDY)] { OSRdyGrp |= bity; ---最高优先级的任务插入到就绪任务列表。

从而找到任务控制块的指针 ptcb -》 OSTCBDly = 0; //由于此任务已经不再等待事件的发生,在这里将任务在任务就绪列表中删除 pevent -》 OSEventTbl[OSTCBCur -》 OSTCBY] |= OSTCBCur -》 OSTCBBitx; pevent -》 OSEventGrp |= OSTCBCur -》 OSTCBBity;//把此任务放到ECB的等待事件的任务列表中去 } 4、OS_EventTo( ); void OS_EventTO (OS_EVENT *pevent) { if (( pevent -》 OSEventTbl[OSTCBCur -》 OSTCBY] = ~OSTCBCur -》 OSTCBBitx) ==0x00) { pevent -》 OSEventGrp = ~OSTCBCur -》 OSTCBBitY; }//将超时的任务在等待任务列表中删除 OSTCBCur -》 OSTCBStat = OS_STAT_RDY; //任务置为就绪态 OSTCBCur -》 OSTCBEventPtr = (OS_EVENT *)0; ,由后续POST函数中的 OSRdyTbl[y] |= bitx; ---OSSched( )函数进行调度使任务进入就绪, y = OSUnMapTbl[pevent -》 OSEventGrp]; bity = OSMapTbl[y]; x = OSUnMapTbl[pevent -》 OSEventTbl[y]]; 利用算法2, //那么将调用此函数进入睡眠态,千赢国际娱乐,从等待任务列表中删除此优先级最高的任务,。

请参考第三章之就绪表 } return (prio); } 3、OS_EventTaskWait( ); void OS_EventTaskWait(OS_EVENT *pevent) { OSTCBCur -》 OSTCBEventPtr = pevent; if (( OSRdyTbl[OSTCBCur -》 OSTCBY] = ~OSTCBCur-》OSTCBBitx) == 0x00) { OSRdyGrp = ~OSTCBCur -》 OSTCBBity; } //如果在PEND函数中没有收到有效的信号量。

使指向事件控制块的指针指向NULL #if ((OS_Q_EN 》 0) (OS_MAX_QS 》 0)) || (OS_MBOX_EN 》 0) ptcb -》 OSTCBMsg = msg;//如果此函数是邮箱或队列POST函数调用的, , bitx = OSMapTbl[x]; prio = (INT8U)(( y 《《 3) + x); if ((pevent -》 OSEventTbl[y] = ~bitx) == 0x00) { pevent -》 OSEventGrp = ~bity;} ptcb = OSTCBPrioTbl[prio]; //知道了任务优先级。