summaryrefslogtreecommitdiff
blob: fd1e0352e5ba8b5f389a0c820f618baee0c580c8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
# Refer to devd.conf(5) and devd(8) man pages for the details on how to
# run and configure devd.
#

# NB: All regular expressions have an implicit ^$ around them.
# NB: device-name is shorthand for 'match device-name'

options {
	# Each directory directive adds a directory the list of directories
	# that we scan for files.  Files are read-in in the order that they
	# are returned from readdir(3).  The rule-sets are combined to
	# create a DFA that's used to match events to actions.
	directory "/etc/devd";
	directory "/usr/local/etc/devd";
	pid-file "/var/run/devd.pid";

	# Setup some shorthand for regex that we use later in the file.
	#XXX Yes, these are gross -- imp
	set scsi-controller-regex
		"(aac|adv|adw|aha|ahb|ahc|ahd|aic|amd|amr|asr|bt|ciss|ct|dpt|\
		esp|ida|iir|ips|isp|mlx|mly|mpt|ncr|ncv|nsp|stg|sym|trm|wds)\
		[0-9]+";
};

# Note that the attach/detach with the highest value wins, so that one can
# override these general rules.

#
# For ethernet like devices start configuring the interface.  Due to
# a historical accident, this script is called pccard_ether.
#
attach 0 {
	media-type "ethernet";
	action "/etc/devd_queue add env IN_HOTPLUG=1 /etc/init.d/net.$device-name start";
};

detach 0 {
	media-type "ethernet";
	action "/etc/devd_queue add env IN_HOTPLUG=1 /etc/init.d/net.$device-name stop";
};

#
# Try to start dhclient on Ethernet like interfaces when the link comes
# up.  Only devices that are configured to support DHCP will actually
# run it.  No link down rule exists because dhclient automaticly exits
# when the link goes down.
#
notify 0 {
	match "system"		"IFNET";
	match "type"		"LINK_UP";
	media-type		"ethernet";
	action "/etc/devd_queue add /etc/init.d/net.$subsystem start";
};
notify 0 {
	match "system"		"IFNET";
	match "type"		"LINK_DOWN";
	media-type		"ethernet";
	action "/etc/devd_queue add /etc/init.d/net.$subsystem stop";
};

#
# Like Ethernet devices, but separate because
# they have a different media type.  We may want
# to exploit this later.
#
#detach 0 {
#	media-type "802.11";
#	action "env IN_HOTPLUG=1 /etc/init.d/net.$device-name stop";
#};
#attach 0 {
#	media-type "802.11";
#	action "env IN_HOTPLUG=1 /etc/init.d/net.$device-name start";
#};

# Not sure how to handle this in Gentoo yet
# When a USB Bluetooth dongle appears activate it
#attach 100 {
#	device-name "ubt[0-9]+";
#	action "/etc/rc.d/bluetooth start $device-name";
#};
#detach 100 {
#	device-name "ubt[0-9]+";
#	action "/etc/rc.d/bluetooth stop $device-name";
#};

# When a USB keyboard arrives, attach it as the console keyboard.
attach 100 {
	device-name "ukbd0";
	action "kbdcontrol -k /dev/ukbd0 < /dev/console";
};
detach 100 {
	device-name "ukbd0";
	action "kbdcontrol -k /dev/kbd0 < /dev/console";
};

# The entry below starts and stops moused when a mouse is plugged in.
attach 100 {
	device-name "psm[0-9]+";
	action "/etc/devd_queue add env IN_HOTPLUG=1 /etc/init.d/moused.$device-name start";
};
detach 100 {
	device-name "psm[0-9]+";
	action "/etc/devd_queue add env IN_HOTPLUG=1 /etc/init.d/moused.$device-name stop";
};
attach 100 {
	device-name "ums[0-9]+";
	action "/etc/devd_queue add env IN_HOTPLUG=1 /etc/init.d/moused.$device-name start";
};
detach 100 {
	device-name "ums[0-9]+";
	action "/etc/devd_queue add env IN_HOTPLUG=1 /etc/init.d/moused.$device-name stop";
};

# Notify all users before beginning emergency shutdown when we get
# a _CRT or _HOT thermal event and we're going to power down the system
# very soon.
notify 10 {
	match "system"		"ACPI";
	match "subsystem"	"Thermal";
	match "notify"		"0xcc";
	action "logger -p kern.emerg 'WARNING: system temperature too high, shutting down soon!'";
};

/* EXAMPLES TO END OF FILE


# Examples of notify hooks.  A notify is a generic way for a kernel
# subsystem to send event notification to userland.
#
# Here are some examples of ACPI notify handlers.  ACPI subsystems that
# generate notifies include the AC adapter, power/sleep buttons,
# control method batteries, lid switch, and thermal zones.
#
# Information returned is not always the same as the ACPI notify
# events.  See the ACPI specification for more information about
# notifies.  Here is the information returned for each subsystem:
#
# ACAD:		AC line state (0 is offline, 1 is online)
# Button:	Button pressed (0 for power, 1 for sleep)
# CMBAT:	ACPI battery events
# Lid:		Lid state (0 is closed, 1 is open)
# Thermal:	ACPI thermal zone events
#
# This example calls a script when the AC state changes, passing the
# notify value as the first argument.  If the state is 0x00, it might
# call some sysctls to implement economy mode.  If 0x01, it might set
# the mode to performance.
notify 10 {
	match "system"		"ACPI";
	match "subsystem"	"ACAD";
	action			"/etc/acpi_ac $notify";
};
*/