ucos2歷程——信號量集

信號量集

信號量集由兩部分組成:標識組和等待任務列表;

標識組由三部分組成:1.OSFlagType——識別是否爲信號量集的標誌

                                2.OSFlagWaitList——指向等待任務列表的指針

                                3.OSFlagFlags——信號量表

1.OSFlagType被固定爲OS_EVENT_TYPE_FLAG,所以這裏不做過多討論

2.OSFlagWaitList指的是一個void類型的指針,主要用途是用來指向一個鏈表,該鏈表中存放了給信號量集的全部等待任務,而也就是我們即將說到的等待任務列表

3.信號量表實際上代表着一個位圖,可以通過OS_CFG.H來定製位圖的位數(8/16/32)。這裏我們以8位位圖位例,該位圖的每個位也就代表了一個接收並被保存的信號量值。

注意:信號量集的標識組只是保存了各輸入信號量的值,而至於如何對這些任務進行處理則是等待任務的事情

等待任務必須完成一下兩個操作:1.在多個信號量輸入中挑選等待任務感興趣的輸入

                                                2.把挑選出來的輸入按照等待任務所期待的方式運算,以得到輸出。

1.值得注意的是,爲了解決第一個問題,也就是挑選信號量。所以ucos2定義了長度與輸入標誌列表-信號量表OSFlagFlags長度相等OSFlagNodeFlags,目的顯而易見,就是作爲過濾器在多個信號量輸入中挑選等待任務感興趣的輸入

2.接下來爲了處理第二個問題,ucos2又定義了一個OSFlagNodeWaitType變量負責過濾出來的信號量的運算。



有了上面的介紹,相信看下面這個圖就沒問題了:









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章