5.13. ioctl MEDIA_REQUEST_IOC_QUEUE¶
5.13.1. 名稱¶
MEDIA_REQUEST_IOC_QUEUE - 將請求排隊
5.13.2. 概要¶
-
MEDIA_REQUEST_IOC_QUEUE¶
int ioctl(int request_fd, MEDIA_REQUEST_IOC_QUEUE)
5.13.3. 引數¶
request_fdioctl MEDIA_IOC_REQUEST_ALLOC 返回的檔案描述符。
5.13.4. 描述¶
如果媒體裝置支援 請求,則可以使用此請求 ioctl 來排隊先前分配的請求。
如果請求已成功排隊,則可以 輪詢 檔案描述符以等待請求完成。
如果請求之前已排隊,則返回 EBUSY。如果請求的內容包含無效或不一致的資料,則可能會返回其他錯誤,請參見下一節,獲取常見錯誤程式碼的列表。發生錯誤時,請求和驅動程式狀態均保持不變。
一旦請求被排隊,驅動程式必須優雅地處理當請求應用於硬體時發生的錯誤。例外情況是 EIO 錯誤,該錯誤表示一個致命錯誤,要求應用程式停止流傳輸以重置硬體狀態。
不允許將排隊請求與直接排隊緩衝區(沒有請求)混合使用。如果第一個緩衝區是直接排隊的,而您接下來嘗試排隊請求,或者反之亦然,則將返回 EBUSY。
請求必須至少包含一個緩衝區,否則此 ioctl 將返回 ENOENT 錯誤。
5.13.5. 返回值¶
成功時返回 0,出錯時返回 -1,並適當地設定 errno 變數。通用錯誤程式碼在 通用錯誤程式碼 章節中描述。
- EBUSY
請求已排隊,或者應用程式直接排隊了第一個緩衝區,但後來嘗試使用請求。不允許混合使用兩個 API。
- ENOENT
請求不包含任何緩衝區。所有請求都需要至少一個緩衝區。如果在請求中缺少某些必需的配置,也可能會返回此錯誤。
- ENOMEM
為該請求分配內部資料結構時記憶體不足。
- EINVAL
請求具有無效資料。
- EIO
硬體處於錯誤狀態。要恢復,應用程式需要停止流傳輸以重置硬體狀態,然後嘗試重新啟動流傳輸。