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.

If you are angry with someone, you should walk a mile in their shoes - then you'll be a mile away from them, and you'll have their shoes.