summaryrefslogtreecommitdiffstats
path: root/man/systemd.device.xml
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2017-10-26 17:12:44 +0200
committerLennart Poettering <lennart@poettering.net>2017-11-10 19:52:41 +0100
commitdcebc9bae4dcc3e844f01558c6127fc0d8745c8e (patch)
tree449ccb43ec4b8727ad2368c3e7c9bbab254e2640 /man/systemd.device.xml
parenttest: add test case for adding/removing dependencies via udev rules (diff)
downloadsystemd-dcebc9bae4dcc3e844f01558c6127fc0d8745c8e.tar.xz
systemd-dcebc9bae4dcc3e844f01558c6127fc0d8745c8e.zip
core: when a unit template is specified in SYSTEMD_WANTS=, instantiate it with sysfs path
This should make cases like the user's setup in #7109 a lot easier to handle, as in that case we'll do the right escaping automatically.
Diffstat (limited to 'man/systemd.device.xml')
-rw-r--r--man/systemd.device.xml71
1 files changed, 33 insertions, 38 deletions
diff --git a/man/systemd.device.xml b/man/systemd.device.xml
index 6edf1090d0..e121e151bc 100644
--- a/man/systemd.device.xml
+++ b/man/systemd.device.xml
@@ -112,35 +112,36 @@
<refsect1>
<title>The udev Database</title>
- <para>The settings of device units may either be configured via
- unit files, or directly from the udev database (which is
- recommended). The following udev device properties are understood
- by systemd:</para>
+ <para>Unit settings of device units may either be configured via unit files, or directly from the udev
+ database. The following udev device properties are understood by the service manager:</para>
<variablelist class='udev-directives'>
<varlistentry>
<term><varname>SYSTEMD_WANTS=</varname></term>
<term><varname>SYSTEMD_USER_WANTS=</varname></term>
- <listitem><para>Adds dependencies of type
- <varname>Wants</varname> from the device unit to all listed
- units. The first form is used by the system systemd instance,
- the second by user systemd instances. Those settings may be
- used to activate arbitrary units when a specific device
- becomes available.</para>
-
- <para>Note that this and the other tags are not taken into
- account unless the device is tagged with the
- <literal>systemd</literal> string in the udev database,
- because otherwise the device is not exposed as a systemd unit
- (see above).</para>
-
- <para>Note that systemd will only act on
- <varname>Wants</varname> dependencies when a device first
- becomes active. It will not act on them if they are added to
- devices that are already active. Use
- <varname>SYSTEMD_READY=</varname> (see below) to influence on
- which udev event to trigger the dependencies.
- </para></listitem>
+ <listitem><para>Adds dependencies of type <varname>Wants=</varname> from the device unit to the specified
+ units. <varname>SYSTEMD_WANTS=</varname> is read by the system service manager,
+ <varname>SYSTEMD_USER_WANTS=</varname> by user service manager instances. These properties may be used to
+ activate arbitrary units when a specific device becomes available.</para>
+
+ <para>Note that this and the other udev device properties are not taken into account unless the device is
+ tagged with the <literal>systemd</literal> tag in the udev database, because otherwise the device is not
+ exposed as a systemd unit (see above).</para>
+
+ <para>Note that systemd will only act on <varname>Wants=</varname> dependencies when a device first becomes
+ active. It will not act on them if they are added to devices that are already active. Use
+ <varname>SYSTEMD_READY=</varname> (see below) to configure when a udev device shall be considered active, and
+ thus when to trigger the dependencies.</para>
+
+ <!-- Note that we don't document here that we actually apply unit_name_mangle() to all specified names, since
+ that's kinda ugly, and people should instead specify correctly escaped names -->
+
+ <para>The specified property value should be a space-separated list of valid unit names. If a unit template
+ name is specified (that is, a unit name containing an <literal>@</literal> character indicating a unit name to
+ use for multiple instantiation, but with an empty instance name following the <literal>@</literal>), it will be
+ automatically instantiated by the device's <literal>sysfs</literal> path (that is: the path is escaped and
+ inserted as instance name into the template unit name). This is useful in order to instantiate a specific
+ template unit once for each device that appears and matches specific properties.</para></listitem>
</varlistentry>
<varlistentry>
@@ -152,20 +153,14 @@
<varlistentry>
<term><varname>SYSTEMD_READY=</varname></term>
- <listitem><para>If set to 0, systemd will consider this device
- unplugged even if it shows up in the udev tree. If this
- property is unset or set to 1, the device will be considered
- plugged if it is visible in the udev tree. This property has
- no influence on the behavior when a device disappears from the
- udev tree.</para>
-
- <para>This option is useful to support devices that initially
- show up in an uninitialized state in the tree, and for which a
- <literal>changed</literal> event is generated the moment they
- are fully set up. Note that <varname>SYSTEMD_WANTS=</varname>
- (see above) is not acted on as long as
- <varname>SYSTEMD_READY=0</varname> is set for a
- device.</para></listitem>
+ <listitem><para>If set to 0, systemd will consider this device unplugged even if it shows up in the udev
+ tree. If this property is unset or set to 1, the device will be considered plugged if it is visible in the udev
+ tree.</para>
+
+ <para>This option is useful for devices that initially show up in an uninitialized state in the tree, and for
+ which a <literal>changed</literal> event is generated the moment they are fully set up. Note that
+ <varname>SYSTEMD_WANTS=</varname> (see above) is not acted on as long as <varname>SYSTEMD_READY=0</varname> is
+ set for a device.</para></listitem>
</varlistentry>
<varlistentry>