Mauro Carvalho Chehab | 059b1c5 | 2020-08-26 09:03:09 +0200 | [diff] [blame] | 1 | .. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later |
Mauro Carvalho Chehab | 407e84c | 2020-09-24 14:04:26 +0200 | [diff] [blame^] | 2 | .. c:namespace:: V4L |
Mauro Carvalho Chehab | 54f38fc | 2020-03-04 10:21:39 +0100 | [diff] [blame] | 3 | |
| 4 | .. _func-write: |
| 5 | |
| 6 | ************ |
| 7 | V4L2 write() |
| 8 | ************ |
| 9 | |
| 10 | Name |
| 11 | ==== |
| 12 | |
| 13 | v4l2-write - Write to a V4L2 device |
| 14 | |
Mauro Carvalho Chehab | 54f38fc | 2020-03-04 10:21:39 +0100 | [diff] [blame] | 15 | Synopsis |
| 16 | ======== |
| 17 | |
| 18 | .. code-block:: c |
| 19 | |
| 20 | #include <unistd.h> |
| 21 | |
Mauro Carvalho Chehab | 54f38fc | 2020-03-04 10:21:39 +0100 | [diff] [blame] | 22 | .. c:function:: ssize_t write( int fd, void *buf, size_t count ) |
Mauro Carvalho Chehab | 54f38fc | 2020-03-04 10:21:39 +0100 | [diff] [blame] | 23 | |
| 24 | Arguments |
| 25 | ========= |
| 26 | |
| 27 | ``fd`` |
Mauro Carvalho Chehab | 407e84c | 2020-09-24 14:04:26 +0200 | [diff] [blame^] | 28 | File descriptor returned by :c:func:`open()`. |
Mauro Carvalho Chehab | 54f38fc | 2020-03-04 10:21:39 +0100 | [diff] [blame] | 29 | |
| 30 | ``buf`` |
| 31 | Buffer with data to be written |
| 32 | |
| 33 | ``count`` |
| 34 | Number of bytes at the buffer |
| 35 | |
| 36 | Description |
| 37 | =========== |
| 38 | |
Mauro Carvalho Chehab | 407e84c | 2020-09-24 14:04:26 +0200 | [diff] [blame^] | 39 | :c:func:`write()` writes up to ``count`` bytes to the device |
Mauro Carvalho Chehab | 54f38fc | 2020-03-04 10:21:39 +0100 | [diff] [blame] | 40 | referenced by the file descriptor ``fd`` from the buffer starting at |
| 41 | ``buf``. When the hardware outputs are not active yet, this function |
Mauro Carvalho Chehab | 407e84c | 2020-09-24 14:04:26 +0200 | [diff] [blame^] | 42 | enables them. When ``count`` is zero, :c:func:`write()` returns 0 |
Mauro Carvalho Chehab | 54f38fc | 2020-03-04 10:21:39 +0100 | [diff] [blame] | 43 | without any other effect. |
| 44 | |
| 45 | When the application does not provide more data in time, the previous |
| 46 | video frame, raw VBI image, sliced VPS or WSS data is displayed again. |
| 47 | Sliced Teletext or Closed Caption data is not repeated, the driver |
| 48 | inserts a blank line instead. |
| 49 | |
Mauro Carvalho Chehab | 54f38fc | 2020-03-04 10:21:39 +0100 | [diff] [blame] | 50 | Return Value |
| 51 | ============ |
| 52 | |
| 53 | On success, the number of bytes written are returned. Zero indicates |
| 54 | nothing was written. On error, -1 is returned, and the ``errno`` |
| 55 | variable is set appropriately. In this case the next write will start at |
| 56 | the beginning of a new frame. Possible error codes are: |
| 57 | |
| 58 | EAGAIN |
| 59 | Non-blocking I/O has been selected using the |
| 60 | :ref:`O_NONBLOCK <func-open>` flag and no buffer space was |
| 61 | available to write the data immediately. |
| 62 | |
| 63 | EBADF |
| 64 | ``fd`` is not a valid file descriptor or is not open for writing. |
| 65 | |
| 66 | EBUSY |
| 67 | The driver does not support multiple write streams and the device is |
| 68 | already in use. |
| 69 | |
| 70 | EFAULT |
| 71 | ``buf`` references an inaccessible memory area. |
| 72 | |
| 73 | EINTR |
| 74 | The call was interrupted by a signal before any data was written. |
| 75 | |
| 76 | EIO |
| 77 | I/O error. This indicates some hardware problem. |
| 78 | |
| 79 | EINVAL |
Mauro Carvalho Chehab | 407e84c | 2020-09-24 14:04:26 +0200 | [diff] [blame^] | 80 | The :c:func:`write()` function is not supported by this driver, |
Mauro Carvalho Chehab | 54f38fc | 2020-03-04 10:21:39 +0100 | [diff] [blame] | 81 | not on this device, or generally not on this type of device. |