RapidIO 子系統通道化訊息字元裝置驅動程式 (rio_cm.c)¶
1. 概述¶
此裝置驅動程式是 RapidIO.org 軟體任務組 (STG) 中德州儀器、Prodrive Technologies、諾基亞網路、BAE 和 IDT 之間合作的結果。RapidIO.org 的其他成員也提供了額外的意見。
目標是建立一個字元模式驅動程式介面,該介面將 RapidIO 端點裝置(mport)的訊息傳遞功能直接暴露給應用程式,以便允許眾多且不同的 RapidIO 實現進行互操作。
此驅動程式 (RIO_CM) 向用戶空間應用程式提供對 RapidIO 郵箱訊息傳遞資源的共享訪問。
RapidIO 規範(第 2 部分)定義了端點裝置最多可以有四個訊息傳遞郵箱(如果是多包訊息,最大為 4KB),如果使用單包訊息(最大為 256 B),則最多可以有 64 個郵箱。除了協議定義的限制之外,特定的硬體實現可以減少訊息傳遞郵箱的數量。因此,RapidIO 感知應用程式必須共享 RapidIO 端點的訊息傳遞資源。
此裝置驅動程式的主要目的是透過使用單個訊息傳遞郵箱引入類似套接字的操作,從而為大量使用者空間程序提供 RapidIO 郵箱訊息傳遞能力。這允許應用程式有效地使用有限的 RapidIO 訊息傳遞硬體資源。
大多數裝置驅動程式的操作都透過“ioctl”系統呼叫來支援。
載入後,此裝置驅動程式會在 /dev 目錄中建立一個名為 rio_cm 的單個檔案系統節點,該節點對於所有已註冊的 RapidIO mport 裝置是通用的。
以下 ioctl 命令可供使用者空間應用程式使用
- RIO_CM_MPORT_GET_LIST
將支援訊息傳遞操作的本地 mport 裝置列表返回給呼叫者(條目數最多為 RIO_MAX_MPORTS)。每個列表條目都是系統中 mport 的索引和分配給該埠的 RapidIO 目標 ID 的組合。
- RIO_CM_EP_GET_LIST_SIZE
返回與指定 mport 裝置關聯的 RapidIO 網路中具有訊息傳遞功能的遠端端點的數量。
- RIO_CM_EP_GET_LIST
返回與指定 mport 裝置關聯的 RapidIO 網路中可用的具有訊息傳遞功能的遠端端點(對等端)的 RapidIO 目標 ID 列表。
- RIO_CM_CHAN_CREATE
建立 RapidIO 訊息交換通道資料結構,通道 ID 會自動分配或根據呼叫者的請求分配。
- RIO_CM_CHAN_BIND
將指定的通道資料結構繫結到指定的 mport 裝置。
- RIO_CM_CHAN_LISTEN
允許偵聽指定通道上的連線請求。
- RIO_CM_CHAN_ACCEPT
接受來自指定通道上的對等端的連線請求。如果呼叫者指定了此請求的等待超時,則這是一個阻塞呼叫。如果超時設定為 0,則這是一個非阻塞呼叫 - ioctl 處理程式檢查是否有掛起的連線請求,如果沒有可用的連線請求,則立即以 -EGAIN 錯誤狀態退出。
- RIO_CM_CHAN_CONNECT
將連線請求傳送到遠端對等端/通道。
- RIO_CM_CHAN_SEND
透過指定的通道傳送資料訊息。此請求的處理程式假定呼叫者指定的訊息緩衝區包含此驅動程式所需的包頭保留空間。
- RIO_CM_CHAN_RECEIVE
透過連線的通道接收資料訊息。如果通道沒有準備好返回的傳入訊息,則此 ioctl 處理程式將等待新訊息,直到呼叫者指定的超時到期。如果超時值設定為 0,則 ioctl 處理程式將使用 MAX_SCHEDULE_TIMEOUT 定義的預設值。
- RIO_CM_CHAN_CLOSE
關閉指定的通道並釋放關聯的緩衝區。如果指定的通道處於 CONNECTED 狀態,則將關閉通知傳送給遠端對等端。
供使用者空間應用程式使用的 ioctl 命令程式碼和相應的資料結構在“include/uapi/linux/rio_cm_cdev.h”中定義。
2. 硬體相容性¶
此裝置驅動程式使用核心 RapidIO 子系統定義的標準介面,因此它可以與 RapidIO 子系統註冊的任何 mport 裝置驅動程式一起使用,但會受到訊息傳遞郵箱的可用 mport HW 實現設定的限制。
3. 模組引數¶
- “dbg_level”
此引數允許控制此裝置驅動程式生成的除錯資訊的數量。此引數由對應於特定功能塊的一組位掩碼組成。有關掩碼定義,請參見“drivers/rapidio/devices/rio_cm.c”。此引數可以動態更改。使用 CONFIG_RAPIDIO_DEBUG=y 在頂層啟用除錯輸出。
- “cmbox”
要使用的 RapidIO 郵箱編號(預設值為 1)。此引數允許設定將在整個 RapidIO 網路中使用的訊息傳遞郵箱編號。當預設郵箱被其他裝置驅動程式使用或某些 RapidIO 網路節點不支援時,可以使用此引數。
- “chstart”
動態分配的起始通道編號。預設值 - 256。允許從動態分配中排除低於此引數的通道編號,以避免與使用保留的預定義通道編號的軟體元件發生衝突。
4. 已知問題¶
無。
5. 使用者空間應用程式和 API 庫¶
使用此裝置驅動程式的訊息傳遞 API 庫和應用程式可從 RapidIO.org 獲得。
6. TODO 列表¶
新增對系統通知訊息的支援(保留通道 0)。