<refentry id="func-ioctl">
  <refmeta>
    <refentrytitle>V4L2 ioctl()</refentrytitle>
    &manvol;
  </refmeta>

  <refnamediv>
    <refname>v4l2-ioctl</refname>
    <refpurpose>Program a V4L2 device</refpurpose>
  </refnamediv>

  <refsynopsisdiv>
    <funcsynopsis>
      <funcsynopsisinfo>#include &lt;sys/ioctl.h&gt;</funcsynopsisinfo>
      <funcprototype>
	<funcdef>int <function>ioctl</function></funcdef>
	<paramdef>int <parameter>fd</parameter></paramdef>
	<paramdef>int <parameter>request</parameter></paramdef>
	<paramdef>void *<parameter>argp</parameter></paramdef>
      </funcprototype>
    </funcsynopsis>
  </refsynopsisdiv>

  <refsect1>
    <title>Arguments</title>

    <variablelist>
      <varlistentry>
	<term><parameter>fd</parameter></term>
	<listitem>
	  <para>&fd;</para>
	</listitem>
      </varlistentry>
      <varlistentry>
	<term><parameter>request</parameter></term>
	<listitem>
	  <para>V4L2 ioctl request code as defined in the <link
linkend="videodev">videodev.h</link> header file, for example
VIDIOC_QUERYCAP.</para>
	</listitem>
      </varlistentry>
      <varlistentry>
	<term><parameter>argp</parameter></term>
	<listitem>
	  <para>Pointer to a function parameter, usually a structure.</para>
	</listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>Description</title>

    <para>The <function>ioctl()</function> function is used to program
V4L2 devices. The argument <parameter>fd</parameter> must be an open
file descriptor. An ioctl <parameter>request</parameter> has encoded
in it whether the argument is an input, output or read/write
parameter, and the size of the argument <parameter>argp</parameter> in
bytes. Macros and defines specifying V4L2 ioctl requests are located
in the <link linkend="videodev">videodev.h</link> header file.
Applications should use their own copy, not include the version in the
kernel sources on the system they compile on. All V4L2 ioctl requests,
their respective function and parameters are specified in <xref
	linkend="user-func" />.</para>
  </refsect1>

  <refsect1>
    <title>Return Value</title>

    <para>On success the <function>ioctl()</function> function returns
<returnvalue>0</returnvalue> and does not reset the
<varname>errno</varname> variable. On failure
<returnvalue>-1</returnvalue> is returned, when the ioctl takes an
output or read/write parameter it remains unmodified, and the
<varname>errno</varname> variable is set appropriately. See below for
possible error codes. Generic errors like <errorcode>EBADF</errorcode>
or <errorcode>EFAULT</errorcode> are not listed in the sections
discussing individual ioctl requests.</para>
    <para>Note ioctls may return undefined error codes. Since errors
may have side effects such as a driver reset applications should
abort on unexpected errors.</para>

    <variablelist>
      <varlistentry>
	<term><errorcode>EBADF</errorcode></term>
	<listitem>
	  <para><parameter>fd</parameter> is not a valid open file
descriptor.</para>
	</listitem>
      </varlistentry>
      <varlistentry>
	<term><errorcode>EBUSY</errorcode></term>
	<listitem>
	  <para>The property cannot be changed right now. Typically
this error code is returned when I/O is in progress or the driver
supports multiple opens and another process locked the property.</para>
	</listitem>
      </varlistentry>
      <varlistentry>
	<term><errorcode>EFAULT</errorcode></term>
	<listitem>
	  <para><parameter>argp</parameter> references an inaccessible
memory area.</para>
	</listitem>
      </varlistentry>
      <varlistentry>
	<term><errorcode>ENOTTY</errorcode></term>
	<listitem>
	  <para><parameter>fd</parameter> is  not  associated  with  a
character special device.</para>
	</listitem>
      </varlistentry>
      <varlistentry>
	<term><errorcode>EINVAL</errorcode></term>
	<listitem>
	  <para>The <parameter>request</parameter> or the data pointed
to by <parameter>argp</parameter> is not valid. This is a very common
error code, see the individual ioctl requests listed in <xref
	      linkend="user-func" /> for actual causes.</para>
	</listitem>
      </varlistentry>
      <varlistentry>
	<term><errorcode>ENOMEM</errorcode></term>
	<listitem>
	  <para>Not enough physical or virtual memory was available to
complete the request.</para>
	</listitem>
      </varlistentry>
      <varlistentry>
	<term><errorcode>ERANGE</errorcode></term>
	<listitem>
	  <para>The application attempted to set a control with the
&VIDIOC-S-CTRL; ioctl to a value which is out of bounds.</para>
	</listitem>
      </varlistentry>
    </variablelist>
  </refsect1>
</refentry>

<!--
Local Variables:
mode: sgml
sgml-parent-document: "v4l2.sgml"
indent-tabs-mode: nil
End:
-->
