非常完美的函式
#if os_event_en > 0
int8uos_eventtaskrdy (os_event *pevent, void *msg, int8u msk)
ptcb=ostcbpriotbl[prio];
ptcb->ostcbdly=0;
ptcb->ostcbeventptr= (os_event *)0;
#if ((os_q_en > 0) && (os_max_qs > 0)) || (os_mbox_en > 0)
ptcb->ostcbmsg= msg;
#else
msg= msg;
#endif
ptcb->ostcbstat&= ~msk;
if (ptcb->ostcbstat == os_stat_rdy)
return (prio);
}
#endif
為什麼是完美的?
因為他很好的把任務的等待列表與任務很好的結合起來。
具體的過程是這樣的:
通過任務等待列表osevnetgrp和oseventtbl找到等待事件的任務的優先順序,在通過任務的優先順序在陣列ostcbpriotbl[prio];中找到相應的任務控制塊,通過任務控制塊使任務的狀態是就緒態,任務的延遲是0,任務的事件指標0,這樣就是這個任務處於就緒狀態。
他被呼叫的函式是ossemsend()?
原因是,要是釋放訊號量那麼具有相應的任務去使用訊號量。
RT thread非常美的函式學習
指定長度位寫入指定資料 this function writes multi bit value of registers for mpu6 param dev the pointer of device driver structure param reg the register for mpu...
完美的代價
問題描述 回文串,是一種特殊的字串,它從左往右讀和從右往左讀是一樣的。小龍龍認為回文串 才是完美的。現在給你乙個串,它不一定是回文的,請你計算最少的交換次數使得該串變成乙個完美 的回文串。交換的定義是 交換兩個相鄰的字元,例如 mamad 第一次交換 ad mamda 第二次交換 md madma ...
完美的序列
題目描述 lyk 認為乙個完美的序列要滿足這樣的條件 對於任意兩個位置上的數都不相同。然而並不是所有的序列都滿足這樣的條件。於是 lyk 想將序列上的每乙個元素都增加一些數字 當然也可以選擇不增加 使得整個序列變成美妙的序列。具體地,lyk 可以花費 1 點代價將第 i 個位置上的數增加 1,現在 ...