TIMER_CREATE(2) | FreeBSD System Calls Manual | TIMER_CREATE(2) |
名称
timer_create — プロセス毎のタイマを作成する (リアルタイム)ライブラリ
POSIX Real-time Library (librt, -lrt)書式
#include < time.h>#include < signal.h>
int
timer_create( clockid_t clockid, struct sigevent *restrict evp, timer_t *restrict timerid);
解説
timer_create() システムコールは、タイミングベースとして指定されたクロック、 clock_id を使用してプロセス毎に 1 つのタイマを作成します。 timer_create() システムコールは、タイマ要求でタイマを特定するために使用されるタイプ timer_t のタイマ ID、 timerid によって参照される位置で返ります。このタイマ ID は、タイマが削除されるまで、呼び出しプロセスの中でユニークです。特定のクロック clock_id は、 < time.h> で定義されています。 ID が返されるタイマは、 timer_create() から返るとき、武装を解除した状態で返ります。訳注: arm 武装する、disarm 武装を解除する、の適切な訳が思い付きません。evp 引数は、 NULL でなければ、 sigevent 構造体を指します。この構造体は、タイマの期限が切れる場合に生じる、非同期な通知を定義するアプリケーションによって割り付けられます。 evp 引数が NULL であるなら、まるで evp 引数が、値 SIGEV_SIGNAL がある sigev_notify メンバ、デフォルトのシグナル番号がある sigev_signo とタイマ ID の値がある sigev_value がある sigevent 構造体を指すかのような効果があります。
この実装は、 CLOCK_REALTIME または CLOCK_MONOTONIC の clock_id をサポートします。
evp->sigev_notify が SIGEV_THREAD であり、 sev->sigev_notify_attributes が NULL でないなら、 sev->sigev_notify_attributes によって指された属性が pthread_attr_setstack() または pthread_attr_setstackaddr() への呼び出しによって指定されたスレッドスタックアドレスがあるなら、シグナルが何度も生成されるなら、結果は、不特定です。
戻り値
呼び出しが成功するなら、 timer_create() は、0 を返して、 timerid によって参照される位置をプロセス毎のタイマ呼び出しに渡すことができる timer_t に更新します。エラーが発生するなら、システムコールは、-1 の値を返し、グローバル変数 errno にエラーを示す値が設定されます。エラーが発生するなら、 timerid の値は、未定義です。エラー
timer_create() システムコールは、次の場合に失敗します:- [ EAGAIN]
- 呼び出しプロセスには、この実装によって許されているすべてのタイマが既に作成されています。
- [ EINVAL]
- 指定されたクロック ID は、サポートされていません。
- [ EFAULT]
- 任意の引数が、割り付けられたアドレス空間の外を指しているか、またはメモリプロテクションフォルトがあります。
規格
timer_create() システムコールは、 IEEE Std 1003.1-2004 (“POSIX.1”) に適合しています。歴史
POSIX のプロセス毎のタイマのサポートは、 FreeBSD 7.0 ではじめて登場しました。January 12, 2009 | FreeBSD |