blob: 938f33f854550dd4eade94c57bbf06a950aca001 [file] [log] [blame]
Markus Heiser5377d912016-06-30 15:18:56 +02001.. -*- coding: utf-8; mode: rst -*-
2
3.. _func-write:
4
5************
6V4L2 write()
7************
8
Mauro Carvalho Chehab15e7d612016-07-05 15:14:35 -03009Name
Mauro Carvalho Chehab586027c2016-07-05 07:58:48 -030010====
Markus Heiser5377d912016-06-30 15:18:56 +020011
Mauro Carvalho Chehab586027c2016-07-05 07:58:48 -030012v4l2-write - Write to a V4L2 device
Markus Heiser5377d912016-06-30 15:18:56 +020013
Mauro Carvalho Chehab15e7d612016-07-05 15:14:35 -030014
15Synopsis
Markus Heiser5377d912016-06-30 15:18:56 +020016========
17
18.. code-block:: c
19
20 #include <unistd.h>
21
22
Mauro Carvalho Chehab1b81f012016-08-19 12:00:43 -030023.. c:function:: ssize_t write( int fd, void *buf, size_t count )
Mauro Carvalho Chehab41d80462016-08-19 16:53:38 -030024 :name: v4l2-write
Mauro Carvalho Chehab586027c2016-07-05 07:58:48 -030025
Mauro Carvalho Chehab15e7d612016-07-05 15:14:35 -030026Arguments
Markus Heiser5377d912016-06-30 15:18:56 +020027=========
28
29``fd``
30 File descriptor returned by :ref:`open() <func-open>`.
31
32``buf``
Mauro Carvalho Chehab41d80462016-08-19 16:53:38 -030033 Buffer with data to be written
Markus Heiser5377d912016-06-30 15:18:56 +020034
Mauro Carvalho Chehab41d80462016-08-19 16:53:38 -030035``count``
36 Number of bytes at the buffer
Markus Heiser5377d912016-06-30 15:18:56 +020037
Mauro Carvalho Chehab15e7d612016-07-05 15:14:35 -030038Description
Markus Heiser5377d912016-06-30 15:18:56 +020039===========
40
Mauro Carvalho Chehab760c7012016-07-04 12:56:17 -030041:ref:`write() <func-write>` writes up to ``count`` bytes to the device
Markus Heiser5377d912016-06-30 15:18:56 +020042referenced by the file descriptor ``fd`` from the buffer starting at
43``buf``. When the hardware outputs are not active yet, this function
Mauro Carvalho Chehab760c7012016-07-04 12:56:17 -030044enables them. When ``count`` is zero, :ref:`write() <func-write>` returns 0
Markus Heiser5377d912016-06-30 15:18:56 +020045without any other effect.
46
47When the application does not provide more data in time, the previous
48video frame, raw VBI image, sliced VPS or WSS data is displayed again.
49Sliced Teletext or Closed Caption data is not repeated, the driver
50inserts a blank line instead.
51
52
Mauro Carvalho Chehab15e7d612016-07-05 15:14:35 -030053Return Value
Markus Heiser5377d912016-06-30 15:18:56 +020054============
55
56On success, the number of bytes written are returned. Zero indicates
57nothing was written. On error, -1 is returned, and the ``errno``
58variable is set appropriately. In this case the next write will start at
59the beginning of a new frame. Possible error codes are:
60
61EAGAIN
62 Non-blocking I/O has been selected using the
63 :ref:`O_NONBLOCK <func-open>` flag and no buffer space was
64 available to write the data immediately.
65
66EBADF
67 ``fd`` is not a valid file descriptor or is not open for writing.
68
69EBUSY
70 The driver does not support multiple write streams and the device is
71 already in use.
72
73EFAULT
74 ``buf`` references an inaccessible memory area.
75
76EINTR
77 The call was interrupted by a signal before any data was written.
78
79EIO
80 I/O error. This indicates some hardware problem.
81
82EINVAL
Mauro Carvalho Chehab760c7012016-07-04 12:56:17 -030083 The :ref:`write() <func-write>` function is not supported by this driver,
Markus Heiser5377d912016-06-30 15:18:56 +020084 not on this device, or generally not on this type of device.