Man page - adjtimex(2)

Packages contains this manual

Available languages:

en fr it pl ja ru de

Manual

adjtimex

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
clock_adjtime ()
ntp_adjtime ()
VALEUR RENVOYÉE
ERREURS
ATTRIBUTS
STANDARDS
NOTES
VOIR AUSSI
TRADUCTION

NOM

adjtimex, clock_adjtime, ntp_adjtime - RĂ©gler l’horloge du noyau (kernel clock)

BIBLIOTHÈQUE

BibliothĂšque C standard ( libc , -lc )

SYNOPSIS

#include <sys/timex.h>

int adjtimex(struct timex * buf );

int clock_adjtime(clockid_t clk_id, struct timex * buf );

int ntp_adjtime(struct timex * buf );

DESCRIPTION

Linux utilise l’algorithme d’ajustement d’horloge de David L. Mills (voir la RFC 5905). 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 des champs (sĂ©lectionnĂ©s), et renvoyer la mĂȘme structure avec les valeurs actuelles du noyau. La structure est dĂ©clarĂ©e comme suit :

struct timex {
int modes; /* choix du mode */
long offset; /* décalage temporel ; nanosecondes, si drapeau
STA_NANO est défini, sinon
microseconde*/
long freq; /* décalage de fréquence ; unités, voir NOTES */
long maxerror; /* erreur maximale (microseconde) */
long esterror; /* erreur estimée (microseconde) */
int status; /* commande horloge/état */
long constant; /* constante de temps PLL */
long precision; /* prĂ©cision de l’horloge
(microseconde, lecture seule) */
long tolerance; /* tolérance fréquence horloge (lecture seule);
unités, voir NOTES */
struct timeval time;
/* heure actuelle (lecture seule, sauf pour
ADJ_SETOFFSET) ; sur renvoi, time.tv_usec
contient nanosecondes, si le drapeau
STA_NANO défini, sinon microsecondes */
long tick; /* microsecondes entre tics horloge */
long ppsfreq; /* fréquence PPS (pulse per second)
(lecture seule) ; unités, voir NOTES */
long jitter; /* jitter PPS (lecture seule) ; nanosecondes, si
drapeau état STA_NANO défini, sinon
microsecondes */
int shift; /* durée intervalle PPS
(secondes, lecture seule) */
long stabil; /* stabilité PPS (lecture seule);
unités, voir NOTES */
long jitcnt; /* nombre PPS dépassements limite de jitter
évÚnements (lecture seule)
long calcnt; /* nombre PPS d’intervalles de calibration
(lecture seule) */
long errcnt; /* nombre PPS d’erreurs de calibration
(lecture seule) */
long stbcnt; /* nombre PPS dépassements limite stabilité
évÚnements (lecture seule)
int tai; /* dĂ©calage TAI, comme dĂ©fini par l’opĂ©ration
ADJ_TAI (secondes, lecture seule,
depuis Linux 2.6.26) */
/* octets de remplissage supplémentaires pour une extension future*/
};

Le champ modes dĂ©termine les paramĂštres Ă©ventuels Ă  Ă©crire (comme dĂ©crit plus loin dans cette page, les constantes pour ntp_adjtime () sont Ă©quivalentes mais ont un nom diffĂ©rent). Il s’agit d’un masque binaire contenant une combinaison de OU binaire de zĂ©ros ou plusieurs des bits suivants :
ADJ_OFFSET

DĂ©finir la position de l’heure Ă  partir de buf.offset . Depuis Linux 2.6.26, la valeur fournie figure sur la plage (-0.5s, +0.5s). Sur les anciens noyaux, une erreur EINVAL survient si la valeur fournie sort de cette plage.

ADJ_FREQUENCY

Définir la position de la fréquence à partir de buf.freq . Depuis Linux 2.6.26, la valeur fournie figure sur la plage (-32768000, +32768000). Sur les anciens noyaux, une erreur EINVAL survient si la valeur fournie sort de cette plage.

ADJ_MAXERROR

DĂ©finir l’erreur de temps maximale Ă  partir de buf.maxerror .

ADJ_ESTERROR

DĂ©finir l’erreur de temps estimĂ©e Ă  partir de buf.esterror .

ADJ_STATUS

