TI-RTOS---Mailboxes
ti.sysbios.knl.Mailbox郵箱模塊提供了一組管理郵箱的功能。郵箱能夠用于將緩沖區從同一處理器上的一個任務傳遞到另一個任務。
一個郵箱實例可以由多個讀寫器使用
郵箱模塊將緩沖區復制到固定大小的內部緩沖區。這些緩沖區的大小和數量是在創建(或構造)實例時指定的。通過Mailbox_post()發送緩沖區時,將完成復制。通過Mail_pend()檢索緩沖區時發生另一個副本。
Mailbox_create()和Mailbox_delete()被用于創建和刪除mailkoxes。也可以靜態創建郵箱對象。
郵箱可用于確保傳入緩沖區的流量不會超過系統處理這些緩沖區的能力。
郵箱創建時,可以指定內部郵箱緩沖區的數量和每個緩沖區的大小。由于在創建的時候指定了大小,因此與郵箱實例一起發送和接收的所有緩沖區的大小都必須相同。
下面時郵箱的創建和刪除
Mailbox_Handle Mailbox_create(SizeT bufsize,UInt numBufs,Mailbox_Params *params,Error_Block *eb )Void Mailbox_delete(Mailbox_Handle *handle);Mailbox_pend()用于從郵箱讀取緩沖區。如果沒有可用的緩沖區(則郵箱為空),則Mailbox_pend()將阻塞。timeout參數允許任務等待超時的時間,無限期等待(BIOS_WAIT_FOREVER),或者根本是不等待(BIOS_NO_WAIT)。時間單位是system clock ticks。
下面是函數原型:
Mailbox_post()用于將緩沖區投遞到郵箱,,如果沒有可用的緩沖區插槽(即郵箱已滿),則mailbox_post()將阻塞,timeout參數允許任務等待超時的時間,無限期等待(BIOS_WAIT_FOREVER),或者根本是不等待(BIOS_NO_WAIT)。
Bool Mailbox_post(Mailbox_Handle handle,Ptr buf,UInt timeout );郵箱提供配置參數,允許您將事件與郵箱關聯起來。者允許您同時等待一個郵箱消息和另一個事件。Mailbox提供兩個配置參數來支持郵箱readerEvent和readerEventId的讀取器事件。這允許郵箱讀取器使用事件對象等待郵箱消息。Mailbox還為郵箱寫入程序提供了兩個配置參數writerEvent和writerEventId。這允許郵箱writers使用事件對象來等待郵箱中的空間。
請注意,這些事件句柄的名稱可能會引起誤解。readerEvent是郵箱讀取器應該掛起的事件,但是它是由郵箱writer在Mailbox_post()調用中發布的。writerEvent是郵箱寫入程序應等待郵箱未滿時掛起的事件,以便使它能夠成功執行Mailbox_post(),而不會因為郵箱已滿而掛起。但是,每當成功讀取郵箱時,writeEvent由郵箱讀取器發布(即,Mailbox_pend()返回TRUE)
使用事件時,線程調用Event_pend()并等待多個事件。從Evnet_pend()返回時,線程必須調用Mailbox_pend()或Mailbox_post()這取決于它是reader還是writer,超時值為BIOS_NO_WAIT。
調用Mailbox_post()可能會導致在特定情況下重新啟用硬件中斷。
參考文獻:
總結
以上是生活随笔為你收集整理的TI-RTOS---Mailboxes的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++完成淄博烧烤节管理系统
- 下一篇: 什么是Extreme Programmi