.\" Updated 2012-05-29, Akihiro MOTOKI <amotoki@gmail.com>
.\" Updated 2013-05-06, Akihiro MOTOKI <amotoki@gmail.com>
.\"
-.TH CLOCK_GETRES 2 2013\-02\-25 "" "Linux Programmer's Manual"
+.TH CLOCK_GETRES 2 2013\-12\-28 "" "Linux Programmer's Manual"
.SH 名前
clock_getres, clock_gettime, clock_settime \- クロックと時間の関数
.SH 書式
\fBCLOCK_REALTIME\fP における複雑な処理を行う必要もなくなる。 \fBCLOCK_REALTIME\fP では、
\fBsettimeofday\fP(2) を使って時刻を変更した場合、時刻に不連続な変化が発生するからだ。
.TP
-\fBCLOCK_PROCESS_CPUTIME_ID\fP
-CPU による高分解能のプロセス毎のタイマー。
+\fBCLOCK_PROCESS_CPUTIME_ID\fP (Linux 2.6.12 以降)
+プロセス単位の CPU タイムクロック (そのプロセスの全スレッドで消費される CPU 時間を計測する)。
.TP
-\fBCLOCK_THREAD_CPUTIME_ID\fP
+\fBCLOCK_THREAD_CPUTIME_ID\fP (Linux 2.6.12 以降)
スレッド固有の CPU タイムクロック。
.SH 返り値
\fBclock_gettime\fP(), \fBclock_settime\fP(), \fBclock_getres\fP() は成功した場合に 0
.TP
\fBEPERM\fP
指示されたクロックを設定する権限が \fBclock_settime\fP() にない。
+.SH バージョン
+これらのシステムコールは Linux 2.6 で初めて登場した。
.SH 準拠
SUSv2, POSIX.1\-2001.
.SH 可用性
\fB_POSIX_THREAD_CPUTIME\fP は \fBCLOCK_MONOTONIC\fP, \fBCLOCK_PROCESS_CPUTIME_ID\fP,
\fBCLOCK_THREAD_CPUTIME_ID\fP が利用可能なことを示す。 (\fBsysconf\fP(3) も参照すること。)
.SH 注意
-.SS "SMP システムについての注意"
-\fBCLOCK_PROCESS_CPUTIME_ID\fP と \fBCLOCK_THREAD_CPUTIME_ID\fP クロックは、CPU からのタイマー
-(i386 上の TSC、Itanium 上の AR.ITC) を用いて実現されている。 これらのレジスタは CPU 間で異なる可能性があり、
-プロセスが他の CPU に移動させられた場合、 結果としてこれらのクロックが\fB偽の結果\fP (bogus results) を返すかもしれない。
+.SS "SMP システムに関する歴史的な注意事項"
+Linux が \fBCLOCK_PROCESS_CPUTIME_ID\fP と \fBCLOCK_THREAD_CPUTIME_ID\fP
+クロックのカーネルによるサポートを追加する前は、 glibc はこれらのクロックは多くのプラットフォームで CPU のタイマーレジスタ (i386 上の
+TSC、Itanium 上の AR.ITC) を用いて実現されていた。 これらのレジスタは CPU 間で異なる可能性があり、 プロセスが他の CPU
+に移動させられた場合、 結果としてこれらのクロックが\fB偽の結果\fP (bogus results) を返すかもしれない。
.PP
SMP システムの各 CPU が別々のクロック源を持つ場合、 タイマーレジスタ間の相互関係を管理する方法はない。 これは各 CPU
が微妙に異なる周波数で動作するためである。 これが真実の場合 (訳註: 各 CPU が別々のクロック源を持つ場合)、
SMP システムの各プロセッサは全く同じ時刻に起動する訳ではないので、 各タイマーレジスタは通常はあるオフセットで動作している。
オフセットをブート時に制限するコードが含まれるアーキテクチャもある。 しかし、このコードがオフセットを正確に調整することは保証できない。 glibc は
(Linux カーネルとは異なり) オフセットを扱うためのコードを提供しない。 通常はこれらのオフセットが小さいので、多くの場合でその影響は無視できる。
+
+glibc 2.4 以降では、 このページで説明したシステムコールのラッパー関数は、 \fBCLOCK_PROCESS_CPUTIME_ID\fP と
+\fBCLOCK_THREAD_CPUTIME_ID\fP のカーネル実装が利用できるシステム (すなわち Linux 2.6.12 以降)
+ではカーネル実装を利用することで、 上述の問題を回避している。
.SH バグ
.\" See http://bugzilla.kernel.org/show_bug.cgi?id=11972
POSIX.1\-2001 では、 「適切な特権 (appropriate privileges)」を持ったプロセスは、
\fBadjtime\fP(3), \fBclock_getcpuclockid\fP(3), \fBctime\fP(3), \fBftime\fP(3),
\fBpthread_getcpuclockid\fP(3), \fBsysconf\fP(3), \fBtime\fP(7)
.SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.53 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.67 の一部
である。プロジェクトの説明とバグ報告に関する情報は
http://www.kernel.org/doc/man\-pages/ に書かれている。