Lưu ý
Mục đích của file này là để độc giả tiếng Việt có thể đọc và hiểu tài liệu nhân kernel dễ dàng hơn, không phải để tạo ra một nhánh tài liệu riêng. Nếu bạn có bất kỳ nhận xét hoặc cập nhật nào cho file này, vui lòng thử cập nhật file tiếng Anh gốc trước. Nếu bạn thấy có sự khác biệt giữa bản dịch và bản gốc, hoặc có vấn đề về bản dịch, vui lòng gửi góp ý hoặc patch cho người dịch của file này, hoặc nhờ người bảo trì và người review tài liệu tiếng Việt giúp đỡ.
- Bản gốc:
- Người dịch:
Google Translate (machine translation)
- Phiên bản gốc:
8541d8f725c6
Cảnh báo
Tài liệu này được dịch tự động bằng máy và chưa được review bởi người dịch. Nội dung có thể không chính xác hoặc khó hiểu ở một số chỗ. Khi có sự khác biệt với bản gốc, bản gốc luôn là chuẩn. Bản dịch chất lượng cao (được review) được đặt trong thư mục vi_VN/.
7.3. ioctl VIDIOC_CREATE_BUFS¶
7.3.1. Tên¶
VIDIOC_CREATE_BUFS - Tạo bộ đệm cho Bộ nhớ được ánh xạ hoặc Con trỏ người dùng hoặc I/O bộ đệm DMA
7.3.2. Tóm tắt¶
-
VIDIOC_CREATE_BUFS¶
ZZ0000ZZ
7.3.3. Đối số¶
- ZZ0001ZZ
Bộ mô tả tệp được trả về bởi ZZ0000ZZ.
- ZZ0001ZZ
Con trỏ tới cấu trúc ZZ0000ZZ.
7.3.4. Sự miêu tả¶
Ioctl này được sử dụng để tạo bộ đệm cho ZZ0000ZZ hoặc I/O ZZ0001ZZ hoặc ZZ0002ZZ. Nó có thể được sử dụng thay thế hoặc bổ sung cho ZZ0003ZZ ioctl, khi kiểm soát chặt chẽ hơn trên bộ đệm là cần thiết. Ioctl này có thể được gọi nhiều lần để tạo bộ đệm có kích thước khác nhau.
Để phân bổ bộ đệm thiết bị, các ứng dụng phải khởi tạo các tập tin liên quan các trường của cấu trúc ZZ0000ZZ. các Trường ZZ0001ZZ phải được đặt thành số lượng bộ đệm được yêu cầu, Trường ZZ0002ZZ chỉ định phương thức I/O được yêu cầu và ZZ0003ZZ mảng phải bằng 0.
Trường ZZ0003ZZ chỉ định định dạng hình ảnh mà bộ đệm phải có có khả năng xử lý. Ứng dụng phải điền vào cấu trúc này ZZ0000ZZ. Thông thường việc này sẽ được thực hiện bằng cách sử dụng ZZ0001ZZ hoặc ZZ0002ZZ ioctls để đảm bảo rằng định dạng được yêu cầu được hỗ trợ bởi trình điều khiển. Dựa vào định dạng của Trường ZZ0004ZZ kích thước bộ đệm được yêu cầu (đối với mặt phẳng đơn) hoặc mặt phẳng kích thước (đối với định dạng nhiều mặt phẳng) sẽ được sử dụng cho bộ đệm được phân bổ. Trình điều khiển có thể trả về lỗi nếu (các) kích thước không được hỗ trợ bởi phần cứng (thường là do chúng quá nhỏ).
Bộ đệm được tạo bởi ioctl này sẽ có kích thước tối thiểu bằng kích thước được xác định bởi trường ZZ0000ZZ (hoặc trường tương ứng các trường cho các loại định dạng khác). Thông thường nếu ZZ0001ZZ trường nhỏ hơn mức tối thiểu được yêu cầu cho định dạng đã cho thì lỗi sẽ được trả về vì trình điều khiển thường không cho phép điều này. Nếu nó lớn hơn thì giá trị sẽ được sử dụng nguyên trạng. Nói cách khác, sự trình điều khiển có thể từ chối kích thước được yêu cầu, nhưng nếu nó được chấp nhận thì trình điều khiển sẽ sử dụng nó không thay đổi.
Khi ioctl được gọi với một con trỏ tới cấu trúc này, trình điều khiển sẽ cố gắng phân bổ số lượng bộ đệm được yêu cầu và lưu trữ số thực tế được phân bổ và chỉ mục bắt đầu trong ZZ0000ZZ và các trường ZZ0001ZZ tương ứng. Khi trả lại ZZ0002ZZ có thể nhỏ hơn hơn số lượng yêu cầu.
-
type v4l2_create_buffers¶
__u32 |
|
The starting buffer index, returned by the driver. |
__u32 |
|
The number of buffers requested or granted. If count == 0, then
ioctl VIDIOC_CREATE_BUFS will set |
__u32 |
|
Applications set this field to |
struct |
|
Filled in by the application, preserved by the driver. |
__u32 |
|
Set by the driver. If 0, then the driver doesn’t support
capabilities. In that case all you know is that the driver is
guaranteed to support If you want to just query the capabilities without making any
other changes, then set |
__u32 |
|
Specifies additional buffer management attributes. See Memory Consistency Flags. |
__u32 |
|
If the V4L2_BUF_CAP_SUPPORTS_MAX_NUM_BUFFERS capability flag is set this field indicates the maximum possible number of buffers for this queue. |
__u32 |
|
A place holder for future extensions. Drivers and applications must set the array to zero. |
7.3.5. Giá trị trả về¶
Khi thành công, trả về 0, lỗi -1 và biến ZZ0001ZZ được đặt một cách thích hợp. Các mã lỗi chung được mô tả tại Chương ZZ0000ZZ.
- ENOMEM
Không có bộ nhớ để phân bổ bộ đệm cho I/O ZZ0000ZZ.
- EINVAL
Loại bộ đệm (trường ZZ0000ZZ), phương thức I/O được yêu cầu (ZZ0001ZZ) hoặc định dạng (trường ZZ0002ZZ) không hợp lệ.