任务通知数据结构
任务通知不用创建,本身就在TCB中,如下
分别是通知值和通知状态,状态有如下3种
等待通知
step1.关中断
step2.如果ucNotifyState !=taskNOTIFICATION_RECEIVED
ulNotifiedValue 清除 ulBitsToClearOnEntry
ucNotifyState设置成taskWAITING_NOTIFICATION
如果xTicksToWait>0 把自己移到DelayedList阻塞
如果ucNotifyState ==taskNOTIFICATION_RECEIVED
从ulNotifiedValue取值
ulNotifiedValue 清除 ulBitsToClearOnExit
step3.开中断
发送通知
step1.关中断
step2.取出要通知任务TCB到xTaskToNotify,
要通知任务原来值到pulPreviousNotificationValue,
要通知任务原来状态ucOriginalNotifyState,
设置要通知任务状态为taskNOTIFICATION_RECEIVED,
根据eAction来改写要通知任务值ulNotifiedValue
step3.如果要通知任务原来状态是taskWAITING_NOTIFICATION则
把要通知任务xTaskToNotify从DelayedList移到ReadyList唤醒
step4.开中断