タイムアウト・カーネル・サービス

注意: このサービスはマルチプロセッサー・セーフではないため、使用しないでください。 代わりに、基本カーネル・タイマーおよびウォッチドッグ・サービスを使用する必要があります。

目的

指定された間隔の後に呼び出される関数をスケジュールします。

構文

#include <sys/types.h>
#include <sys/errno.h>
void timeout ( func,  arg,  ticks)
void (*func)();
caddr_t *arg;
int ticks;

パラメーター

項目 説明
func 呼び出す関数を示します。
ARG 機能 パラメーターで指定された関数に提供するパラメーターを示します。
ティック 機能 パラメーターによって指定された関数が呼び出される前に行わなければならないタイマー・ティックの数を指定します。 1 秒当たりに多くのタイマー・ティックが発生する可能性があります。 /usr/include/sys/m_param.h ファイルにある HZ ラベルを使用して、1 秒当たりのティックの数を判別できます。

説明

タイムアウト サービスはカーネルの一部ではありません。 ただし、これは libsys.a ライブラリーで提供される互換性サービスです。 timeout サービスを使用するには、カーネル・エクステンションを libsys.a ライブラリーにバインドする必要があります。 タイムアウト サービスは、関連するカーネル・サービス タイムアウト解除 および TimeOutCFと同様に、カーネル・エクステンションの固定部分またはデバイス・ドライバーの下半分でのみバインドおよび使用することができます。これらのサービスは、シリアライゼーションのために割り込み使用不可を使用するためです。

タイムアウト サービスは、 目盛り パラメーターによって指定されたタイマー・ティックの数の後に 引数 パラメーターを指定して呼び出されるように、 機能 パラメーターによって指定された関数をスケジュールします。 TimeOutCF ルーチンを使用して、予想される同時アクティブ・タイムアウトの最大数に十分なコールアウト・エレメントを割り振ります。

注: タイムアウト サービスを呼び出す前に、 TimeOutCF ルーチンを呼び出す必要があります。

十分なコールアウト・テーブル・エントリーを割り振らずに タイムアウト サービスを呼び出すと、ピン留めされたコールアウト・テーブル・エレメントがないため、カーネル・パニックが発生する可能性があります。 タイマー・ティックの値は、ハードウェアの能力によって異なります。 ResTimer サブルーチンを使用して、最小細分度を決定することができます。

同じ 機能 パラメーターおよび 引数 パラメーターを持つ複数の保留 タイムアウト 要求は許可されません。

関数パラメーター

機能 パラメーターで指定する関数は、以下のように宣言する必要があります。

void func (arg)
void *arg;

実行環境

タイムアウト ルーチンは、 処理 環境または 割り込み 環境から呼び出すことができます。

機能 パラメーターで指定された関数は、割り込み環境で呼び出されます。 したがって、割り込みハンドラーの規則に従う必要があります。

戻り値

タイムアウト サービスには戻り値はありません。