tail head cat sleep
QR code linking to this page

manページ  — DEVICE_IDENTIFY

名称

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;

        デバイス情報の取り出し;         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)

作者

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

DEVICE_IDENTIFY (9) May 13, 2004

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.

The most horrifying thing about Unix is that, no matter how many times you hit yourself over the head with it, you never quite manage to lose consciousness. It just goes on and on.
— Patrick Sobalvarro