使一个任务进入等待某事件发生状态, OSEventTaskWait()

    xiaoxiao2021-03-25  13

    程序清单 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)]。

    转载请注明原文地址: https://ju.6miu.com/read-149646.html

    最新回复(0)