Skip site navigation (1)Skip section navigation (2)

FreeBSD Man Pages

Man Page or Keyword Search:
Man Architecture
Apropos Keyword Search (all sections) Output format
home | help
DEVD.CONF(5)              FreeBSD File Formats Manual             DEVD.CONF(5)

NAME
     devd.conf - configuration file for devd(8)

DESCRIPTION
   General Syntax
     A devd(8) configuration consists of two general features, statements and
     comments.  All statements end with a semicolon.  Many statements can
     contain substatements, which are also terminated with a semicolon.

     The following statements are supported:

     attach       Specifies various matching criteria and actions to perform
                  when a newly attached device matches said criteria.

     detach       Specifies various matching criteria and actions to perform
                  when a newly detached device matches said criteria.

     nomatch      Specifies various matching criteria and actions to perform
                  when no device driver currently loaded in the kernel claims
                  a (new) device.

     notify       Specifies various matching criteria and actions to perform
                  when the kernel sends an event notification to userland.

     options      Specifies various options and parameters for the operation
                  of devd(8).

     Statements may occur in any order in the configuration file, and may be
     repeated as often as required.  Further details on the syntax and meaning
     of each statement and their substatements are explained below.

     Each statement, except options has a priority (an arbitrary number)
     associated with it, where `0' is defined as the lowest priority.  If two
     statements match the same event, only the action of the statement with
     highest priority will be executed.  In this way generic statements can be
     overridden for devices or notifications that require special attention.

     The general syntax of a statement is:

           statement priority {
                   substatement "value";
                   ...
                   substatement "value";
           };

   Sub-statements
     The following sub-statements are supported within the options statement.

     directory "/some/path";
                    Adds the given directory to the list of directories from
                    which devd(8) will read all files named "*.conf" as
                    further configuration files.  Any number of directory
                    statements can be used.

     pid-file "/var/run/devd.pid";
                    Specifies PID file.

     set regexp-name "(some|regexp)";
                    Creates a regular expression and assigns it to the
                    variable regexp-name.  The variable is available
                    throughout the rest of the configuration file.  If the
                    string begins with `!', it matches if the regular
                    expression formed by the rest of the string does not
                    match.  All regular expressions have an implicit `^$'
                    around them.

     The following sub-statements are supported within the attach and detach
     statements.

     action "command";
                    Command to execute upon a successful match.  Example
                    ``/etc/pccard_ether $device-name start''.

     class "string";
                    This is shorthand for ``match "class" "string"''.

     device-name "string";
                    This is shorthand for ``match "device-name" "string"''.
                    This matches a device named string, which is allowed to be
                    a regular expression or a variable previously created
                    containing a regular expression.  The ``device-name''
                    variable is available for later use with the action
                    statement.

     match "variable" "value";
                    Matches the content of value against variable; the content
                    of value may be a regular expression.  Not required during
                    attach nor detach events since the device-name statement
                    takes care of all device matching.  For a partial list of
                    variables, see below.

     media-type "string";
                    For network devices, media-type will match devices that
                    have the given media type.  Valid media types are:
                    ``Ethernet'', ``Tokenring'', ``FDDI'', ``802.11'', and
                    ``ATM''.

     subdevice "string";
                    This is shorthand for ``match "subdevice" "string"''.

     The following sub-statements are supported within the nomatch statement.

     action "command";
                    Same as above.

     match "variable" "value";
                    Matches the content of value against variable; the content
                    of value may be a regular expression.  For a partial list
                    of variables, see below.

     The following sub-statements are supported within the notify statement.
     The ``notify'' variable is available inside this statement and contains,
     a value, depending on which system and subsystem that delivered the
     event.

     action "command";
                    Command to execute upon a successful match.  Example
                    ``/etc/rc.d/power_profile $notify''.

     match "system | subsystem | type | notify" "value";
                    Any number of match statements can exist within a notify
                    statement; value can be either a fixed string or a regular
                    expression.  Below is a list of available systems,
                    subsystems, and types.

     media-type "string";
                    See above.

   Variables that can be used with the match statement
     A partial list of variables and their possible values that can be used
     together with the match statement.

     Variable          Description
     bus               Device name of parent bus.
     cdev              Device node path if one is created by the devfs(5)
                       filesystem.
     cisproduct        CIS-product.
     cisvendor         CIS-vendor.
     class             Device class.
     device            Device ID.
     devclass          Device Class (USB)
     devsubclass       Device Sub-class (USB)
     device-name       Name of attached/detached device.
     endpoints         Endpoint count (USB)
     function          Card functions.
     interface         Interface ID (USB)
     intclass          Interface Class (USB)
     intprotocol       Interface Protocol  (USB)
     intsubclass       Interface Sub-class (USB)
     manufacturer      Manufacturer ID (pccard).
     mode              Peripheral mode (USB)
     notify            Match the value of the ``notify'' variable.
     parent            Parent device
     port              Hub port number (USB)
     product           Product ID (pccard/USB).
     release           Hardware revision (USB)
     sernum            Serial Number (USB).
     slot              Card slot.
     subvendor         Sub-vendor ID.
     subdevice         Sub-device ID.
     subsystem         Matches a subsystem of a system, see below.
     system            Matches a system type, see below.
     type              Type of notification, see below.
     vendor            Vendor ID.

   Notify matching
     A partial list of systems, subsystems, and types used within the notify
     mechanism.

     System
     ACPI          Events related to the ACPI subsystem.
                   Subsystem
                   ACAD           AC line state ($notify=0x00 is offline, 0x01
                                  is online).
                   Button         Button state ($notify=0x00 is power, 0x01 is
                                  sleep).
                   CMBAT          Battery events.
                   Lid            Lid state ($notify=0x00 is closed, 0x01 is
                                  open).
                   PROCESSOR      Processor state/configuration ($notify=0x81
                                  is a change in available Cx states).
                   Thermal        Thermal zone events.

     IFNET         Events related to the network subsystem.
                   Subsystem
                   interface      The ``subsystem'' is the actual name of the
                                  network interface on which the event took
                                  place.
                                  Type
                                  LINK_UP        Carrier status changed to UP.
                                  LINK_DOWN      Carrier status changed to
                                                 DOWN.
                                  ATTACH         The network interface is
                                                 attached to the system.
                                  DETACH         The network interface is
                                                 detached from the system.

     DEVFS         Events related to the devfs(5) filesystem.
                   Subsystem
                   CDEV
                                  Type
                                  CREATE       The devfs(5) node is created.
                                  DESTROY      The devfs(5) node is destroyed.

     USB           Events related to the USB subsystem.
                   Subsystem
                   DEVICE
                                  Type
                                  ATTACH      USB device is attached to the
                                              system.
                                  DETACH      USB device is detached from the
                                              system.
                   INTERFACE
                                  Type
                                  ATTACH      USB interface is attached to a
                                              device.
                                  DETACH      USB interface is detached from a
                                              device.

     coretemp      Events related to the coretemp(4) device.
                   Subsystem
                   Thermal        Notification that the CPU core has reached
                                  critical temperature.
                                  Type
                                  temperature      String containing the
                                                   temperature of the core
                                                   that has become too hot.

     kern          Events related to the kernel.
                   Subsystem
                   power          Information about the state of the system.
                                  Type
                                  resume      Notification that the system has
                                              woken from the suspended state.

     A link state change to UP on the interface ``fxp0'' would result in the
     following notify event:

           system=IFNET, subsystem=fxp0, type=LINK_UP

     An AC line state change to ``offline'' would result in the following
     event:

           system=ACPI, subsystem=ACAD, notify=0x00

   Comments
     Comments may appear anywhere that whitespace may appear in a
     configuration file.  To appeal to programmers of all kinds, they can be
     written in C, C++, or shell/Perl constructs.

     C-style comments start with the two characters `/*' (slash, star) and end
     with `*/' (star, slash).  Because they are completely delimited with
     these characters, they can be used to comment only a portion of a line or
     to span multiple lines.

     C-style comments cannot be nested.  For example, the following is not
     valid because the entire comment ends with the first `*/':

           /* This is the start of a comment.
              This is still part of the comment.
           /* This is an incorrect attempt at nesting a comment. */
              This is no longer in any comment. */

     C++-style comments start with the two characters `//' (slash, slash) and
     continue to the end of the physical line.  They cannot be continued
     across multiple physical lines; to have one logical comment span multiple
     lines, each line must use the `//' pair.  For example:

           // This is the start of a comment.  The next line
           // is a new comment, even though it is logically
           // part of the previous comment.

FILES
     /etc/devd.conf      The devd(8) configuration file.

EXAMPLES
     #
     # This will catch link down events on the interfaces fxp0 and ath0
     #
     notify 0 {
             match "system"                  "IFNET";
             match "subsystem"               "(fxp0|ath0)";
             match "type"                    "LINK_DOWN";
             action "logger $subsystem is DOWN";
     };

     #
     # Match lid open/close events
     # These can be combined to a single event, by passing the
     # value of $notify to the external script.
     #
     notify 0 {
             match "system"                  "ACPI";
             match "subsystem"               "Lid";
             match "notify"                  "0x00";
             action "logger Lid closed, we can sleep now!";
     };

     notify 0 {
             match "system"                  "ACPI";
             match "subsystem"               "Lid";
             match "notify"                  "0x01";
             action "logger Lid opened, the sleeper must awaken!";
     };

     #
     # Match a USB device type
     #
     notify 0 {
             match "system"                  "USB";
             match "subsystem"               "INTERFACE";
             match "type"                    "ATTACH";
             match "intclass"                "0x0e";
             action "logger USB video device attached";
     };

     #
     # Try to configure ath and wi devices with pccard_ether
     # as they are attached.
     #
     attach 0 {
             device-name "(ath|wi)[0-9]+";
             action "/etc/pccard_ether $device-name start";
     };

     #
     # Stop ath and wi devices as they are detached from
     # the system.
     #
     detach 0 {
             device-name "(ath|wi)[0-9]+";
             action "/etc/pccard_ether $device-name stop";
     };

     The installed /etc/devd.conf has many additional examples.

SEE ALSO
     coretemp(4), devfs(5), re_format(7), devd(8)

FreeBSD 11.0-PRERELEASE        February 22, 2013       FreeBSD 11.0-PRERELEASE

NAME | DESCRIPTION | FILES | EXAMPLES | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=devd.conf&sektion=5&manpath=FreeBSD+10.0-RELEASE>

home | help