EN JA
DEVCTL(4)
DEVCTL(4) FreeBSD Kernel Interfaces Manual DEVCTL(4)

名称

devctlデバイスイベント報告とデバイス制御インタフェース

解説

devctl デバイスは、カーネルからデバイスイベントを報告するために使用されます。また、将来のバージョンは何らかのデバイス制御を考慮に入れるでしょう。

実装に関する注

この設計では /dev/devctl に対して 1 つの読み込みのみ許可します。これは、長い目で見れば望ましくはありませんが、この実装からたくさんの髪をかきむしります。多分、我々はこのデバイスをクローン可能なデバイスにするべきです。

ご了承ください: 我々は、潜在的鶏肉と卵の問題を避けるために、明確にデバイスを device_t ツリーにアタッチしません。 1 つは、このすべてがルートノードに属すと主張することもあり得ます。 1 つは、我々が現在持っている sysctl(3) インタフェースが、より適切に ioctl(2) インタフェースであるかもしれないとさらに主張することもあり得ます。

SIGIO サポートはドライバに含まれています。しかしながら、作者は正しく SIGIO サポートを行うことを確実と思っていません。それは FreeBSD 3.4FreeBSD 2.2.8 のときからおそらくテストされていない SIGIO サポートがあるドライバからコピーされました!

このデバイスのための読み込みチャネルはリアルタイムでユーザランドのために変化するレポートに使用されます。我々は一度に 1 つのレコードを返します。一度に 1 文字をこのデバイスに読み込もうとするなら、利用者はデータの残りを失います。 listen する (接続を受け付ける) プログラムはうまく対処すると予想されます。

sysctl とブートパラメータ hw.bus.devctl_disable は、 devd(8) が全く実行されていないとき、 devctl を無効にするために使用されます。

プロトコル

devctl デバイスは ASCII プロトコルを使用します。ドライバは一度に 1 つのレコードをを読み込み側に返します。各レコードは改行で終了しています。レコードの最初の文字はイベントタイプです。

タイプ 説明
! リンク状態の変更のようなイベント通知。
+ アタッチされたツリーのデバイスノード。
- デタッチされたツリーのデバイスノード。
? 検出された未知のデバイス。

メッセージフォーマット

レコードの最初の文字を除いて、アタッチ、デタッチメッセージは同じ形式になっています。

T dev at parent on location

部分 説明
T + または -
dev アタッチ/デタッチされたデバイス名。
parent デバイスをアタッチした親のバスのデバイス名。
location バス特定位置情報

nomatch メッセージは、デバイスドライバをロードするために使用することができます。デバイスドライバをロードするなら、2 つのものの 1 つが起こるかもしれません。デバイスドライバが何かにアタッチするなら、利用者はデバイスアタッチメッセージを得ます。そうしなければ、何も起こりません。

アタッチ、デタッチメッセージはイベントの後に到着します。これは、代替のドライバをロードするアタッチメッセージを使用できないことを意味します。アタッチメッセージドライバは既にこのデバイスを要求しました。デバイスのデータをフラッシュするためにデタッチメッセージを使用することはできません。デバイスは既にありません。

関連項目

devd(8)
February 11, 2003 FreeBSD