實際應用中,任務常常需要與多個事件同步,就需要使用多個訊號量。ucos為實現多個訊號量組合的功能定義了一種特殊的資料結構——訊號量集。
一. 訊號量集的結構
由兩部分組成,一是訊號量標誌組,存放各個訊號量;二是等待任務鍊錶,存放等待訊號量的的任務。
1. 訊號量集的標誌組
ucos不是使用事件控制塊的結構描述訊號量集,而是使用乙個標誌組的機構來描述訊號量集os_***_grp
2. 等待任務鍊錶
與其他事件不同,訊號量集採用乙個雙向鍊錶來組織等待任務。標誌組os_***_grp的成員osflagwaitlist指向訊號量集的這個等待任務鍊錶。
等待任務鍊錶中的節點os_flag_node中的成員osflagnodeflags相當於乙個過濾器,它可以將請求任務需要的訊號篩選出來,不需要的訊號遮蔽掉。
對等待任務鍊錶的操作:新增節點和刪除節點
二. 訊號量集的操作
建立;請求;傳送訊號;釋放訊號;查詢;刪除
UCOS之訊號量
c os ii 中的訊號量由兩部分組成 乙個是訊號量的計數值,它是乙個 16 位的無符號整數 0 到65,535之間 另乙個是由等待該訊號量的任務組成的等待任務表。使用者要在 os cfg.h中將os sem en開關量常數置成1,這樣 c os ii 才能支援訊號量。當訊號量不為0時,任務即可獲得...
ucos 計數訊號量
1 計數訊號量 1.1 建立訊號量 當事件控制塊os event中的oseventtype os event type sem時,則表示此處建立的事件為訊號量。上面為計數訊號量的建立函式,建立函式不能在中斷中呼叫,在全域性的事件控制塊列表中取出乙個事件控制塊pevent,對pevent進行初始化操作...
筆記 訊號量集
訊號量集,主要作用是保證共享記憶體的使用不發生衝突。訊號量 semaphore 實際是乙個整數,它的值由多個程序進行測試 test 和設定 set 就每個程序所關心的測試和設定操作而言,這兩個操作是不可中斷的,或稱 原子 操作,即一旦開始直到兩個操作全部完成。測試和設定操作的結果是 訊號量的當前值和...