xref: /linux/Documentation/userspace-api/media/v4l/vidioc-prepare-buf.rst (revision e5a52fd2b8cdb700b3c07b030e050a49ef3156b9)
1.. Permission is granted to copy, distribute and/or modify this
2.. document under the terms of the GNU Free Documentation License,
3.. Version 1.1 or any later version published by the Free Software
4.. Foundation, with no Invariant Sections, no Front-Cover Texts
5.. and no Back-Cover Texts. A copy of the license is included at
6.. Documentation/userspace-api/media/fdl-appendix.rst.
7..
8.. TODO: replace it to GFDL-1.1-or-later WITH no-invariant-sections
9
10.. _VIDIOC_PREPARE_BUF:
11
12************************
13ioctl VIDIOC_PREPARE_BUF
14************************
15
16Name
17====
18
19VIDIOC_PREPARE_BUF - Prepare a buffer for I/O
20
21
22Synopsis
23========
24
25.. c:function:: int ioctl( int fd, VIDIOC_PREPARE_BUF, struct v4l2_buffer *argp )
26    :name: VIDIOC_PREPARE_BUF
27
28
29Arguments
30=========
31
32``fd``
33    File descriptor returned by :ref:`open() <func-open>`.
34
35``argp``
36    Pointer to struct :c:type:`v4l2_buffer`.
37
38
39Description
40===========
41
42Applications can optionally call the :ref:`VIDIOC_PREPARE_BUF` ioctl to
43pass ownership of the buffer to the driver before actually enqueuing it,
44using the :ref:`VIDIOC_QBUF <VIDIOC_QBUF>` ioctl, and to prepare it for future I/O. Such
45preparations may include cache invalidation or cleaning. Performing them
46in advance saves time during the actual I/O.
47
48The struct :c:type:`v4l2_buffer` structure is specified in
49:ref:`buffer`.
50
51
52Return Value
53============
54
55On success 0 is returned, on error -1 and the ``errno`` variable is set
56appropriately. The generic error codes are described at the
57:ref:`Generic Error Codes <gen-errors>` chapter.
58
59EBUSY
60    File I/O is in progress.
61
62EINVAL
63    The buffer ``type`` is not supported, or the ``index`` is out of
64    bounds, or no buffers have been allocated yet, or the ``userptr`` or
65    ``length`` are invalid.
66