proch_reg カーネル・サービス
目的
コールアウト・ハンドラーを登録します。
構文
#include <sys/proc.h> int proch_reg(struct prochr *)注:prochr構造体には以下の要素が含まれており、proch_regを呼び出す前に設定する必要がある:
パラメーター
| 項目 | 説明 |
|---|---|
| 整数 prochr_mask | コールアウトが要求されるカーネル・イベントのセットを指定します。 old_style インターフェースとは異なり、コールアウトは指定されたイベントに対してのみ呼び出されます。 このマスクは、以下の定義値のいずれかを OR で結合することによって形成されます。
|
| proch_handler | 指定されたカーネル・イベントが発生したときに呼び出されるコールアウト関数を指定します。 |
説明
同じstruct prochr *が複数回登録された場合、カーネルに保持されるのは最も最近に指定された情報のみである。
struct prochr *はメモリ上の新しい場所にコピーされない。 その結果、構造が変更されると、結果は予測不能になります。 この構造体は固定する必要はありません。
新しいスタイルのインターフェースの主な考慮事項は、スケーラビリティーを向上させることです。 ロックは、コールアウトが行われたときにのみ獲得されます。 現在登録されているすべてのコールアウト・イベント・タイプの要約マスクが維持されます。 このサマリー・マスクは、同一のstruct prochr * を登録する場合でも、proch_regまたはproch_unregが呼ばれるたびに更新される。 さらに、ロックは複合ロックであるため、いったんコールアウトが登録されると、ロックは読み取り専用で保持されるため、コールアウトの呼び出しでロック競合は発生しません。
登録済みハンドラー関数へのコールアウトが行われると、渡されるパラメーターは以下のようになります。
- 登録されたprochr構造体へのポインタ
- コールアウトの理由を示すコールアウトリクエスト値
- スレッドまたはプロセスID
戻り値
正常に終了すると、proch_regカーネルサービスは値0を返す。 唯一のエラー (ゼロ以外の) 戻りコードは、NULL ポインターを使用して登録しようとすることです。
実行環境
proch_regカーネルサービスは、プロセス環境からのみ呼び出すことができる。