Semaphores 實時任務間通信和同步。 支持各種類型的信號量:CNT_SEM,BIN_SEM,RES_SEM以及所有這樣信號量的orred組合。實現互斥信號量、讀寫鎖、遞歸自旋鎖、條件變量、障礙。 支持不同的排隊策略:FIFO_Q,PRIO_Q.資源信號量無論什么情況下都會強制執行PRIO_Q策略。
Shared Memory RTAI都有一個特定的模塊,允許整體對稱分配和共享內存inter/ intra-kernel /user space。以下任何一對之間共享內存都是可能的:RTAI本身的任務,linux內核進程,Linux用戶空間進程,LXRT任務。
FIFOs RT FIFO是一種把一個實時任務和一個Linux的進程點對點連接的鏈路。它很像一個Unix管道。實施中雖然允許FIFO可以是雙向的,但在實踐中這基本上沒什么意義。所以,實際使用中FIFO是單向的,方向由程序員指定。 用戶空間進程把RT-FIFO作為字符設備對待,(/dev/rtf0 to /dev/rtf63)。進程打開一個FIFO做讀寫操作,然后使用read()或write()文件描述符來傳輸數據。 需要注意的是,在用戶空間,你通過打開設備時獲得的文件描述符來定位fifo,而在內核空間,你直接通過他們的次設備號定位。所以,你需要把從用戶空間打開設備(/dev/rtfxx,…) 時獲得的文件描述符與你將要在內核空間使用的xx整數 配對。 Rtai fifo只能在只使用實時中斷處理程序的應用程序中使用,所以沒有安裝RTAI調度器。
Mailbox 任務間通訊,需要在創建時候指定初始大小。 可以發送任意大小數據通過任意大小的Mailbox緩沖。(自由、靈活) 允許多個發送或接收者,每個發送或接收者都會根據優先級依次獲得他們請求的服務。
Typed Mailbox 消息廣播:傳遞一個消息給所有等待同意TBX的任務。 緊急信息發送:這些消息不排隊,但是會繞過所有其他已經在TBX里的消息在隊列頭插入。 在創建TBX時,可以設置在運行時能設置PRIORITY/ FIFO喚醒政策的功能。
Messages 任務間通訊,RTAI任務描述符作為消息持有人。發送者和接受者不同優先級時,會存在高優先級搶占現象。 RT_TASK* rt_send (RT_TASK* task, unsigned int msg); 如果接收方任務準備好了接受消息,rt_send立即返回,否則調用者阻塞。 RT_TASK* rt_receive (RT_TASK* task, unsigned int *msg); 如果task == 0,調用者接受來自任何任務的消息,如果有在等待的消息,rt_receive 立刻返回.。否則調用者將被阻塞。 注意: 由于所有的消息函數返回的是任務地址,0xffff可能看起來像是不恰當的返回值。然而在所有RTAI 運行的cpu上,0xffff都不是一個可以被RTAI任務使用的地址,所以它總是安全的。 如果希望不阻塞,可以使用rt_send_if和rt_receive_if。
POSIX Message Queue 添加進RTAI來支持標準POSIX Message Queue
新聞熱點
疑難解答