122 lines
		
	
	
	
		
			3.5 KiB
			
		
	
	
	
		
			XML
		
	
	
	
	
	
		
		
			
		
	
	
			122 lines
		
	
	
	
		
			3.5 KiB
			
		
	
	
	
		
			XML
		
	
	
	
	
	
| 
								 | 
							
								<refentry id="func-open">
							 | 
						||
| 
								 | 
							
								  <refmeta>
							 | 
						||
| 
								 | 
							
								    <refentrytitle>V4L2 open()</refentrytitle>
							 | 
						||
| 
								 | 
							
								    &manvol;
							 | 
						||
| 
								 | 
							
								  </refmeta>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  <refnamediv>
							 | 
						||
| 
								 | 
							
								    <refname>v4l2-open</refname>
							 | 
						||
| 
								 | 
							
								    <refpurpose>Open a V4L2 device</refpurpose>
							 | 
						||
| 
								 | 
							
								  </refnamediv>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  <refsynopsisdiv>
							 | 
						||
| 
								 | 
							
								    <funcsynopsis>
							 | 
						||
| 
								 | 
							
								      <funcsynopsisinfo>#include <fcntl.h></funcsynopsisinfo>
							 | 
						||
| 
								 | 
							
								      <funcprototype>
							 | 
						||
| 
								 | 
							
									<funcdef>int <function>open</function></funcdef>
							 | 
						||
| 
								 | 
							
									<paramdef>const char *<parameter>device_name</parameter></paramdef>
							 | 
						||
| 
								 | 
							
									<paramdef>int <parameter>flags</parameter></paramdef>
							 | 
						||
| 
								 | 
							
								      </funcprototype>
							 | 
						||
| 
								 | 
							
								    </funcsynopsis>
							 | 
						||
| 
								 | 
							
								  </refsynopsisdiv>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  <refsect1>
							 | 
						||
| 
								 | 
							
								    <title>Arguments</title>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    <variablelist>
							 | 
						||
| 
								 | 
							
								      <varlistentry>
							 | 
						||
| 
								 | 
							
									<term><parameter>device_name</parameter></term>
							 | 
						||
| 
								 | 
							
									<listitem>
							 | 
						||
| 
								 | 
							
									  <para>Device to be opened.</para>
							 | 
						||
| 
								 | 
							
									</listitem>
							 | 
						||
| 
								 | 
							
								      </varlistentry>
							 | 
						||
| 
								 | 
							
								      <varlistentry>
							 | 
						||
| 
								 | 
							
									<term><parameter>flags</parameter></term>
							 | 
						||
| 
								 | 
							
									<listitem>
							 | 
						||
| 
								 | 
							
									  <para>Open flags. Access mode must be
							 | 
						||
| 
								 | 
							
								<constant>O_RDWR</constant>. This is just a technicality, input devices
							 | 
						||
| 
								 | 
							
								still support only reading and output devices only writing.</para>
							 | 
						||
| 
								 | 
							
									  <para>When the <constant>O_NONBLOCK</constant> flag is
							 | 
						||
| 
								 | 
							
								given, the read() function and the &VIDIOC-DQBUF; ioctl will return
							 | 
						||
| 
								 | 
							
								the &EAGAIN; when no data is available or no buffer is in the driver
							 | 
						||
| 
								 | 
							
								outgoing queue, otherwise these functions block until data becomes
							 | 
						||
| 
								 | 
							
								available. All V4L2 drivers exchanging data with applications must
							 | 
						||
| 
								 | 
							
								support the <constant>O_NONBLOCK</constant> flag.</para>
							 | 
						||
| 
								 | 
							
									  <para>Other flags have no effect.</para>
							 | 
						||
| 
								 | 
							
									</listitem>
							 | 
						||
| 
								 | 
							
								      </varlistentry>
							 | 
						||
| 
								 | 
							
								    </variablelist>
							 | 
						||
| 
								 | 
							
								  </refsect1>
							 | 
						||
| 
								 | 
							
								  <refsect1>
							 | 
						||
| 
								 | 
							
								    <title>Description</title>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    <para>To open a V4L2 device applications call
							 | 
						||
| 
								 | 
							
								<function>open()</function> with the desired device name. This
							 | 
						||
| 
								 | 
							
								function has no side effects; all data format parameters, current
							 | 
						||
| 
								 | 
							
								input or output, control values or other properties remain unchanged.
							 | 
						||
| 
								 | 
							
								At the first <function>open()</function> call after loading the driver
							 | 
						||
