adjtime - ライブラリコールの説明 - Linux コマンド集 一覧表
名前
adjtime - システムクロックに同期する時刻を調整する
書式
#define _BSD_SOURCE
int adjtime(const struct timeval *delta, struct timeval *olddelta);
説明
adjtime
()関数は
(
gettimeofday
()が返す) システムクロックを徐々に調整する。
調整すべきクロックの時間量は
delta
が指す構造体で指定される。
この構造体は以下の形である:
struct timeval { time_t tv_sec; /* 秒 */ suseconds_t tv_usec; /* マイクロ秒 */ };
delta
の調整量が正の場合、調整量に達するまでシステムクロックを
少し割合だけスピードアップさせる (つまり、毎秒クロック値に少しだけ
時刻を加算する)。
delta
の調整量が負の場合、同様の方法でクロックを遅くする。
adjtime
()が呼び出されたときに以前の
adjtime
()の呼び出しによるクロックの調整がまだ実行中で、かつ後の
adjtime
()の
delta
が NULL でない場合、実行中の調整は停止される。
しかし、すでに実行された調整の取り消しは行われない。
olddelta
が NULL でない場合、
olddelta
が指すバッファに、過去の調整要求でまだ完了せず残っている時間量が
格納して返される。
注意
adjtime
()が行うクロックの調整は、クロックは常に単調増加するという範囲内で
実行される。
adjtime
()を使って時刻を調整することで、システムタイムの突然の正や負のジャンプ
により、いくつかのアプリケーション (例えば
make
(1) など) に起こる問題を防ぐことができる。
adjtime
()はシステム時刻に少しずつ調整を行うために使用されることを期待されている。
ほとんどのシステムでは、
delta
に指定できる調整量に制限を課している。
glibc の実装では、
delta
は (INT_MIN / 1000000 + 2) 以上 (INT_MAX / 1000000 - 2) 以下
(x86 では -2145 以上 2145 以下) でなければならない。
返り値
成功すると、 adjtime ()は 0 を返す。失敗すると、-1 を返し、 errno にエラーを示す値をセットする。
エラー
- EINVAL
- delta で指定された調整量が許可された範囲に入っていない。
- EPERM
- 呼び出し者が時刻を調整するのに必要な権限を持っていない。 Linux では CAP_SYS_TIME ケーパビリティが必要である。
準拠
4.3BSD, System V.
関連項目
adjtimex
(2),
gettimeofday
(2),
time
(7)