DĂ©finir les bits de l’état de l’horloge Ă  partir de buf.status . Une description de ces bits est disponible ci-dessous.

ADJ_TIMECONST

DĂ©finir la constante PLL de l’heure Ă  partir de buf.constant . Si le drapeau d’état STA_NANO (voir ci-dessous) est vide, le noyau ajoute 4 Ă  cette valeur.

ADJ_SETOFFSET (depuis Linux 2.6.39)

Ajouter buf.time Ă  l’heure actuelle. Si buf.status inclut le drapeau ADJ_NANO , buf.time.tv_usec est interprĂ©tĂ© comme une valeur en nanoseconde ; sinon il est interprĂ©tĂ© en microseconde.

La valeur de buf.time est la somme de ses deux champs, mais le champ buf.time.tv_usec doit toujours ĂȘtre positif. L’exemple suivant montre la maniĂšre de normaliser une timeval avec une rĂ©solution en nanoseconde.

while (buf.time.tv_usec < 0) {
buf.time.tv_sec -= 1;
buf.time.tv_usec += 1000000000;
}

ADJ_MICRO (depuis Linux 2.6.26)

Sélectionner la résolution en microseconde.

ADJ_NANO (depuis Linux 2.6.26)

Sélectionner la résolution en nanoseconde. Vous ne devriez spécifier que ADJ_MICRO ou ADJ_NANO .

ADJ_TAI (depuis Linux 2.6.26)

Définir la position du TAI (temps atomique international) à partir de buf.constant .

ADJ_TAI ne devrait pas ĂȘtre utilisĂ© avec ADJ_TIMECONST , puisque le dernier mode utilise Ă©galement le champ buf.constant .

Pour une explication complÚte du temps atomique international (TAI) et de la différence entre ce temps et celui universel coordonné (UTC), voir BIPM

ADJ_TICK

DĂ©finir la valeur d’un tic Ă  partir de buf.tick .

Autrement, modes peut ĂȘtre indiquĂ© sous la forme de valeurs suivantes (masque multibit), auquel cas aucun autre bit ne devrait ĂȘtre spĂ©cifiĂ© dans modes :
ADJ_OFFSET_SINGLESHOT

adjtime (3) Ă  l’ancienne : ajuster (graduellement) l’heure avec des valeurs spĂ©cifiĂ©es dans buf.offset , ce qui indique un ajustement en microseconde.

ADJ_OFFSET_SS_READ (fonctionnel depuis Linux 2.6.28)

Renvoyer (dans buf.offset ) le temps restant Ă  ajuster aprĂšs une prĂ©cĂ©dente opĂ©ration ADJ_OFFSET_SINGLESHOT . Cette fonctionnalitĂ© a Ă©tĂ© ajoutĂ©e dans Linux 2.6.24, mais elle ne fonctionnait pas correctement jusqu’à Linux 2.6.28.

Les utilisateurs normaux sont limitĂ©s Ă  une valeur de modes nulle ou ADJ_OFFSET_SS_READ . Seul le superutilisateur peut Ă©crire n’importe quel paramĂštre.

Le champ buf.status est un masque de bits utilisĂ© pour dĂ©finir et/ou rĂ©cupĂ©rer les bits d’état associĂ©s Ă  l’implĂ©mentation NTP. Certains bits du masque sont lisibles et modifiables, alors que d’autres ne sont qu’en lecture seule.
STA_PLL
(lecture-écriture)

Activer les mises Ă  jour « phase-locked loop » (PLL) Ă  l’aide de ADJ_OFFSET .

STA_PPSFREQ (lecture-écriture)

Activer le mode de fréquence PPS (pulse-per-second ou battement par seconde).

STA_PPSTIME (lecture-écriture)

Activer le mode temporel PPS.

STA_FLL (lecture-écriture)

Sélectionner le mode « frequency-locked loop » (FLL).

STA_INS (lecture-écriture)

InsĂ©rer un saut d’une seconde aprĂšs la derniĂšre seconde de la journĂ©e UTC, ce qui Ă©tend ainsi la derniĂšre minute de la journĂ©e d’une seconde. L’insertion d’un tel saut s’effectuera chaque jour tant que ce drapeau est positionnĂ©.

STA_DEL (lecture-écriture)

