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

  <refnamediv>
    <refname>v4l2-munmap</refname>
    <refpurpose>Unmap device memory</refpurpose>
  </refnamediv>

  <refsynopsisdiv>
    <funcsynopsis>
      <funcsynopsisinfo>
#include &lt;unistd.h&gt;
#include &lt;sys/mman.h&gt;</funcsynopsisinfo>
      <funcprototype>
	<funcdef>int <function>munmap</function></funcdef>
	<paramdef>void *<parameter>start</parameter></paramdef>
	<paramdef>size_t <parameter>length</parameter></paramdef>
      </funcprototype>
    </funcsynopsis>
  </refsynopsisdiv>
  <refsect1>
    <title>Arguments</title>
    <variablelist>
      <varlistentry>
	<term><parameter>start</parameter></term>
	<listitem>
	  <para>Address of the mapped buffer as returned by the
&func-mmap; function.</para>
	</listitem>
      </varlistentry>
      <varlistentry>
	<term><parameter>length</parameter></term>
	<listitem>
	  <para>Length of the mapped buffer. This must be the same
value as given to <function>mmap()</function> and returned by the
driver in the &v4l2-buffer; <structfield>length</structfield>
field for the single-planar API and in the &v4l2-plane;
<structfield>length</structfield> field for the multi-planar API.</para>
	</listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>Description</title>

    <para>Unmaps a previously with the &func-mmap; function mapped
buffer and frees it, if possible. <!-- ? This function (not freeing)
has no impact on I/O in progress, specifically it does not imply
&VIDIOC-STREAMOFF; to terminate I/O. Unmapped buffers can still be
enqueued, dequeued or queried, they are just not accessible by the
application.--></para>
  </refsect1>

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

    <para>On success <function>munmap()</function> returns 0, on
failure -1 and the <varname>errno</varname> variable is set
appropriately:</para>

    <variablelist>
      <varlistentry>
	<term><errorcode>EINVAL</errorcode></term>
	<listitem>
	  <para>The <parameter>start</parameter> or
<parameter>length</parameter> is incorrect, or no buffers have been
mapped yet.</para>
	</listitem>
      </varlistentry>
    </variablelist>
  </refsect1>
</refentry>
