tail head cat sleep
QR code linking to this page

manページ  — NTP_ADJTIME

名称

ntp_adjtime – NTP デーモンアプリケーションインタフェース

内容

書式

#include <sys/types.h>
#include <sys/timex.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 で、閏秒の警告もありません。
TIME_INS 閏秒挿入の警告です。
TIME_DEL 閏秒削除の警告です。
TIME_OOP 閏秒の経過中です。
TIME_WAIT 閏秒が発生しました。
TIME_ERROR クロックが同期していません。

エラー

ntp_gettime() システムコールは、呼び出し側が十分なパーミッションを持っていない場合に、 EPERM を返すことがあります。

関連項目

ntp_gettime(2), ntpd(8)

作者

このマニュアルページは Tom Rhodes <trhodes@FreeBSD.org> が書きました。

NTP_ADJTIME (2) April 1, 2003

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.

Computer science would have progressed much further and faster if all of the time and effort that has been spent maintaining and nurturing Unix had been spent on a sounder operating system.
— The Unix Haters' handbook