PNP(4) FreeBSD/i386 カーネルインタフェースマニュアル PNP(4)
名称
pnp − PnP デバイスのサポート |
書式
controller pnp0 |
解説 |
FreeBSD の PnP デバイスサポートによって、ユーザが PnP カードの設定を強制 設定することが可能になります。また、デバイスドライバが PnP カードのパラ メータを取得・変更することが可能になります。 手動で強制設定する機能を用いるためには、カーネルを options USERCONFIG 付 きでコンパイルする必要があります。このときカーネルは、PnP デバイスの設定 を記録するための一定の大きさのテーブル (デフォルトで 20 エントリ) を確保 します。 PnP カード 1 つが複数の独立したデバイスから構成されていることも あります (5 つ 6 つもあるということは異常ではありません)。 カーネルを ‘‘−c’’ フラグ付きでブートすることで、 PnP カードの設定変更のコ マンドを使用できます。コマンドは |
pnp CSN LDN |
というシーケンスから始まります。ここで、CSN ならびに LDN はそれぞれ、デバ イスに振られているカード選択番号 (Card Select Number) および論理デバイス 番号 (Logiacal Device Number) です。このシーケンスに続けて、以下のコマン ドの任意の組み合わせが使えます。 |
irqN line
カード上の割り込み 0 または 1 (訳注: N で指定) に使用する IRQ 線を設定します。 line に 0 を指定することは、IRQ 線を使 用しないことを意味します。 drqN n portN address memN address bios os enable disable delete flags 現在のテーブル内の設定値は、userconfig の ls コマンドで表示されます。この テーブルは、ユーザが行なった変更に加え、 PnP デバイスドライバがアクセスし たすべての論理デバイスのエントリを保持します。 テーブルの変更結果は、 dset(8) コマンドによってファイルシステム上のブート イメージに保存されます。 (訳注: カーネルの ELF 化により dset コマンドは廃 止されました) PnP をサポートするデバイスドライバ |
カーネルは PnP デバイスを自動的に認識して設定します。 PnP デバイスは以下 のデータ構造で識別します。 struct pnp_device { |
char |
*pd_name; |
||
char |
*(*pd_probe ) (u_long csn, u_long vendor_id); |
||
void |
(*pd_attach ) (u_long csn, u_long vend_id, char * name, |
||
struct isa_device *dev); |
|||
u_long |
*pd_count; |
||
u_int |
*imask; |
||
struct |
isa_device dev; |
}; プローブ (probe) ルーチンは、渡される vendor_id が自分が認識するものであ るか、カード中の必要なデバイスが有効になっているかをチェックし、チェック に失敗した場合には NULL 値を、成功した場合には NULL でない値 (一般にデバ イス名を指すポインタ) を返します。プローブルーチン内において、論理デバイ スが有効であるかどうかのチェックには、 read_pnp_parms() を使用できます。 アタッチ (attach) ルーチンは、 PnP カードを ISA アクセス可能にする、設定 を取得する、デバイスの ISA ドライバを呼ぶ、といった必要な初期化をすべて行 うことが必要です。 次のルーチンとデータ構造が使用できます。 |
struct pnp_cinfo
このデータ構造 ( read_pnp_parms(struct pnp_cinfo *d, int
ldn) write_pnp_parms(struct pnp_cinfo *d, int
ldn) enable_pnp_card(void) 関連項目 |
dset(8) (訳注: 廃止されました) |
バグ
ビジュアルコンフィギュレーションには、PnP デバイス設定のサポートがありま せん。 userconfig のコマンドで PnP デバイスの設定を取得することができれば 素晴らしいことでしょう。 |
作者
PnP サポートは Sujal Patel
が初めに手掛けたものを元に、 |
歴史
pnp は FreeBSD 2.2.5 に初めて登場しました。 FreeBSD September 7, 1997 FreeBSD |