ADJTIMEX(2)

NOM
adjtimex - Regler 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 Mill. adjtimex lit, et ecrit eventuellement les parametres d'ajustement pour cet algorithme.

adjtimex utilise un pointeur sur une structure timex pour mettre a jour les parametres du noyau avec les valeurs de ses champs, et renvoyer la meme structure avec les valeurs actuelles du noyau. La structure est declaree comme suit

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

Le champ mode determine les parametres eventuels a ecrire. 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 limites a une valeur de mode nulle, seul le Super-User peut ecrire les parametres.

VALEUR RENVOYEE
adjtimex renvoie la valeur de buf.status s'il reussit :

    #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_BAD 4 /* clock not synchronized */

En cas d'echec adjtimex renvoie -1 et errno contient le code d'erreur.

ERREURS

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

EPERM
    buf.mode est non nul, et l'utilisateur n'est pas Super-User.

EINVAL
    buf.offset est en dehors de l'intervalle -131071 a +131071, ou buf.status a une valeur autre que celle listee ci-dessus, ou buf.tick est en dehors de l'intervalle 900000/HZ a 1100000/HZ, HZ etant la frequence d'interruption de l'horloge systeme.

CONFORMITE
adjtimex est specifique a Linux, et ne doit pas etre employe dans des programmes destines a etre portes sur d'autres systemes. Un appel adjtime moins general existe sous SVr4.

VOIR AUSSI
settimeofday(2).