DEVICE_IDENTIFY(9) | FreeBSD Kernel Developer's Manual | DEVICE_IDENTIFY(9) |
名称
DEVICE_IDENTIFY — デバイスを識別し、それを登録する書式
#include < sys/param.h>#include < 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) を参照する) を呼び出すことによってカーネルに登録されます。
デバイスツリーとデバイスドライバのツリーは、解体されるので、 DEVICE_IDENTIFY() ルーチンは、これを考慮に入れる必要があります。識別ルーチンがあるデバイスドライバをロードして、アンロードするなら、特別の手段がその可能性を排除するためにとられなければ、子どものノードは、何度も同じノードを追加する可能性があります、
使用例
次の疑似コードは、ハードウェアの一部分をプローブし、それとそのリソース (I/O ポート) をカーネルに登録する関数の例を示しています。
void foo_identify(driver_t *driver, device_t parent) { device_t child; retrieve_device_information; /* デバイス情報を検索する */ if (デバイスがサポートするデバイスの 1 つにマッチする && デバイスツリーにまだない) { child = BUS_ADD_CHILD(parent, 0, "foo", -1); bus_set_resource(child, SYS_RES_IOPORT, 0, FOO_IOADDR, 1); } }
関連項目
BUS_ADD_CHILD(9), bus_set_resource(9), device(9), device_add_child(9), DEVICE_ATTACH(9), DEVICE_DETACH(9), DEVICE_PROBE(9), DEVICE_SHUTDOWN(9)作者
このマニュアルページは、 <alex@FreeBSD.org>によって書かれました。May 13, 2004 | FreeBSD |