ADJTIMEX(2)

NAME
adjtimex - Einstellen der Kerneluhr

ÜBERSICHT
#include <sys/timex.h>

int adjtimex(struct timex *buf);

BESCHREIBUNG
Linux verwendet David Mills Algorithmus zur Justierung der Systemuhr. adjtimex liest und setzt auf Wunsch Einstellungsparameter für diesen Algorithmus.

adjtimex nimmt einen Zeiger auf eine Struktur timex, aktualisiert Kernelparameter aus den Feldwerten, und gibt die gleiche Struktur mit aktuellen Werten zurück. Diese Struktur ist wie folgt deklariert:

    struct timex
    {
        int mode;            /* mode selector */
        long offset;         /* Zeitoffset (usek) */
        long frequency;      /* Frequenzoffset (skalierte ppm) */
        long maxerror;       /* maximaler Fehler (usek) */
        long esterror;       /* geschätzter Fehler (usek) */
        int status;          /* Uhrkommando/-status */
        long time_constant;  /* pll Zeitkonstante */
        long precision;      /* Uhrpräzision (usec) (nur lesbar) */
        long tolerance;      /* Uhrfrequenztoleranz (ppm) (nur lesbar) */
        struct timeval time; /* (nur lesbar) */
        long tick;           /* usek zwischen Uhrticks */
    };

Das Feld mode bestimmt, welche Parameter, falls vorhanden, zu setzen sind. Es darf eine bitweise Oderverknüpfung von Null oder mehr der folgenden Bits enthalten:

    #define ADJ_OFFSET            0x0001 /* Zeitoffset */
    #define ADJ_FREQUENCY         0x0002 /* Frequenzoffset */
    #define ADJ_MAXERROR          0x0004 /* maximaler Zeitfehler */
    #define ADJ_ESTERROR          0x0008 /* geschätzter Zeitfehler */
    #define ADJ_STATUS            0x0010 /* Uhrstatus */
    #define ADJ_TIMECONST         0x0020 /* pll Zeitkonstante */
    #define ADJ_TICK              0x4000 /* Tickwert */
    #define ADJ_OFFSET_SINGLESHOT 0x8001 /* altmodisches adjtime */

Gewöhnliche Benutzer sind eingeschränkt auf einen Nullwert für mode. Nur der Superuser darf Parameter setzen.

RÜCKGABEWERT
Bei Erfolg gibt adjtimex den Wert von buf.status zurück:

    #define TIME_OK  0 /* Uhr synchronisiert */
    #define TIME_INS 1 /* füge Schaltsekunde ein */
    #define TIME_DEL 2 /* lösche Schaltsekunde */
    #define TIME_OOP 3 /* Schaltsekunde in Betrieb */
    #define TIME_BAD 4 /* Uhr nicht synchronisiert */

Im Fehlerfall gibt adjtimex -1 zurück und setzt errno.

FEHLER

EFAULT
    buf zeigt nicht auf beschreibbaren Speicher.

EPERM
    buf.mode ist nicht Null und der Benutzer ist nicht der Superuser.

EINVAL
    Ein Versuch wurde unternommen buf.offset zu setzen auf einen Wert außerhalb des Bereichs von -131071 bis +131071, oder buf.status auf einen Wert zu setzen, der nicht oben aufgeführt ist, oder buf.tick auf einen Wert außerhalb des Bereichs von 900000/HZ bis 1100000/HZ zu setzen, wobei HZ die Systemtimerinterupfrequenz ist.

SIEHE AUCH
settimeofday(2).