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 con-
     tain 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) asso-
     ciated 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 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 avaiable throughout the rest of
		the configuration file.	 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	regu-
		lar 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'', ``ATM'', and ``CARP''.

     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	avaiable 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	avaiable 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.
     cisproduct	   CIS-product.
     cisvendor	   CIS-vendor.
     class	   Device class.
     device	   Device ID.
     device-name   Name	of attached/detached device.
     function	   Card	functions.
     manufacturer  Manufacturer	ID (pccard).
     notify	   Match the value of the ``notify'' variable.
     product	   Product ID (pccard).
     serial	   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).
	    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.

     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 configura-
     tion 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!";
     };

     #
     # 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
     devd(8)

FreeBSD	10.1		       October 25, 2006			  FreeBSD 10.1

NAME | DESCRIPTION | FILES | EXAMPLES | SEE ALSO

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

home | help