ADJTIME(3)

NOM
adjtime - Ajuster le temps pour synchroniser l'horloge système

SYNOPSIS
int adjtime(const struct timeval *delta, struct timeval *olddelta);

Exigences de macros de test de fonctionnalités pour la glibc (voir
feature_test_macros(7)) :

adjtime() :
_BSD_SOURCE

DESCRIPTION
La fonction adjtime() ajuste de manière graduelle l'horloge système (comme renvoyée par gettimeofday(2)). La quantité de temps par laquelle l'horloge doit être ajustée est spécifiée dans la structure pointée par delta. Cette structure a la forme suivante :
struct timeval {
    time_t      tv_sec;     /* secondes */
    suseconds_t tv_usec;    /* microsecondes */
};

Si la valeur d'ajustement dans delta est positive, l'horloge système est accélérée par un faible pourcentage (c'est-à-dire en ajoutant chaque seconde une petite quantité de temps à la valeur de l'horloge) jusqu'à ce que l'ajustement soit effectué. Si la valeur d'ajustement dans delta est négative, l'horloge est ralentie selon le même procédé. Si un ajustement d'horloge d'un précédent appel à adjtime() est déjà en cours au moment d'un nouvel appel à adjtime() et si delta n'est pas NULL lors de ce dernier appel, l'ajustement précédent est arrêté mais la partie de l'ajustement déjà effectuée n'est pas annulée. Si olddelta n'est pas NULL, le tampon sur lequel il pointe est utilisé pour renvoyer la quantité de temps restant de tout ajustement précédent qui n'a pas encore été effectué.

VALEUR RENVOYÉE
Si elle réussit adjtime() renvoie 0. Si elle échoue, elle renvoie -1 et écrit errno contient le code d'erreur.

ERREURS

EINVAL
    La valeur d'ajustement dans delta est en dehors de l'intervalle autorisé.

EPERM
    L'appelant n'a pas les privilèges suffisants pour ajuster le temps. Sous Linux, la capacité CAP_SYS_TIME est nécessaire.

CONFORMITÉ
BSD 4.3, System V.

NOTES
L'ajustement réalisé par adjtime() sur l'horloge est exécuté de telle manière que l'horloge est toujours monotoniquement augmentée. L'utilisation de adjtime() pour ajuster le temps empêche les problèmes qui pourraient être provoqués pour certaines applications (par exemple, make(1)) par des sauts brutaux, positifs ou négatifs, dans le temps système. adjtime() est conçue pour effectuer de petits ajustements sur le temps système. La plupart des systèmes impose une limite sur la valeur de l'ajustement que l'on peut spécifier dans delta. Dans l'implémentation de la glibc, delta doit être inférieur ou égal à (INT_MAX / 1000000 - 2) et supérieur ou égal à (INT_MIN / 1000000 + 2) (respectivement 2145 et -2145 secondes sur i386).

BOGUES
Un bogue de longue date faisait que si delta valait NULL, aucune information valide sur l'ajustement en cours de l'horloge n'était renvoyée dans olddelta. (Dans cette circonstance, adjtime() devrait renvoyer l'ajustement en cours de l'horloge, sans la modifier.) Ce bogue a été corrigé sur les systèmes disposant de la glibc 2.8 ou suivantes et le noyau Linux 2.69.26 ou suivants.

VOIR AUSSI
adjtimex(2), gettimeofday(2), time(7)

TRADUCTION

Ce document est une traduction réalisée par Alain Portal <aportal AT univ-montp2 DOT fr> le 4 août 2006 et révisée le 17 juillet 2008.

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 3 adjtime ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.