.\"
.TH TIMERFD_CREATE 2 2011\-09\-14 Linux "Linux Programmer's Manual"
.SH 名前
-timerfd_create, timerfd_settime, timerfd_gettime \- ファイルディスクリプタ経由で通知するタイマー
+timerfd_create, timerfd_settime, timerfd_gettime \- ファイルディスクリプター経由で通知するタイマー
.SH 書式
.nf
\fB#include <sys/timerfd.h>\fP
\fBint timerfd_gettime(int \fP\fIfd\fP\fB, struct itimerspec *\fP\fIcurr_value\fP\fB);\fP
.fi
.SH 説明
-これらのシステムコールは、満了通知をファイルディスクリプタ経由で配送する タイマーの生成と操作を行う。 これらは、 \fBsetitimer\fP(2) や
-\fBtimer_create\fP(2) を用いる方法の代わりとなるものであり、このファイルディスクリプタを \fBselect\fP(2),
+これらのシステムコールは、満了通知をファイルディスクリプター経由で配送する タイマーの生成と操作を行う。 これらは、 \fBsetitimer\fP(2)
+や \fBtimer_create\fP(2) を用いる方法の代わりとなるものであり、このファイルディスクリプターを \fBselect\fP(2),
\fBpoll\fP(2), \fBepoll\fP(7) で監視できるという利点がある。
.\"
.\" Since Linux 3.11, commit 11ffa9d6065f344a9bd769a2452f26f2f671e5f8
.\" CLOCK_BOOTTIME
.\" Since Linux 3.15, commit 4a2378a943f09907fb1ae35c15de917f60289c14
-\fBtimerfd_create\fP() は新規のタイマーオブジェクトを生成し、そのタイマーを参照するファイル ディスクリプタを返す。
+\fBtimerfd_create\fP() ã\81¯æ\96°è¦\8fã\81®ã\82¿ã\82¤ã\83\9eã\83¼ã\82ªã\83\96ã\82¸ã\82§ã\82¯ã\83\88ã\82\92ç\94\9fæ\88\90ã\81\97ã\80\81ã\81\9dã\81®ã\82¿ã\82¤ã\83\9eã\83¼ã\82\92å\8f\82ç\85§ã\81\99ã\82\8bã\83\95ã\82¡ã\82¤ã\83« ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\82\92è¿\94ã\81\99ã\80\82
\fIclockid\fP 引き数は、タイマーの進捗を管理するためのクロックを指定するもので、 \fBCLOCK_REALTIME\fP か
\fBCLOCK_MONOTONIC\fP のいずれかでなければならない。 \fBCLOCK_REALTIME\fP
はシステム全体で使用されるクロックで、このクロックは変更可能である。 \fBCLOCK_MONOTONIC\fP
を追加で呼び出す必要がなくなる。
.TP
\fBTFD_CLOEXEC\fP
-新しいファイルディスクリプタに対して close\-on\-exec (\fBFD_CLOEXEC\fP) フラグをセットする。
+æ\96°ã\81\97ã\81\84ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81«å¯¾ã\81\97ã\81¦ close\-on\-exec (\fBFD_CLOEXEC\fP) ã\83\95ã\83©ã\82°ã\82\92ã\82»ã\83\83ã\83\88ã\81\99ã\82\8bã\80\82
このフラグが役に立つ理由については、 \fBopen\fP(2) の \fBO_CLOEXEC\fP フラグの説明を参照のこと。
.PP
バージョン 2.6.26 以前の Linux では、 \fIflags\fP 引き数は未使用であり、0 を指定しなければならない。
.SS timerfd_settime()
-\fBtimerfd_settime\fP() は、ファイルディスクリプタ \fIfd\fP により参照されるタイマーを開始したり停止したりする。
+\fBtimerfd_settime\fP() は、ファイルディスクリプター \fIfd\fP により参照されるタイマーを開始したり停止したりする。
\fInew_value\fP 引き数は、タイマーの満了時間 (expiration) の初期値と間隔 (interval) を
指定する。この引き数で使用されている \fIitimerspec\fP 構造体には 2 つのフィールドがあり、各フィールドは \fItimespec\fP
\fBtimerfd_settime\fP() を呼び出した時点でのタイマーの設定を返すのに使用される。 下記の \fBtimerfd_gettime\fP()
の説明を参照。
.SS timerfd_gettime()
-\fBtimerfd_gettime\fP() は、ファイルディスクリプタ \fIfd\fP で参照されるタイマーの現在の設定が入った \fIitimerspec\fP
-構造体を、 \fIcurr_value\fP に格納して返す。
+\fBtimerfd_gettime\fP() は、ファイルディスクリプター \fIfd\fP で参照されるタイマーの現在の設定が入った
+\fIitimerspec\fP 構造体を、 \fIcurr_value\fP に格納して返す。
\fIit_value\fP フィールドは、タイマーが次に満了するまでの残り時間を返す。 この構造体の両方のフィールドが 0
であれば、タイマーは現在停止している。 タイマー設定時に \fBTFD_TIMER_ABSTIME\fP
\fIit_interval\fP フィールドは、タイマーの間隔を返す。 この構造体の両方のフィールドが 0 であれば、タイマーは
\fInew_value.it_value\fP で指定された時間後に一回だけ満了して停止するように設定されている。
-.SS ã\82¿ã\82¤ã\83\9eã\83¼ã\83»ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿に対する操作
-\fBtimerfd_create\fP() が返すファイルディスクリプタは以下の操作をサポートしている。
+.SS ã\82¿ã\82¤ã\83\9eã\83¼ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼に対する操作
+\fBtimerfd_create\fP() ã\81\8cè¿\94ã\81\99ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81¯ä»¥ä¸\8bã\81®æ\93\8dä½\9cã\82\92ã\82µã\83\9dã\83¼ã\83\88ã\81\97ã\81¦ã\81\84ã\82\8bã\80\82
.TP
\fBread\fP(2)
\fBtimerfd_settime\fP() を使ってタイマーの設定が最後変更されて以降、または \fBread\fP(2)
-の呼び出しに最後に成功して以降に、タイマーの満了が一回以上発生していれば、 \fBread\fP(2) に渡されたバッファに、タイマー満了回数を示す 8
+ã\81®å\91¼ã\81³å\87ºã\81\97ã\81«æ\9c\80å¾\8cã\81«æ\88\90å\8a\9fã\81\97ã\81¦ä»¥é\99\8dã\81«ã\80\81ã\82¿ã\82¤ã\83\9eã\83¼ã\81®æº\80äº\86ã\81\8cä¸\80å\9b\9e以ä¸\8aç\99ºç\94\9fã\81\97ã\81¦ã\81\84ã\82\8cã\81°ã\80\81 \fBread\fP(2) ã\81«æ¸¡ã\81\95ã\82\8cã\81\9fã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81«ã\80\81ã\82¿ã\82¤ã\83\9eã\83¼æº\80äº\86å\9b\9eæ\95°ã\82\92示ã\81\99 8
バイトの unsigned 型の整数 (\fIuint64_t\fP) が返される (返される値はホストバイトオーダ、つまりそのホストマシンにおける
整数の通常のバイトオーダである)。
.IP
\fBread\fP(2) を行った時点でタイマーの満了が発生していなければ、 \fBread\fP(2) は停止 (block)
-する、もしくはファイルディスクリプタが 非停止 (nonblocking) に設定されている場合はエラー \fBEAGAIN\fP で失敗する
+ã\81\99ã\82\8bã\80\81ã\82\82ã\81\97ã\81\8fã\81¯ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81\8c é\9d\9eå\81\9cæ¢ (nonblocking) ã\81«è¨å®\9aã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bå ´å\90\88ã\81¯ã\82¨ã\83©ã\83¼ \fBEAGAIN\fP ã\81§å¤±æ\95\97ã\81\99ã\82\8b
(非停止モードにするには、 \fBfcntl\fP(2) の \fBF_SETFL\fP 命令で \fBO_NONBLOCK\fP フラグをセットする)。
.IP
-渡されたバッファの大きさが 8 バイト未満の場合、 \fBread\fP(2) はエラー \fBEINVAL\fP で失敗する。
+渡ã\81\95ã\82\8cã\81\9fã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81®å¤§ã\81\8dã\81\95ã\81\8c 8 ã\83\90ã\82¤ã\83\88æ\9cªæº\80ã\81®å ´å\90\88ã\80\81 \fBread\fP(2) ã\81¯ã\82¨ã\83©ã\83¼ \fBEINVAL\fP ã\81§å¤±æ\95\97ã\81\99ã\82\8bã\80\82
.TP
\fBpoll\fP(2), \fBselect\fP(2) (と同様の操作)
-一つ以上のタイマー満了が発生していれば、 ファイルディスクリプタは読み出し可能となる (\fBselect\fP(2) の \fIreadfds\fP 引き数や
+ä¸\80ã\81¤ä»¥ä¸\8aã\81®ã\82¿ã\82¤ã\83\9eã\83¼æº\80äº\86ã\81\8cç\99ºç\94\9fã\81\97ã\81¦ã\81\84ã\82\8cã\81°ã\80\81 ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81¯èªã\81¿å\87ºã\81\97å\8f¯è\83½ã\81¨ã\81ªã\82\8b (\fBselect\fP(2) ã\81® \fIreadfds\fP å¼\95ã\81\8dæ\95°ã\82\84
\fBpoll\fP(2) の \fBPOLLIN\fP フラグ)。
.IP
-ã\81\93ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\81¯ã\80\81ä»\96ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿多重 API である \fBpselect\fP(2), \fBppoll\fP(2),
+ã\81\93ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81¯ã\80\81ä»\96ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼多重 API である \fBpselect\fP(2), \fBppoll\fP(2),
\fBepoll\fP(7) もサポートしている。
.TP
\fBclose\fP(2)
.\"
-ファイルディスクリプタがそれ以降は必要なくなった際には、クローズすべきである。 同じ timer
-オブジェクトに関連付けられたファイルディスクリプタが全て クローズされると、そのタイマーは解除され、
+ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81\8cã\81\9dã\82\8c以é\99\8dã\81¯å¿\85è¦\81ã\81ªã\81\8fã\81ªã\81£ã\81\9fé\9a\9bã\81«ã\81¯ã\80\81ã\82¯ã\83ã\83¼ã\82ºã\81\99ã\81¹ã\81\8dã\81§ã\81\82ã\82\8bã\80\82 å\90\8cã\81\98 timer
+ã\82ªã\83\96ã\82¸ã\82§ã\82¯ã\83\88ã\81«é\96¢é\80£ä»\98ã\81\91ã\82\89ã\82\8cã\81\9fã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81\8cå\85¨ã\81¦ ã\82¯ã\83ã\83¼ã\82ºã\81\95ã\82\8cã\82\8bã\81¨ã\80\81ã\81\9dã\81®ã\82¿ã\82¤ã\83\9eã\83¼ã\81¯è§£é\99¤ã\81\95ã\82\8cã\80\81
そのオブジェクト用の資源がカーネルにより解放される。
.SS "fork(2) での扱い"
.\"
-\fBfork\fP(2) が行われると、子プロセスは \fBtimerfd_create\fP() により生成されたファイルディスクリプタのコピーを
-ç¶\99æ\89¿ã\81\99ã\82\8bã\80\82ã\81\9dã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\81¯ã\80\81親ã\83\97ã\83ã\82»ã\82¹ã\81®å¯¾å¿\9cã\81\99ã\82\8b ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿と同じタイマーオブジェクトを参照しており、 子プロセスの
+\fBfork\fP(2) ã\81\8cè¡\8cã\82\8fã\82\8cã\82\8bã\81¨ã\80\81å\90ã\83\97ã\83ã\82»ã\82¹ã\81¯ \fBtimerfd_create\fP() ã\81«ã\82\88ã\82\8aç\94\9fæ\88\90ã\81\95ã\82\8cã\81\9fã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81®ã\82³ã\83\94ã\83¼ã\82\92
+ç¶\99æ\89¿ã\81\99ã\82\8bã\80\82ã\81\9dã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81¯ã\80\81親ã\83\97ã\83ã\82»ã\82¹ã\81®å¯¾å¿\9cã\81\99ã\82\8b ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼と同じタイマーオブジェクトを参照しており、 子プロセスの
\fBread\fP(2) でも同じタイマーの満了に関する情報が返される。
.SS "execve(2) での扱い"
-\fBexecve\fP(2) の前後で \fBtimerfd_create\fP() により生成されたファイルディスクリプタは保持され、
+\fBexecve\fP(2) ã\81®å\89\8då¾\8cã\81§ \fBtimerfd_create\fP() ã\81«ã\82\88ã\82\8aç\94\9fæ\88\90ã\81\95ã\82\8cã\81\9fã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81¯ä¿\9dæ\8c\81ã\81\95ã\82\8cã\80\81
タイマーが開始されていた場合にはタイマーの満了が発生し続ける。
.SH 返り値
-成功すると、 \fBtimerfd_create\fP() は新しいファイルディスクリプタを返す。 エラーの場合、\-1 を返し、 \fIerrno\fP
+æ\88\90å\8a\9fã\81\99ã\82\8bã\81¨ã\80\81 \fBtimerfd_create\fP() ã\81¯æ\96°ã\81\97ã\81\84ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\82\92è¿\94ã\81\99ã\80\82 ã\82¨ã\83©ã\83¼ã\81®å ´å\90\88ã\80\81\-1 ã\82\92è¿\94ã\81\97ã\80\81 \fIerrno\fP
にエラーを示す値を設定する。
\fBtimerfd_settime\fP() と \fBtimerfd_gettime\fP() は成功すると 0 を返す。 エラーの場合、\-1 を返し、
\fIflags\fP が無効である。もしくは、Linux 2.6.26 以前の場合には \fIflags\fP が 0 以外である。
.TP
\fBEMFILE\fP
-オープン済みのファイルディスクリプタの数がプロセスあたりの上限に 達していた。
+ã\82ªã\83¼ã\83\97ã\83³æ¸\88ã\81¿ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81®æ\95°ã\81\8cã\83\97ã\83ã\82»ã\82¹ã\81\82ã\81\9fã\82\8aã\81®ä¸\8aé\99\90ã\81« é\81\94ã\81\97ã\81¦ã\81\84ã\81\9fã\80\82
.TP
\fBENFILE\fP
オープン済みのファイル総数がシステム全体の上限に達していた。
(カーネル内の) 無名 inode デバイスをマウントできなかった。
.TP
\fBENOMEM\fP
-タイマーを作成するのに十分なカーネルメモリがなかった。
+ã\82¿ã\82¤ã\83\9eã\83¼ã\82\92ä½\9cæ\88\90ã\81\99ã\82\8bã\81®ã\81«å\8d\81å\88\86ã\81ªã\82«ã\83¼ã\83\8dã\83«ã\83¡ã\83¢ã\83ªã\83¼ã\81\8cã\81ªã\81\8bã\81£ã\81\9fã\80\82
.PP
\fBtimerfd_settime\fP() と \fBtimerfd_gettime\fP() は以下のエラーで失敗する可能性がある。
.TP
\fBEBADF\fP
-\fIfd\fP が有効なファイルディスクリプタでない。
+\fIfd\fP ã\81\8cæ\9c\89å\8a¹ã\81ªã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81§ã\81ªã\81\84ã\80\82
.TP
\fBEFAULT\fP
-\fInew_value\fP, \fIold_value\fP, \fIcurr_value\fP が有効なポインタではない。
+\fInew_value\fP, \fIold_value\fP, \fIcurr_value\fP ã\81\8cæ\9c\89å\8a¹ã\81ªã\83\9dã\82¤ã\83³ã\82¿ã\83¼ã\81§ã\81¯ã\81ªã\81\84ã\80\82
.TP
\fBEINVAL\fP
-\fIfd\fP が有効な timerfd ファイルディスクリプタでない。
+\fIfd\fP ã\81\8cæ\9c\89å\8a¹ã\81ª timerfd ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81§ã\81ªã\81\84ã\80\82
.PP
\fBtimerfd_settime\fP() は以下のエラーで失敗することもある。
.TP