1. 程式人生 > >Autosar事件機制——摘自百度文庫

Autosar事件機制——摘自百度文庫

但是 用途 中斷 hook clas 系統 waiting 對象 允許

摘自https://wenku.baidu.com/view/19b75a8ff18583d04864591b.html,感謝原作者!

AUTOSAR事件機制

作者:鄧孔宏

1.1 事件

事件是由操作系統管理的對象。事件機制只提供給拓展的任務,它開始任務到waiting和去到waiting狀態的轉換,是一種同步的方法。

每個任務有一個確切數量的事件集。這個任務被稱作那些事件的所有者。一個個別的事件被識別通過它的所有者和它的名稱(或掩碼)。事件可以被用來傳達二進制信息到(事件分配到的)拓展的任務。

有多種可用的選項去操作事件,依據事件的所有者是專用的任務還是另一個(不一定要是一個拓展的任務的)任務。所有的任務可以設置任何不是

suspended拓展的任務的任何事件。只有所有者能清除它的事件和去等待它的事件的接收。

任何的任務或者第二類中斷可以設置一個事件給一個非suspended任務,這樣通過這個事件通知這個拓展的任務關於任何狀態的改變。

任何情況下一個事件的接收者是一個拓展的任務。因此,不可能一個中斷服務程序或一個基礎的任務等待一個事件。一個事件只能被該事件的所有者任務清除。

如果至少一個任務正等待的事件已經發生,該處於waiting狀態的拓展的任務被釋放到ready狀態。如果一個拓展的任務試圖等待一個事件,而這個事件已經發生,該任務繼續在running狀態。

1.2 事件控制

StatusType SetEvent

TaskType <TaskID>,EventMaskType <Mask>

輸入參數:TaskID 指的是要被設置一個或幾個事件的任務

Mask 要被設置的事件的掩碼

返回的Status:

標準的: · 沒有錯誤,E_OK

拓展的: · 任務<TaskID>是無效的,E_OS_ID

· 涉及的任務不是拓展的任務,E_OS_ACCESS

· 事件被能被設置因為涉及的任務處於suspended狀態,E_OS_STATE

一致性類別:ECC1,ECC2

該服務可能在一個中斷服務程序和任務層被調用,但是不是在

hook函數裏被調用。

任務<TaskID>的事件被設置根據事件掩碼<MASK>。如果任務<TaskID>在等待至少一個在<MASK>裏規定的事件,調用SetEvent導致任務被轉換到ready狀態。

在事件掩碼裏沒有被設置的事件維持不變。

StatusType ClearEventEventMaskType <Mask>

輸出參數:MASK 要被清除的事件的掩碼

返回的Status

標準的: · 沒有錯誤,E_OK

· 不是來自拓展任務的調用,E_OS_ACCESS

· 調用在中斷層,E_OS_CALLEVEL

一致性類別:ECC1,ECC2

拓展任務的事件通過調用ClearEvent被清除根據事件掩碼<Mask>

系統服務ClearEvent僅限於擁有該事件的拓展的任務。

StatusType GetEventTaskType <TaskID>EventMaskRefType <Event>

輸入參數:TaskID 所有的事件掩碼要被返回的任務

輸出參數:指向返回數據的內存

返回的狀態值

標準的: · 沒有錯誤,E_OK

拓展的: · 任務<TaskID>無效,E_OS_ID

· 涉及的任務<TaskID>不是一個拓展的任務,E_OS_ACCESS

· 涉及的任務<TaskID>處於suspended狀態,E_OS_STATE

一致性類別:ECC1,ECC2

該服務返回任務<TaskID>當前的所有的事件二進制數字。

服務可能在中斷服務程序,任務層和一些hook程序被調用。

任務<TaskID>的事件掩碼的當前的狀態被復制到<Event>

涉及的任務應該是一個拓展的任務。

StatusType WaitEventEventMaskType <Mask>

輸入參數:Mask 等待的事件的掩碼

返回的Status值:

標準的: · 沒有錯誤,E_OK

拓展的: · 調用任務不是拓展的任務,E_OS_ACCESS

· 調用任務占據資源,E_OS_RESOURCE

· 調用在中斷層,E_OS_CALLEVEL

一致性類別:ECC1,ECC2

調用任務被設置成waiting,除非規定在<Mask>裏的至少一個事件已經發生。

如果等待的條件發生,這個調用強制重調度。如果重調度發生,任務的內部的資源被釋放當任務處於waiting狀態的時候。

該服務只能被擁有該事件的拓展的任務調用。

聲明:本文主要內容從OSEK OS標準規範文件os223.pdf翻譯而來,並結合AUTOSAR OS規範進行了部分調整。文件公開,用於研究和探討,作者不承擔引用本文而造成的任何後果。未經作者同意不允許用於任何商業用途。

Autosar事件機制——摘自百度文庫