ADJTIMEX(2)

NOM
adjtimex - Régler l'horloge du noyau (kernel clock)

SYNOPSIS
#include <sys/timex.h>

int adjtimex(struct timex *buf);

DESCRIPTION
Linux utilise l'algorithme d'ajustement d'horloge de David L. Mills (RFC 1305). L'appel système adjtimex() lit, et écrit éventuellement les paramètres d'ajustement pour cet algorithme. Il utilise un pointeur sur une structure timex pour mettre à jour les paramètres du noyau avec les valeurs de ses champs, et renvoyer la même structure avec les valeurs actuelles du noyau. La structure est déclarée comme suit

    struct timex {
        int modes;           /* mode selector */
        long offset;         /* time offset (usec) */
        long freq;           /* frequency offset (scaled ppm) */
        long maxerror;       /* maximum error (usec) */
        long esterror;       /* estimated error (usec) */
        int status;          /* clock command/status */
        long constant;       /* pll time constant */
        long precision;      /* clock precision (usec) (read only) */
        long tolerance;      /* clock frequency tolerance (ppm)
                                (read only) */
        struct timeval time; /* current time (read only) */
        long tick;           /* usecs between clock ticks */
    };

Le champ modes détermine les paramètres éventuels à écrire. Il contient un OU binaire « | » entre les valeurs suivantes :

    #define ADJ_OFFSET            0x0001 /* time offset */
    #define ADJ_FREQUENCY         0x0002 /* frequency offset */
    #define ADJ_MAXERROR          0x0004 /* maximum time error */
    #define ADJ_ESTERROR          0x0008 /* estimated time error */
    #define ADJ_STATUS            0x0010 /* clock status */
    #define ADJ_TIMECONST         0x0020 /* pll time constant */
    #define ADJ_TICK              0x4000 /* tick value */
    #define ADJ_OFFSET_SINGLESHOT 0x8001 /* old-fashioned adjtime */

Les utilisateurs normaux sont limités à une valeur de mode nulle, seul le superutilisateur peut écrire les paramètres.

VALEUR RENVOYÉE
S'il réussit, adjtimex() renvoie l'état de l'horloge :

    #define TIME_OK   0 /* clock synchronized */
    #define TIME_INS  1 /* insert leap second */
    #define TIME_DEL  2 /* delete leap second */
    #define TIME_OOP  3 /* leap second in progress */
    #define TIME_WAIT 4 /* leap second has occurred */
    #define TIME_BAD  5 /* clock not synchronized */

En cas d'échec adjtimex() renvoie -1 et remplit errno.

ERREURS

EFAULT
    buf pointe en dehors de l'espace d'adressage accessible.

EINVAL
    Une tentative est faite de remplir buf.offset en dehors de l'intervalle -131071 à +131071, ou de mettre buf.status à une valeur autre que celle listée ci-dessus, ou buf.tick en dehors de l'intervalle 900000 HZ à 1100000 HZ, où HZ est la fréquence d'interruption de l'horloge système.

EPERM
    buf.mode est non nul, et l'appelant n'a pas suffisamment de privilèges. Sous Linux, la capacité CAP_SYS_TIME est nécessaire.

CONFORMITÉ
adjtimex() est spécifique à Linux, et ne doit pas être employé dans des programmes concus pour être portables. Voir adjtime(3) pour une méthode plus portable, mais non flexible, d'ajustement de l'horloge système.

VOIR AUSSI
settimeofday(2), adjtime(3), capabilities(7)

TRADUCTION

Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 14 octobre 1996 et révisée le 22 décembre 2007.

L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 2 adjtimex ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.