<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 <filename>videodev2.h</filename> 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 <filename>videodev2.h</filename> 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:
-->
