本文主要是介绍使一个任务进入等待某事件发生状态, OSEventTaskWait(),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
程序清单 L6.7是OSEventTaskWait()函数的源代码。当某个任务要等待一个事件的发生时,相应事件的OSSemPend(),OSMboxPend()或者OSQPend()函数会调用该函数将当前任务从就绪任务表中删除,并放到相应事件的事件控制块的等待任务表中。
程序清单 L6.7 使一个任务进入等待状态 |
void OSEventTaskWait (OS_EVENT *pevent) |
{ |
OSTCBCur->OSTCBEventPtr = pevent; (1) |
if ((OSRdyTbl[OSTCBCur->OSTCBY] &= ~OSTCBCur->OSTCBBitX) == 0) { (2) |
OSRdyGrp &= ~OSTCBCur->OSTCBBitY; |
} |
pevent->OSEventTbl[OSTCBCur->OSTCBY] |= OSTCBCur->OSTCBBitX; (3) |
pevent->OSEventGrp |= OSTCBCur->OSTCBBitY; |
} |
在该函数中,首先将指向事件控制块的指针放到任务的任务控制块中 [L6.7(1)],接着将任务从就绪任务表中删除[L6.7(2)],并把该任务放到事件控制块的等待任务表中[L6.7(3)]。
这篇关于使一个任务进入等待某事件发生状态, OSEventTaskWait()的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!