5.6. ioctl MEDIA_IOC_ENUM_ENTITIES

5.6.1. 名稱

MEDIA_IOC_ENUM_ENTITIES - 列舉實體及其屬性

5.6.2. 概要

MEDIA_IOC_ENUM_ENTITIES

int ioctl(int fd, MEDIA_IOC_ENUM_ENTITIES, struct media_entity_desc *argp)

5.6.3. 引數

fd

open() 返回的檔案描述符。

argp

指向 struct media_entity_desc 的指標。

5.6.4. 描述

要查詢實體的屬性,應用程式設定 struct media_entity_desc 結構的 id 欄位,並使用指向此結構的指標呼叫 MEDIA_IOC_ENUM_ENTITIES ioctl。如果 id 無效,驅動程式將填充結構的其餘部分或返回 EINVAL 錯誤程式碼。

可以透過將 id 與 MEDIA_ENT_ID_FLAG_NEXT 標誌進行或運算來列舉實體。驅動程式將返回有關 id 嚴格大於請求的 id 的最小實體(“下一個實體”)的資訊,如果不存在則返回 EINVAL 錯誤程式碼。

實體 ID 可以是不連續的。應用程式不能嘗試透過使用遞增的 id 呼叫 MEDIA_IOC_ENUM_ENTITIES 直到出現錯誤來列舉實體。

type media_entity_desc
struct media_entity_desc

__u32

id

實體 ID,由應用程式設定。當 ID 與 MEDIA_ENT_ID_FLAG_NEXT 進行或運算時,驅動程式清除該標誌並返回具有較大 ID 的第一個實體。不要期望裝置的每個例項的 ID 始終相同。換句話說,不要在應用程式中硬編碼實體 ID。

char

name[32]

實體名稱,作為以 NULL 結尾的 UTF-8 字串。此名稱在媒體拓撲中必須是唯一的。

__u32

type

實體型別,有關詳細資訊,請參見 媒體實體功能

__u32

revision

實體修訂版本。始終為零(已過時)

__u32

flags

實體標誌,有關詳細資訊,請參見 媒體實體標誌

__u32

group_id

實體組 ID。始終為零(已過時)

__u16

pads

pad 的數量

__u16

links

出站連結的總數。此欄位中不計算入站連結。

__u32

reserved[4]

保留用於將來的擴充套件。驅動程式和應用程式必須將陣列設定為零。

union {

(anonymous)

struct

dev

對於建立單個裝置節點(子)裝置有效。

__u32

major

裝置節點主號碼。

__u32

minor

裝置節點次號碼。

__u8

raw[184]

}

5.6.5. 返回值

成功時返回 0,出錯時返回 -1,並適當設定 errno 變數。通用錯誤程式碼在 通用錯誤程式碼 章節中進行了描述。

EINVAL

struct media_entity_desc id 引用了一個不存在的實體。