DEVD.CONF(5) | FreeBSD File Formats Manual | DEVD.CONF(5) |
名称
devd.conf — devd(8) のための設定ファイル解説
一般的な構文
devd(8) 設定は、2 つの一般的な機能、ステートメントとコメントから成ります。すべてのステートメントは、セミコロンで終わります。多くのステートメントは、同様にセミコロンで終了するサブステートメントを含むことができます。次のステートメントがサポートされています:
- attach
- 新しくアタッチされたデバイスが前述の基準にマッチするとき、実行する各種のマッチする基準とアクションを指定します。
- detach
- 新しくデタッチされたデバイスが前述の基準にマッチするとき、実行する各種のマッチする基準とアクションを指定します。
- nomatch
- 現在カーネルにロードされるデバイスドライバが (新しい) デバイスを要求しないとき、実行する各種のマッチする基準とアクションを指定します。
- notify
- カーネルがユーザーランドにイベント通知を送信するとき、実行する各種のマッチする基準とアクションを指定します。
- options
- devd(8) の操作のための各種のオプションとパラメータを指定します。
ステートメントは、設定ファイル中にどんな順序でも現れることができ、要求されるたびごとに繰り返すことができます。各ステートメントとそれらのサブステートメントの構文と意味のさらなる詳細は、以下に説明されます。
options を除いて、各ステートメントには、それに関連している優先度 (任意の数値) があり、ここで、‘ 0
’は、最も低い優先度に定義されます。 2 つのステートメントが同じイベントに適合するなら、最も高い優先度のステートメントのアクションのみ実行されます。このような方法で、特別な注意を必要とするデバイスまたは通知のために一般的なステートメントを上書きすることができます。
ステートメントの一般的な構文は、次の通りです:
statement priority { substatement "value"; ... substatement "value"; };
サブステートメント
次のサブステートメントは、 options ステートメントの中でサポートされます。- directory “ /some/path”;
- devd(8) が、更なる設定ファイルとして、"*.conf"と名前が付けられたすべてのファイルを読み込むディレクトリのリストに与えられたディレクトリを追加します。いくつもの directory ステートメントを使用することができます。
- pid-file “ /var/run/devd.pid”;
- PID ファイルを指定します。
- set regexp-name “ (some|regexp)”;
-
正規表現を作成して、それを変数
regexp-name に割り当てます。変数は、設定ファイルの残りの至るところで利用可能です。文字列が‘
!
’で始まり、文字列の残りによって書式化された正規表現がマッチしないなら、マッチします。すべての正規表現には、それらの周りに暗黙の‘^$
’があります。
次のサブステートメントは、 attach と detach ステートメントの中でサポートされています。
- action “ command”;
-
適合が成功したときに実行するコマンド。例“
/etc/pccard_ether $device-name start
” - class “ string”;
-
これは、“
match “
class
”“ string””の省略表現です。 - device-name “string”;
-
これは、“
match “
device-name
”“ string””の省略表現です。これは、 string というデバイスに適合します。それには、以前に作成され正規表現を含む正規表現または変数が許されます。“device-name
”変数は、後の action ステートメントで使用可能です。 - match “ variable”“ value”;
- value の内容が正規表現である variable に対して value の内容を適合させます。 device-name ステートメントがすべてのデバイスの適合を処理するので、 attach でも detach イベントの間でも必要としません。変数の部分的なリストについては、下記を参照してください。
- media-type “ string”;
-
ネットワークデバイスについて、
media-type は、与えられたメディアタイプがあるデバイスに適合します。有効なメディアタイプは、次の通りです: “
Ethernet
”, “Tokenring
”, “FDDI
”, “802.11
”と“ATM
”です。 - subdevice “ string”;
-
これは、“
match “
subdevice
”“ string””の省略表現です。
次のサブステートメントは、 nomatch ステートメントの中でサポートされます。
- action “ command”;
- 上記と同様。
- match “ variable”“ value”;
- value の内容が正規表現である variable に対して value の内容を適合させます。変数の部分的なリストについては、下記を参照してください。
次のサブステートメントは、 notify ステートメントの中でサポートされています。“ notify
”変数は、このステートメント内で利用可能であり、イベントを配信したシステムとサブシステムに依存する値を含んでします。
- action “ command”;
-
適合が成功したときに実行するコマンド。例“
/etc/rc.d/power_profile $notify
” - match “ system | subsystem | type | notify”“ value”;
- いくつもの match ステートメントは、 notify ステートメント内に存在できます。 value は、固定文字列または正規表現のいずれかを指定できます。以下は、利用可能なシステム、サブシステム、とタイプのリストです。
- media-type “ string”;
- 上記参照。
match ステートメントで使用することができる変数
変数の部分的なリストと match ステートメントで使用することができるそれらの利用可能な値。
- 変数
- 説明
-
bus
- 親バスのデバイス名。
-
cdev
- それが、 devfs(5) ファイルシステムによって作成されているなら、デバイスノードのパス。
-
cisproduct
- CIS プロダクト (製品)。
-
cisvendor
- CIS ベンダ。
-
class
- デバイスクラス。
-
device
- デバイス ID。
-
devclass
- デバイスクラス (USB)。
-
devsubclass
- デバイスサブクラス (USB)。
-
device-name
- アタッチ/デタッチするデバイスの名前。
-
endpoints
- エンドポイントカウント (USB)。
-
function
- カード機能。
-
interface
- インタフェース ID (USB)。
-
intclass
- インタフェースクラス (USB)。
-
intprotocol
- インタフェースプロトコル (USB)。
-
intsubclass
- インタフェースサブクラス (USB)。
-
manufacturer
- メーカ ID (PC カード)。
-
mode
- ペリフェラルモード (USB)。
-
notify
-
“
notify
”変数の値に適合します。 -
parent
- 親デバイス。
-
port
- ハブポート番号 (USB)。
-
product
- プロダクト ID (PC カード/USB)。
-
release
- ハードウェアリビジョン (USB)。
-
sernum
- シリアル番号 (USB)。
-
slot
- カードスロット。
-
subvendor
- サブベンダ ID。
-
subdevice
- サブデバイス ID。
-
subsystem
- システムのサブシステムに適合します、下記参照。
-
system
- システムタイプに適合します、下記参照。
-
type
- 通知のタイプ、下記参照。
-
vendor
- ベンダ ID。
通知の適合
notify メカニズムの中で使用されるシステム、サブシステムとタイプの部分的なリストです。
- システム
-
ACPI
-
ACPI サブシステムに関連するイベント。
- サブシステム
-
ACAD
- AC (交流) 線の状態 ($notify=0x00 は、オフライン, 0x01 は、オンライン)。
-
Button
- ボタンの状態 ($notify=0x00 は、電源, 0x01 は、スリープ)。
-
CMBAT
- バッテリのイベント。
-
Lid
- 蓋の状態 ($notify=0x00 は、クローズされている, 0x01 は、オープン)。
-
PROCESSOR
- プロセッサの状態/設定 ($notify=0x81 は、利用可能な Cx 状態に変更されます)。
-
Thermal
- 温度ゾーンのイベント。
-
IFNET
-
ネットワークサブシステムに関連するイベント。
- サブシステム
- interface
-
“サブシステム”は、イベントが起こるネットワークインタフェースの実際の名前です。
- タイプ
-
LINK_UP
- キャリア状態は、UP に変化しました。
-
LINK_DOWN
- キャリア状態は、DOWN に変化しました。
-
ATTACH
- ネットワークインタフェースは、システムにアタッチされます。
-
DETACH
- ネットワークインタフェースは、システムからデタッチされます。
-
DEVFS
-
devfs(5) ファイルシステムに関連するイベント。
-
USB
-
USB サブシステムに関連するイベント。
- サブシステム
-
DEVICE
-
- タイプ
-
ATTACH
- USB デバイスは、システムにアタッチされます。
-
DETACH
- USB デバイスは、システムからデタッチされます。
-
INTERFACE
-
- タイプ
-
ATTACH
- USB インタフェースは、デバイスにアタッチされます。
-
DETACH
- USB インタフェースは、デバイスからデタッチされます。
-
coretemp
-
coretemp(4) デバイスに関連するイベント。
- サブシステム
-
Thermal
-
CPU コアが臨界温度に到達したという通知。
- タイプ
- temperature
- 熱くなり過ぎたコアの温度を含む文字列。
-
kern
-
カーネルに関連するイベント。
- サブシステム
-
power
-
システムの状態に関する情報。
- タイプ
-
resume
- システムがサスペンドしている状態から目覚めたという通知。
リンク状態がインタフェース“ fxp0
”で UP に変化すると次の通知 (notify) イベントが起こります:
system=IFNET, subsystem=fxp0, type=LINK_UP
AC (交流) 線の状態が“offline”に変化したなら、次のイベントが起こります:
system=ACPI, subsystem=ACAD, notify=0x00
コメント
コメントは、空白類が設定ファイルに現われるところならどんな場所でも現われることができます。すべての種類のプログラマが気に入るように、C、C++ または sehll/Perl 作成物にそれらを書くことができます。 C スタイルのコメントは、2 文字の‘ /*
’ (スラッシュ、星) で始まり、‘ */
’ (星、スラッシュ) で終わります。それらは、これらの文字で完全に区切ることができるので、行の一部だけ、または複数の行にまたがってコメントに使用することができます。
C スタイルのコメントは、入れ子にすることができません。例えば、次は、すべてのコメントが最初の‘ */
’で終わるので、正しくありません:
/* これは, コメントの開始です. これは, まだコメントの一部です. /* これは, コメントを入れ子にする正しくない試みです. */ これは, もはやどんなコメント内でありません. */
C++ スタイルのコメントは、2 文字の‘ //
’ (スラッシュ、スラッシュ) で始まり、物理的な行の終りまで続きます。それらは、複数の物理的な行をまたがって続けることはできません。複数行にわたる 1 つの論理的なコメントにするためには、‘ //
’の組を使用しなければなりません。例えば:
// これは, コメントの開始です. 次の行は, // たとえそれが論理的に前のコメントの // 一部であっても, 新しいコメントです.
関連ファイル
- /etc/devd.conf
- devd(8) 設定ファイル。
使用例
# # これは、インタフェース fxp0 と ath0 でリンクダウンイベントをキャッチします # notify 0 { match "system" "IFNET"; match "subsystem" "(fxp0|ath0)"; match "type" "LINK_DOWN"; action "logger $subsystem is DOWN"; }; # # 蓋のオープン/クロースイベントに適合します # 外部のスクリプトに $notify の値を渡すことによって、 # これらを単一のイベントに結合することができます # 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!"; }; # # USB デバイスタイプにマッチする # notify 0 { match "system" "USB"; match "subsystem" "INTERFACE"; match "type" "ATTACH"; match "intclass" "0x0e"; action "logger USB video device attached"; }; # # ath と wi デバイスがアタッチされているので、 # pccard_ether で ath と wi デバイスの設定を試みます # attach 0 { device-name "(ath|wi)[0-9]+"; action "/etc/pccard_ether $device-name start"; }; # # ath と wi デバイスがシステムからデタッチされているので、 # それらを停止します # detach 0 { device-name "(ath|wi)[0-9]+"; action "/etc/pccard_ether $device-name stop"; };
インストールされた /etc/devd.conf には、多くの追加例があります。
February 22, 2013 | FreeBSD |