Supprimer le saut d’une seconde Ă  la derniĂšre seconde de la journĂ©e UTC. Une telle suppression se produira chaque jour tant que ce drapeau est positionnĂ©.

STA_UNSYNC (lecture-écriture)

Horloge non synchronisée.

STA_FREQHOLD (lecture-écriture)

Conserver la frĂ©quence. Normalement, il rĂ©sulte des ajustements effectuĂ©s avec ADJ_OFFSET des ajustements de frĂ©quence amortis. Un seul appel corrige donc la position actuelle, mais comme les compensations dans le mĂȘme sens se rĂ©pĂštent, les petits ajustements de frĂ©quence s’accumuleront pour corriger le dĂ©calage Ă  long terme.

Ce drapeau empĂȘche les petits ajustements de frĂ©quence lors de la correction d’une valeur ADJ_OFFSET .

STA_PPSSIGNAL (lecture seule)

Un signal PPS (pulse-per-second, ou battement par seconde) valable est présent.

STA_PPSJITTER (lecture seule)

Fluctuation de signal (jitter) PPS excessive.

STA_PPSWANDER (lecture seule)

Dérive de signal (wander) PPS excessive.

STA_PPSERROR (lecture seule)

Erreur de calibrage du signal PPS.

STA_CLOCKERR (lecture seule)

Erreur d’horloge matĂ©rielle.

STA_NANO (lecture seule ; depuis Linux 2.6.26)

RĂ©solution (0 = microseconde, 1 = nanoseconde). PositionnĂ© Ă  l’aide de ADJ_NANO , annulĂ© Ă  l’aide de ADJ_MICRO .

STA_MODE (depuis Linux 2.6.26)

Mode (0 = Phase Locked Loop, 1 = Frequency Locked Loop).

STA_CLK (en lecture seule ; depuis Linux 2.6.26)

Source de l’horloge (0 = A, 1 = B) ; actuellement inusitĂ©.

Les tentatives de positionner des bits d’ Ă©tat qui sont en lecture seule sont ignorĂ©es silencieusement.

clock_adjtime ()

L’appel systĂšme clock_adjtime () (ajoutĂ© Ă  Linux 2.6.39) se comporte comme adjtimex () mais il prend un paramĂštre clk_id supplĂ©mentaire pour indiquer sur quelle horloge spĂ©cifique agir.

ntp_adjtime ()

La fonction de bibliothĂšque ntp_adjtime () (dĂ©crite dans le « Kernel Application Program API », KAPI) est une interface plus portable pour effectuer la mĂȘme tĂąche que adjtimex (). À part les points suivants, elle est identique Ă  adjtimex () :

-

Les constantes utilisĂ©es dans les modes sont prĂ©fixĂ©es de « MOD_ » au lieu de « ADJ_ » et elles ont les mĂȘmes suffixes ( MOD_OFFSET , MOD_FREQUENCY , et ainsi de suite), sauf les exceptions indiquĂ©es dans les points suivants.

-

MOD_CLKA est le synonyme de ADJ_OFFSET_SINGLESHOT .

-

MOD_CLKB est le synonyme de ADJ_TICK .

-

Il n’existe pas de synonyme pour ADJ_OFFSET_SS_READ , non dĂ©crit dans la KAPI.

VALEUR RENVOYÉE

S’ils rĂ©ussissent, adjtimex () et ntp_adjtime () renvoient l’état de l’horloge ; c’est-Ă -dire une des valeurs suivantes :

TIME_OK

Horloge synchronisée, aucun ajustement de saut de seconde en attente.

TIME_INS

Indication qu’un saut de seconde sera ajoutĂ© Ă  la fin de la journĂ©e UTC.

TIME_DEL

Indication que le saut de seconde sera retiré en fin de journée UTC.

TIME_OOP

L’insertion d’un saut de seconde est en cours.

TIME_WAIT

L’insertion ou la suppression d’un saut de seconde a Ă©tĂ© terminĂ©e. Cette valeur sera renvoyĂ©e jusqu’à ce qu’une prochaine opĂ©ration ADJ_STATUS ne vide les drapeaux STA_INS et STA_DEL .

TIME_ERROR

L’horloge systĂšme n’est pas synchronisĂ©e avec un serveur fiable. Cette valeur est renvoyĂ©e si un des Ă©lĂ©ments suivants reste vrai :

