NTP_ADJTIME(2) FreeBSD システムコールマニュアル NTP_ADJTIME(2)
名称
ntp_adjtime − NTP デーモンアプリケーションインタフェース |
書式
#include <sys/types.h> int |
ntp_adjtime(struct timex *tp); |
解説 |
ntp_adjtime() システムコールは Network Time Protocol (ネットワークタイム プロトコル) デーモン ntpd(8) のためのカーネルインタフェースとして使用され ます。 timex 構造体の特定のフィールドは、 status ワードの STA_NANO ビット の状態に従って、マイクロ秒またはナノ秒に変換されます。 FreeBSD カーネルの中では、 ntp_adjtime() および ntp_gettime(2) システム コールはどちらの分解能を使用するかを決定するために、またはもう一方を選択 するために、いつでも使用することが可能です。選択された分解能は、 ntp_gettime() および ntp_adjtime() システムコールの中の特定のフィールドの スケーリングに影響を及ぼします。 この API は非常に複雑で、状態があることに注意してください。ユーザは、はじ めに ntpd(8) のソースを徹底的に吟味することなしに、修正を試みるべきではあ りません。 /* * NTP デーモンインタフェース (ntp_adjtime()) - CPU クロック発振器の * 制御規約と状態の決定のために使用されます。 * * 注意: offset, precision および jitter メンバは STA_NANO が 0 であれば * マイクロ秒で、そうでなければナノ秒です。 */ struct timex { |
unsigned int modes; |
/* クロックモードビット (wo) */ |
||||
long |
offset; |
/* 時刻オフセット (ns/us) (rw) */ |
|||
long |
freq; |
/* 周波数オフセット (PPM 単位) (rw) */ |
|||
long |
maxerror; |
/* 最大誤差 (us) (rw) */ |
|||
long |
esterror; |
/* 推定誤差 (us) (rw) */ |
|||
int |
status; |
/* クロック状態ビット (rw) */ |
|||
long |
constant; |
/* ポール間隔 (log2 s) (rw) */ |
|||
long |
precision; |
/* 時刻の精度 (ns/us) (ro) */ |
|||
long |
tolerance; |
/* クロック周波数の公差 (PPM 単位) (ro) */ |
|||
/* |
|||||
* 以下の読み取り専用の構造体メンバは、カーネル内に PPS |
|||||
* シグナル制御規約がコンフィギュレーションされている場合のみ |
|||||
* 実装されます。これらはポータビリティを保証するために、全ての |
|||||
* コンフィギュレーションに含まれます。 |
|||||
*/ |
|||||
long |
ppsfreq; |
/* PPS 周波数 (PPM 単位) (ro) */ |
|||
long |
jitter; |
/* PPS ジッタ (ns/us) (ro) */ |
|||
int |
shift; |
/* 存続期間 (s) (シフト) (ro) */ |
|||
long |
stabil; |
/* PPS 安定性 (PPM 単位) (ro) */ |
|||
long |
jitcnt; |
/* 超過したジッタ制限 (ro) */ |
|||
long |
calcnt; |
/* 測定間隔 (ro) */ |
|||
long |
errcnt; |
/* 測定誤差 (ro) */ |
|||
long |
stbcnt; |
/* 超過した安定性制限 (ro) */ |
}; 成功して完了したときには、 ntp_adjtime() は tp 引数に現在のクロックの状態 を入れます。 |
戻り値
成功時には完了したクロック状態が返されます。そうでなければ、−1 が返されグ ローバル変数 errno がそのエラーを示すために設定されます。 起こりうるクロックの状態は以下のとおりです: |
TIME_OK
全てが OK で、閏秒の警告もありません。 エラー |
ntp_gettime() システムコールは、呼び出し側が十分なパーミッションを持って いない場合に、 EPERM を返すことがあります。 |
関連項目
作者
このマニュアルページは Tom Rhodes 〈trhodes@FreeBSD.org〉 が書きました。 FreeBSD 10.0 April 1, 2003 FreeBSD 10.0 |