7.69. V4L2 open()¶
7.69.1. 名稱¶
v4l2-open - 開啟一個V4L2裝置
7.69.2. 概要¶
#include <fcntl.h>
-
int open(const char *device_name, int flags)¶
7.69.3. 引數¶
device_name要開啟的裝置。
flags開啟標誌。訪問模式必須是
O_RDWR。這只是一個技術細節,輸入裝置仍然只支援讀取,輸出裝置只支援寫入。當給定
O_NONBLOCK標誌時,如果驅動程式沒有資料可用或驅動程式傳出佇列中沒有緩衝區,則read()函式和 VIDIOC_DQBUF ioctl 將返回EAGAIN錯誤程式碼,否則這些函式將阻塞,直到資料可用。所有與應用程式交換資料的 V4L2 驅動程式都必須支援O_NONBLOCK標誌。其他標誌無效。
7.69.4. 描述¶
要開啟一個V4L2裝置,應用程式使用所需的裝置名稱呼叫 open()。此函式沒有副作用;所有資料格式引數、當前輸入或輸出、控制值或其他屬性保持不變。在載入驅動程式後的第一次 open() 呼叫時,它們將被重置為預設值,驅動程式永遠不會處於未定義狀態。
7.69.5. 返回值¶
成功時,open() 返回新的檔案描述符。出錯時返回 -1,並適當設定 errno 變數。可能的錯誤程式碼有
- EACCES
呼叫者無權訪問該裝置。
- EBUSY
驅動程式不支援多重開啟,並且裝置已在使用中。
- ENODEV
未找到裝置或裝置已被移除。
- ENOMEM
沒有足夠的核心記憶體來完成請求。
- EMFILE
該程序已經打開了最大數量的檔案。
- ENFILE
系統上開啟的檔案總數的限制已達到。