DEVICE_IDENTIFY(9)

名称
DEVICE_IDENTIFY - デバイスの識別とその登録

書式
<sys/param.h> <sys/bus.h> void DEVICE_IDENTIFY(driver_t *driver, device_t parent)

解説
デバイスのための識別関数は、例えば ISA バスなどの、子デバイスを独立して 識別できないバス上のデバイスのためにだけ必要とされます。 これはデバイスを認識 (大抵はハードウェアの不明瞭でないレジスタに アクセスすることによって行われます) し、 そのデバイスに関してカーネルに通知し、 新しいデバイスの実体を作成するために、使用されます。

BUS_ADD_CHILD(9) はバスの子デバイスとして、デバイスを登録するために使用されます。 そのデバイスの (IRQ や I/O ポートのような) リソースは、個々のリソースのために bus_set_resource() (詳細は bus_set_resource(9) を参照) を呼び出すことによってカーネルに登録されます。

使用例
以下の疑似コードは、ハードウェアの一部をプローブし、デバイスと そのリソース (I/O ポート) をカーネルに登録する関数の例を示しています。 デバイスの解説も設定しています。

    void
    foo_identify(driver_t *driver, device_t parent)
    {
    	device_t child;
    	デバイス情報の取り出し;
    	if (サポートするデバイスうちの 1 つがマッチする) {
    		child = BUS_ADD_CHILD(parent, 0, "foo", -1);
    		device_set_desc_copy(child, "foo chip ver.123");
    		device_set_driver(child, driver);
    		bus_set_resource(child, SYS_RES_IOPORT, 0, FOO_IOADDR, 1);
    	}
    }

戻り値
成功時には 0 が返され、それ以外の場合は適切なエラー ((errno) 2 参照) が返されます。

関連項目
BUS_ADD_CHILD(9), bus_set_resource(9), device(9), device_add_child(9), DEVICE_ATTACH(9), DEVICE_DETACH(9), DEVICE_PROBE(9), device_set_desc_copy(9), device_set_driver(9), DEVICE_SHUTDOWN(9)

作者
このマニュアルページは Alexander Langer <alex@FreeBSD.org> が書きました。