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 all files named "*.conf" as further configu-
		ration 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	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'', 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) filesys-
		   tem.
     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 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!";
     };

     #
     # 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	9.2		       February	22, 2013		   FreeBSD 9.2

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+10.0-RELEASE>

home | help