-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[media] media: Media device information query
Create the following ioctl and implement it at the media device level to query device information. - MEDIA_IOC_DEVICE_INFO: Query media device information The ioctl and its data structure are defined in the new kernel header linux/media.h available to userspace applications. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Acked-by: Hans Verkuil <hverkuil@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
- Loading branch information
Laurent Pinchart
authored and
Mauro Carvalho Chehab
committed
Mar 22, 2011
1 parent
503c3d8
commit 140d881
Showing
9 changed files
with
526 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
<refentry id="media-func-close"> | ||
<refmeta> | ||
<refentrytitle>media close()</refentrytitle> | ||
&manvol; | ||
</refmeta> | ||
|
||
<refnamediv> | ||
<refname>media-close</refname> | ||
<refpurpose>Close a media device</refpurpose> | ||
</refnamediv> | ||
|
||
<refsynopsisdiv> | ||
<funcsynopsis> | ||
<funcsynopsisinfo>#include <unistd.h></funcsynopsisinfo> | ||
<funcprototype> | ||
<funcdef>int <function>close</function></funcdef> | ||
<paramdef>int <parameter>fd</parameter></paramdef> | ||
</funcprototype> | ||
</funcsynopsis> | ||
</refsynopsisdiv> | ||
|
||
<refsect1> | ||
<title>Arguments</title> | ||
|
||
<variablelist> | ||
<varlistentry> | ||
<term><parameter>fd</parameter></term> | ||
<listitem> | ||
<para>&fd;</para> | ||
</listitem> | ||
</varlistentry> | ||
</variablelist> | ||
</refsect1> | ||
|
||
<refsect1> | ||
<title>Description</title> | ||
|
||
<para>Closes the media device. Resources associated with the file descriptor | ||
are freed. The device configuration remain unchanged.</para> | ||
</refsect1> | ||
|
||
<refsect1> | ||
<title>Return Value</title> | ||
|
||
<para><function>close</function> returns 0 on success. On error, -1 is | ||
returned, and <varname>errno</varname> is set appropriately. Possible error | ||
codes are:</para> | ||
|
||
<variablelist> | ||
<varlistentry> | ||
<term><errorcode>EBADF</errorcode></term> | ||
<listitem> | ||
<para><parameter>fd</parameter> is not a valid open file descriptor. | ||
</para> | ||
</listitem> | ||
</varlistentry> | ||
</variablelist> | ||
</refsect1> | ||
</refentry> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,116 @@ | ||
<refentry id="media-func-ioctl"> | ||
<refmeta> | ||
<refentrytitle>media ioctl()</refentrytitle> | ||
&manvol; | ||
</refmeta> | ||
|
||
<refnamediv> | ||
<refname>media-ioctl</refname> | ||
<refpurpose>Control a media device</refpurpose> | ||
</refnamediv> | ||
|
||
<refsynopsisdiv> | ||
<funcsynopsis> | ||
<funcsynopsisinfo>#include <sys/ioctl.h></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>Media ioctl request code as defined in the media.h header file, | ||
for example MEDIA_IOC_SETUP_LINK.</para> | ||
</listitem> | ||
</varlistentry> | ||
<varlistentry> | ||
<term><parameter>argp</parameter></term> | ||
<listitem> | ||
<para>Pointer to a request-specific structure.</para> | ||
</listitem> | ||
</varlistentry> | ||
</variablelist> | ||
</refsect1> | ||
|
||
<refsect1> | ||
<title>Description</title> | ||
<para>The <function>ioctl()</function> function manipulates media device | ||
parameters. The argument <parameter>fd</parameter> must be an open file | ||
descriptor.</para> | ||
<para>The ioctl <parameter>request</parameter> code specifies the media | ||
function to be called. It 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.</para> | ||
<para>Macros and structures definitions specifying media ioctl requests and | ||
their parameters are located in the media.h header file. All media ioctl | ||
requests, their respective function and parameters are specified in | ||
<xref linkend="media-user-func" />.</para> | ||
</refsect1> | ||
|
||
<refsect1> | ||
<title>Return Value</title> | ||
|
||
<para><function>ioctl()</function> returns <returnvalue>0</returnvalue> on | ||
success. On failure, <returnvalue>-1</returnvalue> is returned, and the | ||
<varname>errno</varname> variable is set appropriately. Generic error codes | ||
are listed below, and request-specific error codes are listed in the | ||
individual requests descriptions.</para> | ||
<para>When an ioctl that takes an output or read/write parameter fails, | ||
the parameter remains unmodified.</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>EFAULT</errorcode></term> | ||
<listitem> | ||
<para><parameter>argp</parameter> references an inaccessible memory | ||
area.</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="media-user-func" /> for actual causes.</para> | ||
</listitem> | ||
</varlistentry> | ||
<varlistentry> | ||
<term><errorcode>ENOMEM</errorcode></term> | ||
<listitem> | ||
<para>Insufficient kernel memory was available to complete the | ||
request.</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> | ||
</variablelist> | ||
</refsect1> | ||
</refentry> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,94 @@ | ||
<refentry id="media-func-open"> | ||
<refmeta> | ||
<refentrytitle>media open()</refentrytitle> | ||
&manvol; | ||
</refmeta> | ||
|
||
<refnamediv> | ||
<refname>media-open</refname> | ||
<refpurpose>Open a media 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 either <constant>O_RDONLY</constant> | ||
or <constant>O_RDWR</constant>. Other flags have no effect.</para> | ||
</listitem> | ||
</varlistentry> | ||
</variablelist> | ||
</refsect1> | ||
<refsect1> | ||
<title>Description</title> | ||
<para>To open a media device applications call <function>open()</function> | ||
with the desired device name. The function has no side effects; the device | ||
configuration remain unchanged.</para> | ||
<para>When the device is opened in read-only mode, attemps to modify its | ||
configuration will result in an error, and <varname>errno</varname> will be | ||
set to <errorcode>EBADF</errorcode>.</para> | ||
</refsect1> | ||
<refsect1> | ||
<title>Return Value</title> | ||
|
||
<para><function>open</function> returns the new file descriptor on success. | ||
On error, -1 is returned, and <varname>errno</varname> is set appropriately. | ||
Possible error codes are:</para> | ||
|
||
<variablelist> | ||
<varlistentry> | ||
<term><errorcode>EACCES</errorcode></term> | ||
<listitem> | ||
<para>The requested access to the file is not allowed.</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 system limit on the total number of open files has been | ||
reached.</para> | ||
</listitem> | ||
</varlistentry> | ||
<varlistentry> | ||
<term><errorcode>ENOMEM</errorcode></term> | ||
<listitem> | ||
<para>Insufficient kernel memory was available.</para> | ||
</listitem> | ||
</varlistentry> | ||
<varlistentry> | ||
<term><errorcode>ENXIO</errorcode></term> | ||
<listitem> | ||
<para>No device corresponding to this device special file exists. | ||
</para> | ||
</listitem> | ||
</varlistentry> | ||
</variablelist> | ||
</refsect1> | ||
</refentry> |
Oops, something went wrong.