| 
								 | 
							
								they will be reset to default values, drivers are never in an
							 | 
						||
| 
								 | 
							
								undefined state.</para>
							 | 
						||
| 
								 | 
							
								  </refsect1>
							 | 
						||
| 
								 | 
							
								  <refsect1>
							 | 
						||
| 
								 | 
							
								    <title>Return Value</title>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    <para>On success <function>open</function> returns the new file
							 | 
						||
| 
								 | 
							
								descriptor. On error -1 is returned, and the <varname>errno</varname>
							 | 
						||
| 
								 | 
							
								variable is set appropriately. Possible error codes are:</para>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    <variablelist>
							 | 
						||
| 
								 | 
							
								      <varlistentry>
							 | 
						||
| 
								 | 
							
									<term><errorcode>EACCES</errorcode></term>
							 | 
						||
| 
								 | 
							
									<listitem>
							 | 
						||
| 
								 | 
							
									  <para>The caller has no permission to access the
							 | 
						||
| 
								 | 
							
								device.</para>
							 | 
						||
| 
								 | 
							
									</listitem>
							 | 
						||
| 
								 | 
							
								      </varlistentry>
							 | 
						||
| 
								 | 
							
								      <varlistentry>
							 | 
						||
| 
								 | 
							
									<term><errorcode>EBUSY</errorcode></term>
							 | 
						||
| 
								 | 
							
									<listitem>
							 | 
						||
| 
								 | 
							
									  <para>The driver does not support multiple opens and the
							 | 
						||
| 
								 | 
							
								device is already in use.</para>
							 | 
						||
| 
								 | 
							
									</listitem>
							 | 
						||
| 
								 | 
							
								      </varlistentry>
							 | 
						||
| 
								 | 
							
								      <varlistentry>
							 | 
						||
| 
								 | 
							
									<term><errorcode>ENXIO</errorcode></term>
							 | 
						||
| 
								 | 
							
									<listitem>
							 | 
						||
| 
								 | 
							
									  <para>No device corresponding to this device special file
							 | 
						||
| 
								 | 
							
								exists.</para>
							 | 
						||
| 
								 | 
							
									</listitem>
							 | 
						||
| 
								 | 
							
								      </varlistentry>
							 | 
						||
| 
								 | 
							
								      <varlistentry>
							 | 
						||
| 
								 | 
							
									<term><errorcode>ENOMEM</errorcode></term>
							 | 
						||
| 
								 | 
							
									<listitem>
							 | 
						||
| 
								 | 
							
									  <para>Not enough kernel memory was available to complete the
							 | 
						||
| 
								 | 
							
								request.</para>
							 | 
						||
| 
								 | 
							
									</listitem>
							 | 
						||
| 
								 | 
							
								      </varlistentry>
							 | 
						||
| 
								 | 
							
								      <varlistentry>
							 | 
						||
| 
								 | 
							
									<term><errorcode>EMFILE</errorcode></term>
							 | 
						||
| 
								 | 
							
									<listitem>
							 | 
						||
| 
								 | 
							
									  <para>The  process  already  has  the  maximum number of
							 | 
						||
| 
								 | 
							
								files open.</para>
							 | 
						||
| 
								 | 
							
									</listitem>
							 | 
						||
| 
								 | 
							
								      </varlistentry>
							 | 
						||
| 
								 | 
							
								      <varlistentry>
							 | 
						||
| 
								 | 
							
									<term><errorcode>ENFILE</errorcode></term>
							 | 
						||
| 
								 | 
							
									<listitem>
							 | 
						||
| 
								 | 
							
									  <para>The limit on the total number of files open on the
							 | 
						||
| 
								 | 
							
								system has been reached.</para>
							 | 
						||
| 
								 | 
							
									</listitem>
							 | 
						||
| 
								 | 
							
								      </varlistentry>
							 | 
						||
| 
								 | 
							
								    </variablelist>
							 | 
						||
| 
								 | 
							
								  </refsect1>
							 | 
						||
| 
								 | 
							
								</refentry>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<!--
							 | 
						||
| 
								 | 
							
								Local Variables:
							 | 
						||
| 
								 | 
							
								mode: sgml
							 | 
						||
| 
								 | 
							
								sgml-parent-document: "v4l2.sgml"
							 | 
						||
| 
								 | 
							
								indent-tabs-mode: nil
							 | 
						||
| 
								 | 
							
								End:
							 | 
						||
| 
								 | 
							
								-->
							 |