summaryrefslogtreecommitdiff
path: root/udev.xml
diff options
context:
space:
mode:
authorKay Sievers <kay.sievers@vrfy.org>2008-07-30 00:39:15 +0200
committerKay Sievers <kay.sievers@vrfy.org>2008-07-30 00:39:15 +0200
commit726687ad48bdececed1e7e44387c50e009e28208 (patch)
tree0a0084555d2362e87a8942dd630a72d3ef41d9fc /udev.xml
parentaa5e29a58112aa838be8d04f9e6c994af056f1d1 (diff)
delete all Makefiles and move udev source to udev/
Diffstat (limited to 'udev.xml')
-rw-r--r--udev.xml639
1 files changed, 0 insertions, 639 deletions
diff --git a/udev.xml b/udev.xml
deleted file mode 100644
index c740c0d807..0000000000
--- a/udev.xml
+++ /dev/null
@@ -1,639 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
- "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
-
-<article>
- <section>
- <title>udev</title>
- <refentry>
- <refentryinfo>
- <title>udev</title>
- <date>August 2005</date>
- <productname>udev</productname>
- </refentryinfo>
-
- <refmeta>
- <refentrytitle>udev</refentrytitle>
- <manvolnum>7</manvolnum>
- <refmiscinfo class="version"></refmiscinfo>
- </refmeta>
-
- <refnamediv>
- <refname>udev</refname>
- <refpurpose>dynamic device management</refpurpose>
- </refnamediv>
-
- <refsect1><title>DESCRIPTION</title>
- <para>udev provides a dynamic device directory containing only the files for
- actually present devices. It creates or removes device node files in the
- <filename>/dev</filename> directory, or it renames network interfaces.</para>
-
- <para>Usually udev runs as <citerefentry><refentrytitle>udevd</refentrytitle>
- <manvolnum>8</manvolnum></citerefentry> and receives uevents directly from the
- kernel if a device is added or removed from the system.</para>
-
- <para>If udev receives a device event, it matches its configured rules
- against the available device attributes provided in sysfs to identify the device.
- Rules that match may provide additional device information or specify a device
- node name and multiple symlink names and instruct udev to run additional programs
- as part of the device event handling.</para>
- </refsect1>
-
- <refsect1><title>CONFIGURATION</title>
- <para>udev configuration files are placed in <filename>/etc/udev/</filename>
- and <filename>/lib/udev/</filename>. All empty lines, or lines beginning with
- '#' will be ignored.</para>
-
- <refsect2><title>Configuration file</title>
- <para>udev expects its main configuration file at <filename>/etc/udev/udev.conf</filename>.
- It consists of a set of variables allowing the user to override default udev values.
- The following variables can be set:</para>
- <variablelist>
- <varlistentry>
- <term><option>udev_root</option></term>
- <listitem>
- <para>Specifies where to place the device nodes in the filesystem.
- The default value is <filename>/dev</filename>.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>udev_log</option></term>
- <listitem>
- <para>The logging priority. Valid values are the numerical syslog priorities
- or their textual representations: <option>err</option>, <option>info</option>
- and <option>debug</option>.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
- <refsect2><title>Rules files</title>
- <para>The udev rules are read from the files located in the
- default rules directory <filename>/lib/udev/rules.d/</filename>,
- the custom rules directory <filename>/etc/udev/rules.d/</filename>
- and the temporary rules directory <filename>/dev/.udev/rules.d/</filename>.
- All rule files are sorted and processed in lexical order, regardless
- in which of these directories they live. Every line in the rules file contains at least
- one key value pair. There are two kind of keys, match and assignment keys.
- If all match keys are matching against its value, the rule gets applied and the
- assign keys get the specified value assigned.</para>
-
- <para>A matching rule may specify the name of the device node, add a symlink
- pointing to the node, or run a specified program as part of the event handling.
- If no matching rule is found, the default device node name is used.</para>
-
- <para>A rule may consist of a list of one or more key value pairs separated by
- a comma. Each key has a distinct operation, depending on the used operator. Valid
- operators are:</para>
- <variablelist>
- <varlistentry>
- <term><option>==</option></term>
- <listitem>
- <para>Compare for equality.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>!=</option></term>
- <listitem>
- <para>Compare for non-equality.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>=</option></term>
- <listitem>
- <para>Assign a value to a key. Keys that represent a list, are reset
- and only this single value is assigned.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>+=</option></term>
- <listitem>
- <para>Add the value to a key that holds a list of entries.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>:=</option></term>
- <listitem>
- <para>Assign a value to a key finally; disallow any later changes,
- which may be used to prevent changes by any later rules.</para>
- </listitem>
- </varlistentry>
- </variablelist>
-
- <para>The following key names can be used to match against device properties.
- Some of the keys also match against properties of the parent devices in sysfs,
- not only the device that has generated the event. If multiple keys that match
- a parent device are specified in a single rule, all these keys must match at
- one and the same parent device.</para>
- <variablelist>
- <varlistentry>
- <term><option>ACTION</option></term>
- <listitem>
- <para>Match the name of the event action.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>DEVPATH</option></term>
- <listitem>
- <para>Match the devpath of the event device.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>KERNEL</option></term>
- <listitem>
- <para>Match the name of the event device.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>NAME</option></term>
- <listitem>
- <para>Match the name of the node or network interface. It can
- be used once the NAME key has been set in one of the preceding
- rules.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>SUBSYSTEM</option></term>
- <listitem>
- <para>Match the subsystem of the event device.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>DRIVER</option></term>
- <listitem>
- <para>Match the driver name of the event device. Only set for devices
- which are bound to a driver at the time the event is generated.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>ATTR{<replaceable>filename</replaceable>}</option></term>
- <listitem>
- <para>Match sysfs attribute values of the event device. Up to five
- <option>ATTR</option> keys can be specified per rule. Trailing
- whitespace in the attribute values is ignored, if the specified match
- value does not contain trailing whitespace itself. Depending on the type
- of operator, this key is also used to set the value of a sysfs attribute.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>KERNELS</option></term>
- <listitem>
- <para>Search the devpath upwards for a matching device name.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>SUBSYSTEMS</option></term>
- <listitem>
- <para>Search the devpath upwards for a matching device subsystem name.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>DRIVERS</option></term>
- <listitem>
- <para>Search the devpath upwards for a matching device driver name.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>ATTRS{<replaceable>filename</replaceable>}</option></term>
- <listitem>
- <para>Search the devpath upwards for a device with matching sysfs attribute values.
- Up to five <option>ATTRS</option> keys can be specified per rule, but all of them
- must match on the same device. Trailing whitespace in the attribute values is ignored,
- if the specified match value does not contain trailing whitespace itself.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>ENV{<replaceable>key</replaceable>}</option></term>
- <listitem>
- <para>Match against the value of an environment variable. Up to five <option>ENV</option>
- keys can be specified per rule. Depending on the type of operator, this key is also used
- to export a variable to the environment.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>TEST{<replaceable>octal mode mask</replaceable>}</option></term>
- <listitem>
- <para>Test the existence of a file. An octal mode mask can be specified
- if needed.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>PROGRAM</option></term>
- <listitem>
- <para>Execute external program. The key is true, if the program returns
- with exit code zero. The whole event environment is available to the
- executed program. The program's output printed to stdout, is available in
- the RESULT key.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>RESULT</option></term>
- <listitem>
- <para>Match the returned string of the last PROGRAM call. This key can
- be used in the same or in any later rule after a PROGRAM call.</para>
- </listitem>
- </varlistentry>
- </variablelist>
-
- <para>Most of the fields support a shell style pattern matching. The following
- pattern characters are supported:</para>
- <variablelist>
- <varlistentry>
- <term><option>*</option></term>
- <listitem>
- <para>Matches zero, or any number of characters.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>?</option></term>
- <listitem>
- <para>Matches any single character.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>[]</option></term>
- <listitem>
- <para>Matches any single character specified within the brackets. For
- example, the pattern string 'tty[SR]' would match either 'ttyS' or 'ttyR'.
- Ranges are also supported within this match with the '-' character.
- For example, to match on the range of all digits, the pattern [0-9] would
- be used. If the first character following the '[' is a '!', any characters
- not enclosed are matched.</para>
- </listitem>
- </varlistentry>
- </variablelist>
-
- <para>The following keys can get values assigned:</para>
- <variablelist>
- <varlistentry>
- <term><option>NAME</option></term>
- <listitem>
- <para>The name of the node to be created, or the name the network interface
- should be renamed to. Only one rule can set the node name, all later rules with
- a NAME key will be ignored.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>SYMLINK</option></term>
- <listitem>
- <para>The name of a symlink targeting the node. Every matching rule can add
- this value to the list of symlinks to be created along with the device node.
- Multiple symlinks may be specified by separating the names by the space
- character.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>OWNER, GROUP, MODE</option></term>
- <listitem>
- <para>The permissions for the device node. Every specified value overwrites
- the compiled-in default value.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>ATTR{<replaceable>key</replaceable>}</option></term>
- <listitem>
- <para>The value that should be written to a sysfs attribute of the
- event device. Depending on the type of operator, this key is also
- used to match against the value of a sysfs attribute.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>ENV{<replaceable>key</replaceable>}</option></term>
- <listitem>
- <para>Export a variable to the environment. Depending on the type of operator,
- this key is also to match against an environment variable.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>RUN</option></term>
- <listitem>
- <para>Add a program to the list of programs to be executed for a specific
- device. This can only be used for very short running tasks. Running an
- event process for a long period of time may block all further events for
- this or a dependent device. Long running tasks need to be immediately
- detached from the event process itself.</para>
- <para>If the specifiefd string starts with
- <option>socket:<replaceable>path</replaceable></option>, all current event
- values will be passed to the specified socket, as a message in the same
- format the kernel sends an uevent. If the first character of the specified path
- is an @ character, an abstract namespace socket is used, instead of an existing
- socket file.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>LABEL</option></term>
- <listitem>
- <para>Named label where a GOTO can jump to.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>GOTO</option></term>
- <listitem>
- <para>Jumps to the next LABEL with a matching name</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>IMPORT{<replaceable>type</replaceable>}</option></term>
- <listitem>
- <para>Import a set of variables into the event environment,
- depending on <replaceable>type</replaceable>:</para>
- <variablelist>
- <varlistentry>
- <term><option>program</option></term>
- <listitem>
- <para>Execute an external program specified as the assigned value and
- import its output, which must be in environment key format.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>file</option></term>
- <listitem>
- <para>Import a text file specified as the assigned value, which must be in
- environment key format.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>parent</option></term>
- <listitem>
- <para>Import the stored keys from the parent device by reading
- the database entry of the parent device. The value assigned to
- <option>IMPORT{parent}</option> is used as a filter of key names
- to import (with the same shell-style pattern matching used for
- comparisons).</para>
- </listitem>
- </varlistentry>
- </variablelist>
- <para>If no option is given, udev will choose between <option>program</option>
- and <option>file</option> based on the executable bit of the file
- permissions.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>WAIT_FOR</option></term>
- <listitem>
- <para>Wait for a file to become available.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>OPTIONS</option></term>
- <listitem>
- <para>Rule and device options:</para>
- <variablelist>
- <varlistentry>
- <term><option>last_rule</option></term>
- <listitem>
- <para>Stops further rules application. No later rules will have
- any effect.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>ignore_device</option></term>
- <listitem>
- <para>Ignore this event completely.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>ignore_remove</option></term>
- <listitem>
- <para>Do not remove the device node when the device goes away. This may be
- useful as a workaround for broken device drivers.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>link_priority=<replaceable>value</replaceable></option></term>
- <listitem>
- <para>Specify the priority of the created symlinks. Devices with higher
- priorities overwrite existing symlinks of other devices. The default is 0.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>all_partitions</option></term>
- <listitem>
- <para>Create the device nodes for all available partitions of a block device.
- This may be useful for removable media devices where media changes are not
- detected.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>event_timeout=</option></term>
- <listitem>
- <para>Number of seconds an event will wait for operations to finish, before it
- will terminate itself.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>string_escape=<replaceable>none|replace</replaceable></option></term>
- <listitem>
- <para>Usually control and other possibly unsafe characters are replaced
- in strings used for device naming. The mode of replacement can be specified
- with this option.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </listitem>
- </varlistentry>
- </variablelist>
-
- <para>The <option>NAME</option>, <option>SYMLINK</option>, <option>PROGRAM</option>,
- <option>OWNER</option>, <option>GROUP</option>, <option>MODE</option> and <option>RUN</option>
- fields support simple printf-like string substitutions. The <option>RUN</option>
- format chars gets applied after all rules have been processed, right before the program
- is executed. It allows the use of the complete environment set by earlier matching
- rules. For all other fields, substitutions are applied while the individual rule is
- being processed. The available substitutions are:</para>
- <variablelist>
- <varlistentry>
- <term><option>$kernel</option>, <option>%k</option></term>
- <listitem>
- <para>The kernel name for this device.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>$number</option>, <option>%n</option></term>
- <listitem>
- <para>The kernel number for this device. For example, 'sda3' has
- kernel number of '3'</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>$devpath</option>, <option>%p</option></term>
- <listitem>
- <para>The devpath of the device.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>$id</option>, <option>%b</option></term>
- <listitem>
- <para>The name of the device matched while searching the devpath upwards for
- <option>SUBSYSTEMS</option>, <option>KERNELS</option>, <option>DRIVERS</option> and <option>ATTRS</option>.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>$driver</option></term>
- <listitem>
- <para>The driver name of the device matched while searching the devpath upwards for
- <option>SUBSYSTEMS</option>, <option>KERNELS</option>, <option>DRIVERS</option> and <option>ATTRS</option>.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>$attr{<replaceable>file</replaceable>}</option>, <option>%s{<replaceable>file</replaceable>}</option></term>
- <listitem>
- <para>The value of a sysfs attribute found at the device, where
- all keys of the rule have matched. If the matching device does not have
- such an attribute, follow the chain of parent devices and use the value
- of the first attribute that matches.
- If the attribute is a symlink, the last element of the symlink target is
- returned as the value.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>$env{<replaceable>key</replaceable>}</option>, <option>%E{<replaceable>key</replaceable>}</option></term>
- <listitem>
- <para>The value of an environment variable.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>$major</option>, <option>%M</option></term>
- <listitem>
- <para>The kernel major number for the device.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>$minor</option>, <option>%m</option></term>
- <listitem>
- <para>The kernel minor number for the device.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>$result</option>, <option>%c</option></term>
- <listitem>
- <para>The string returned by the external program requested with PROGRAM.
- A single part of the string, separated by a space character may be selected
- by specifying the part number as an attribute: <option>%c{N}</option>.
- If the number is followed by the '+' char this part plus all remaining parts
- of the result string are substituted: <option>%c{N+}</option></para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>$parent</option>, <option>%P</option></term>
- <listitem>
- <para>The node name of the parent device.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>$name</option></term>
- <listitem>
- <para>The current name of the device node. If not changed by a rule, it is the
- name of the kernel device.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>$links</option></term>
- <listitem>
- <para>The current list of symlinks, separated by a space character. The value is
- only set if an earlier rule assigned a value, or during a remove events.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>$root</option>, <option>%r</option></term>
- <listitem>
- <para>The udev_root value.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>$sys</option>, <option>%S</option></term>
- <listitem>
- <para>The sysfs mount point.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>$tempnode</option>, <option>%N</option></term>
- <listitem>
- <para>The name of a created temporary device node to provide access to
- the device from a external program before the real node is created.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>%%</option></term>
- <listitem>
- <para>The '%' character itself.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>$$</option></term>
- <listitem>
- <para>The '$' character itself.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- <para>The count of characters to be substituted may be limited by specifying
- the format length value. For example, '%3s{file}' will only
- insert the first three characters of the sysfs attribute</para>
- </refsect2>
- </refsect1>
-
- <refsect1><title>AUTHOR</title>
- <para>Written by Greg Kroah-Hartman <email>greg@kroah.com</email> and
- Kay Sievers <email>kay.sievers@vrfy.org</email>. With much help from
- Dan Stekloff and many others.</para>
- </refsect1>
-
- <refsect1>
- <title>SEE ALSO</title>
- <para><citerefentry>
- <refentrytitle>udevd</refentrytitle><manvolnum>8</manvolnum>
- </citerefentry>,
- <citerefentry>
- <refentrytitle>udevadm</refentrytitle><manvolnum>8</manvolnum>
- </citerefentry></para>
- </refsect1>
- </refentry>
- </section>
-</article>