-

STA_UNSYNC ou STA_CLOCKERR est défini.

-

STA_PPSSIGNAL est vide et soit STA_PPSFREQ , soit STA_PPSTIME est positionné.

-

STA_PPSTIME STA_PPSJITTER sont tous deux définis.

-

STA_PPSFREQ est défini et soit STA_PPSWANDER , soit STA_PPSJITTER est défini.

Le nom symbolique TIME_BAD est synonyme de TIME_ERROR , fourni pour des raisons de rétrocompatibilité.

Remarquez qu’à partir de Linux 3.4, l’appel agit de maniĂšre asynchrone et la valeur renvoyĂ©e ne reflĂštera en gĂ©nĂ©ral pas un changement d’état provoquĂ© par l’appel lui-mĂȘme.

En cas d’échec, ces appels renvoient -1 et dĂ©finissent errno pour indiquer l’erreur.

ERREURS

EFAULT

buf pointe en dehors de l’espace d’adressage accessible en Ă©criture.

EINVAL (avant Linux 2.6.26)

Vous avez essayé de positionner buf.freq sur une valeur au-delà de la plage (-33554432, +33554432).

EINVAL (avant Linux 2.6.26)

Vous avez essayé de positionner buf.offset sur une valeur au-delà de la plage autorisée. Avant Linux 2.0, la plage autorisée était (-131072, +131072). Depuis Linux 2.0, la plage autorisée est (-512000, +512000).

EINVAL

Vous avez essayé de positionner buf.status sur une valeur différente de celles indiquées ci-dessus.

EINVAL

Le clk_id donnĂ© Ă  clock_adjtime () n’est pas valable pour une de ces deux raisons. Soit la valeur positive de l’ID de l’horloge codĂ©e en dur Ă  la maniĂšre de System-V dĂ©passe l’intervalle, soit le clk_id dynamique ne se rapporte pas Ă  une instance valable d’une horloge. Voir clock_gettime (2) pour un point sur les horloges dynamiques.

EINVAL

Une tentative a Ă©tĂ© faite de dĂ©finir buf.tick en dehors de l’intervalle 900000/ HZ Ă  1100000/ HZ , oĂč HZ est la frĂ©quence d’interruption de l’ordonnanceur du systĂšme.

ENODEV

Le pĂ©riphĂ©rique qu’on peut brancher Ă  chaud (comme en USB par exemple) reprĂ©sentĂ© par un clk_id dynamique a disparu aprĂšs avoir Ă©tĂ© ouvert. Voir clock_gettime (2) pour un point sur les horloges dynamiques.

EOPNOTSUPP

Le clk_id fourni ne prend pas en charge l’ajustement.

EPERM

buf.modes n’est ni nul ni ADJ_OFFSET_SS_READ , et l’appelant n’a pas suffisamment de privilĂšges. Sous Linux, la capacitĂ© CAP_SYS_TIME est nĂ©cessaire.

ATTRIBUTS

Pour une explication des termes utilisés dans cette section, consulter attributes (7).

Image grohtml-3856479-1.png

STANDARDS

adjtimex ()
clock_adjtime
()

Linux.

L’API prĂ©fĂ©rĂ©e pour le dĂ©mon NTP est ntp_adjtime ().

NOTES

Dans une structure timex , freq , ppsfreq et stabil sont des ppm (parts per million) avec une partie dĂ©cimale de 16 bits, ce qui veut dire qu’une valeur de 1 dans un de ces champs veut dire en fait 2^-16 ppm et 2^16=65536 vaut 1 ppm. Cela vaut tant pour les valeurs en entrĂ©e (dans le cas de freq ) que celles en sortie.

Le traitement du saut de seconde effectuĂ© par STA_INS et STA_DEL se fait par le noyau dans le contexte de l’ordonnanceur. Ainsi, il prendra un tic de la seconde pour insĂ©rer ou supprimer un saut de seconde.

VOIR AUSSI

clock_gettime (2), clock_settime (2), settimeofday (2), adjtime (3), ntp_gettime (3), capabilities (7), time (7), adjtimex (8), hwclock (8)
NTP "Kernel Application Program Interface"

TRADUCTION

La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et Jean-Philippe MENGUAL <jpmengual@debian.org>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n’y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .