zion - adjtimex
Nom
adjtimex - Régler l'horloge du noyau (kernel clock).
Résumé
#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
.nf 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 */ }; .fi |
Le champ modes détermine les paramètres éventuels à écrire. Il contient un OU binaire ( | ) entre les valeurs suivantes:
.nf #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 */ .fi |
Les utilisateurs normaux sont limités à une valeur de mode nulle, seul le Super-User peut écrire les paramètres. .ne 12v
Valeur renvoyée
S'il réussit, adjtimex renvoie l'état de l'horloge :
.nf #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 */ .fi |
En cas d'échec adjtimex renvoie -1 et remplit errno .
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
Une tentative est faite de remplir buf.offset en dehors de l'intervalle -131071 à +131071, ou de mettre buf.status a 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. |
Conformité
adjtimex est spécifique à Linux, et ne doit pas être employé dans des programmes destinés à être portés sur d'autres systèmes. Un appel adjtime moins général existe sous SVr4.
Voir aussi
settimeofday (2).
Traduction
Christophe Blaess, 1996-2003.
Poster un commentaire