5.5. ioctl MEDIA_IOC_G_TOPOLOGY¶
5.5.1. 名稱¶
MEDIA_IOC_G_TOPOLOGY - 列舉圖形拓撲和圖形元素屬性
5.5.2. 概要¶
-
MEDIA_IOC_G_TOPOLOGY¶
int ioctl(int fd, MEDIA_IOC_G_TOPOLOGY, struct media_v2_topology *argp)
5.5.3. 引數¶
fdopen()返回的檔案描述符。argp指向 struct
media_v2_topology的指標。
5.5.4. 描述¶
此 ioctl 的典型用法是呼叫兩次。在第一次呼叫時,應將 struct media_v2_topology 中定義的結構體清零。在返回時,如果沒有發生錯誤,此 ioctl 將返回 topology_version 以及實體、介面、pad 和連結的總數。
在第二次呼叫之前,使用者空間應分配陣列來儲存所需的圖形元素,將指向它們的指標放在 ptr_entities、ptr_interfaces、ptr_links 和/或 ptr_pads 上,並保持其他值不變。
如果 topology_version 保持不變,ioctl 應該用媒體圖形元素填充所需的陣列。
-
型別 media_v2_topology¶
__u64 |
|
媒體圖形拓撲的版本。建立圖形時,此欄位從零開始。每次新增或刪除圖形元素時,此欄位都會遞增。 |
__u32 |
|
圖形中的實體數 |
__u32 |
|
應用程式和驅動程式應將其設定為 0。 |
__u64 |
|
指向將儲存實體陣列的記憶體區域的指標,轉換為 64 位整數。它可以為零。如果為零,ioctl 將不儲存實體。它只會更新 |
__u32 |
|
圖形中的介面數 |
__u32 |
|
應用程式和驅動程式應將其設定為 0。 |
__u64 |
|
指向將儲存介面陣列的記憶體區域的指標,轉換為 64 位整數。它可以為零。如果為零,ioctl 將不儲存介面。它只會更新 |
__u32 |
|
圖形中 pad 的總數 |
__u32 |
|
應用程式和驅動程式應將其設定為 0。 |
__u64 |
|
指向將儲存 pad 陣列的記憶體區域的指標,轉換為 64 位整數。它可以為零。如果為零,ioctl 將不儲存 pad。它只會更新 |
__u32 |
|
圖形中資料和介面連結的總數 |
__u32 |
|
應用程式和驅動程式應將其設定為 0。 |
__u64 |
|
指向將儲存連結陣列的記憶體區域的指標,轉換為 64 位整數。它可以為零。如果為零,ioctl 將不儲存連結。它只會更新 |
-
型別 media_v2_entity¶
__u32 |
|
實體的唯一 ID。不要期望裝置的每個例項的 ID 始終相同。換句話說,不要在應用程式中硬編碼實體 ID。 |
char |
|
實體名稱,作為以 NULL 結尾的 UTF-8 字串。此名稱在媒體拓撲中必須是唯一的。 |
__u32 |
|
實體的主要功能,有關詳細資訊,請參閱 媒體實體函式。 |
__u32 |
|
實體標誌,有關詳細資訊,請參閱 媒體實體標誌。僅當 |
__u32 |
|
保留供將來擴充套件。驅動程式和應用程式必須將此陣列設定為零。 |
-
型別 media_v2_interface¶
__u32 |
|
介面的唯一 ID。不要期望裝置的每個例項的 ID 始終相同。換句話說,不要在應用程式中硬編碼介面 ID。 |
__u32 |
|
介面型別,有關詳細資訊,請參閱 媒體介面型別。 |
__u32 |
|
介面標誌。目前未使用。 |
__u32 |
|
保留供將來擴充套件。驅動程式和應用程式必須將此陣列設定為零。 |
|
僅用於裝置節點介面。有關詳細資訊,請參閱 |
-
型別 media_v2_intf_devnode¶
__u32 |
|
裝置節點主編號。 |
__u32 |
|
裝置節點次編號。 |
-
型別 media_v2_pad¶
__u32 |
|
pad 的唯一 ID。不要期望裝置的每個例項的 ID 始終相同。換句話說,不要在應用程式中硬編碼 pad ID。 |
__u32 |
|
此 pad 所屬的實體的唯一 ID。 |
__u32 |
|
pad 標誌,有關更多詳細資訊,請參閱 媒體 pad 標誌。 |
__u32 |
|
Pad 索引,從 0 開始。僅當 |
__u32 |
|
保留供將來擴充套件。驅動程式和應用程式必須將此陣列設定為零。 |
-
型別 media_v2_link¶
__u32 |
|
連結的唯一 ID。不要期望裝置的每個例項的 ID 始終相同。換句話說,不要在應用程式中硬編碼連結 ID。 |
__u32 |
|
在 pad 到 pad 連結上:源 pad 的唯一 ID。 在介面到實體連結上:介面的唯一 ID。 |
__u32 |
|
在 pad 到 pad 連結上:目標 pad 的唯一 ID。 在介面到實體連結上:實體的唯一 ID。 |
__u32 |
|
連結標誌,有關更多詳細資訊,請參閱 媒體連結標誌。 |
__u32 |
|
保留供將來擴充套件。驅動程式和應用程式必須將此陣列設定為零。 |
5.5.5. 返回值¶
成功時返回 0,發生錯誤時返回 -1,並適當設定 errno 變數。通用錯誤程式碼在 通用錯誤程式碼 章節中描述。
- ENOSPC
當 num_entities、num_interfaces、num_links 或 num_pads 中的一個或多個為非零值且小於圖形中的實際元素數時,將返回此值。如果與上次呼叫此 ioctl 相比,
topology_version發生了更改,則可能會發生這種情況。使用者空間通常應該釋放指標的區域,將結構體元素清零,然後再次呼叫此 ioctl。