CONFIG_INTRHOOK(9) | FreeBSD Kernel Developer's Manual | CONFIG_INTRHOOK(9) |
名称
config_intrhook — ルートがマウントされる前に、割り込みが有効にされた後に実行される関数のスケジュール書式
#include < sys/kernel.h> int
config_intrhook_establish( struct intr_config_hook *hook);
void
config_intrhook_disestablish( struct intr_config_hook *hook);
解説
config_intrhook_establish() 関数は、ルートがマウントされる前に、割り込むが有効にされた後に実行される関数をスケジュールします。システムに初期化で既にこのポイントが渡されていたなら、関数は、直ちに呼び出されます。config_intrhook_disestablish() 関数は、フックキューからエントリを削除します。
ルートがマウントされる前に、すべての以前に確立したフックが実行されます。すべてのハンドラが config_intrhook_disestablish() でフックキューからそれらのフックを削除するまで、ブートのプロセスは、行き詰まります。ブートのプロセスは、続けてルートファイルシステムをマウントすることを試みます。潜在的にルートとしてそれらをマウントしたいデバイスを提供することができる任意のドライバは、このフックを使用するか、または初期のプローブで、これらのすべてのデバイスをプローブしなければなりません。割り込みがプローブプロセスの間に無効にされるので、多くのドライバは、割り込みが有効にされているデバイスをプローブするためのメソッドを必要とします。
要求は、 intr_config_hook 構造体で行われます。この構造体は、次の通りに定義されています:
struct intr_config_hook { TAILQ_ENTRY(intr_config_hook) ich_links;/* プライベート */ void (*ich_func)(void *arg); /* 呼び出す関数 */ void *ich_arg; /* 呼び出す引数 */ };
intr_config_hook 構造体のための記憶域は、ドライバによって提供されなければなりません。フックが廃止された後まで、フックが確率される直前に安定していなければなりません。
特に、フックはスケジューラが開始される直後で、ルートファイルシステムデバイスが発見される直前に、 SI_SUB_INT_CONFIG_HOOKS() で実行されます。
戻り値
0 の返り値は、フックをキューに (遅延されたか、または直ちに実行のいずれかで) 追加することに成功したことを意味します。 0 でない返り値は、既にキューに入れられているので、キューにフックを追加できなかったことを意味します。関連項目
DEVICE_ATTACH(9)歴史
これらの関数は、CAM サブシステムで FreeBSD 3.0 で導入されましたが、使用するどんなドライバでも利用可能です。作者
この関数は、 <gibbs@FreeBSD.org>によって書かれました。このマニュアルページは、 <imp@FreeBSD.org>によって書かれました。September 24, 2006 | FreeBSD |