Provided by: manpages-fr-dev_3.32d0.2p4-1_all bug

NOM

       clock_getres, clock_gettime, clock_settime - Fonctions d'horloge et de temps

SYNOPSIS

       #include <time.h>

       int clock_getres(clockid_t clk_id, struct timespec *res);

       int clock_gettime(clockid_t clk_id, struct timespec *tp);

       int clock_settime(clockid_t clk_id, const struct timespec *tp);

       Effectuez l'édition des liens avec l'option -lrt.

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

       clock_getres(), clock_gettime(), clock_settime() :
              _POSIX_C_SOURCE >= 199309L

DESCRIPTION

       La fonction clock_getres() cherche la résolution (précision) de l'horloge clk_id spécifiée
       et  si  res est non NULL, elle l'enregistre dans la structure timespec pointée par res. La
       résolution des horloges dépend de l'implémentation et ne peut pas être configurée  par  un
       processus  particulier.  Si la valeur du temps pointé par l'argument tp de clock_settime()
       n'est pas un multiple de res, cette valeur est tronquée à un multiple de res.

       Les fonctions clock_gettime() et clock_settime() récupèrent et  configurent  le  temps  de
       l'horloge clk_id spécifiée.

       Les arguments res et tp sont des structures timespec définies dans <time.h> :

           struct timespec {
               time_t   tv_sec;        /* secondes */
               long     tv_nsec;       /* nanosecondes */
           };

       L'argument  clk_id  est  l'identifiant  d'une  horloge particulière sur laquelle agir. Une
       horloge peut être globale au système, et par conséquent visible de tous les processus,  ou
       propre à un processus, si elle mesure le temps uniquement pour celui-ci.

       Toutes   les  implémentations  supportent  l'horloge  temps  réel  globale,  laquelle  est
       identifiée par CLOCK_REALTIME. Son temps représente le nombre de secondes et  nanosecondes
       écoulées  depuis  l'époque  UNIX  (1er janvier 1970 à 00:00:00 UTC). Lorsque son temps est
       modifié, les horloges mesurant un intervalle de temps ne  sont  pas  affectées  alors  que
       celles indiquant une date (heure) absolue le sont.

       Plusieurs  horloges  peuvent  être  implémentées.  L'interprétation  des  valeurs de temps
       correspondantes et l'effet sur les temporisateurs ne sont pas spécifiés.

       Les versions suffisamment récentes de la glibc et  du  noyau  Linux  gèrent  les  horloges
       suivantes :

       CLOCK_REALTIME
              Horloge  temps  réel globale au système. Configurer cette horloge nécessite d'avoir
              les privilèges appropriés.

       CLOCK_MONOTONIC
              Horloge non configurable qui représente un temps monotone depuis une date de  début
              arbitraire.

       CLOCK_MONOTONIC_RAW (depuis Linux 2.6.28 ; spécifique à Linux)
              Similaire  à  CLOCK_MONOTONIC, mais fournit un accès direct à un temps matériel qui
              n'est pas sujet aux ajustements NTP.

       CLOCK_PROCESS_CPUTIME_ID
              Horloge CPU haute résolution pour processus.

       CLOCK_THREAD_CPUTIME_ID
              Horloge CPU spécifique aux threads.

VALEUR RENVOYÉE

       clock_gettime(), clock_settime() et clock_getres() renvoient 0 si elles réussissent ou  -1
       si elles échouent, auquel cas errno contient le code d'erreur.

ERREURS

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

       EINVAL L'horloge clk_id spécifiée n'est pas supportée sur ce système.

       EPERM  clock_settime() n'a pas l'autorisation de configurer l'horloge spécifiée.

CONFORMITÉ

       SUSv2, POSIX.1-2001.

DISPONIBILITÉ

       Sur  les  systèmes  conformes  à  la  spécification  POSIX sur lesquels ces fonctions sont
       disponibles, la constante symbolique _POSIX_TIMERS est définie dans <unistd.h> comme étant
       une   valeur   supérieure   à   0.   Les  constantes  symboliques  _POSIX_MONOTONIC_CLOCK,
       _POSIX_CPUTIME,      _POSIX_THREAD_CPUTIME      indiquent       que       CLOCK_MONOTONIC,
       CLOCK_PROCESS_CPUTIME_ID,   CLOCK_THREAD_CPUTIME_ID  sont  disponibles.  (Consultez  aussi
       sysconf(3).)

NOTES

   Note pour les systèmes multiprocesseur (SMP)
       Les horloges CLOCK_PROCESS_CPUTIME_ID et CLOCK_THREAD_CPUTIME_ID sont réalisées  sur  bien
       des  plate-formes  en  utilisant  les  temporisateurs  des  CPU  (TSC sur i386, AR.ITC sur
       Itanium). Les registres peuvent être  différents  entre  CPU  avec  pour  conséquence  des
       résultats bidons pour ces horloges si un processus a été transféré sur une autre CPU.

       Si les CPU d'un système multiprocesseur ont différentes sources d'horloges, il n'y a aucun
       moyen de maintenir une corrélation entre les registres temporisateur  puisque  chaque  CPU
       tournera  à  une  fréquence légèrement différente. Si c'est le cas, clock_getcpuclockid(0)
       renverra ENOENT pour signifier cette condition. Les deux horloges seront donc utiles si on
       peut être certain que le processus reste sur un CPU en particulier.

       Les  processeurs  d'un système multiprocesseur ne démarrent pas exactement au même moment,
       ainsi les registres temporisateurs sont lancés avec un décalage.  Certaines  architectures
       incluent  un  code  pour tenter de limiter ce décalage au démarrage. Toutefois, ce code ne
       garantit pas l'accord précis des décalages. La glibc  ne  contient  rien  pour  gérer  ces
       décalages  (à  la  différence  du  noyau Linux). Typiquement, ces décalages sont petits et
       ainsi, leurs effets peuvent être négligeable dans la plupart des cas.

BOGUES

       Selon POSIX.1-2001, un  processus  avec  des  « privilèges  adéquats »  peut  changer  les
       horloges  CLOCK_PROCESS_CPUTIME_ID  et  CLOCK_THREAD_CPUTIME_ID avec clock_settime(). Sous
       Linux, ces horloges ne peuvent pas être modifiées (c'est-à-dire qu'aucun processus n'a  de
       « privilèges adéquats »).

VOIR AUSSI

       date(1),  adjtimex(2),  gettimeofday(2), settimeofday(2), time(2), clock_getcpuclockid(3),
       ctime(3), ftime(3), pthread_getcpuclockid(3), sysconf(3), time(7)

COLOPHON

       Cette page fait partie de la publication 3.32 du projet man-pages Linux.  Une  description
       du  projet  et  des  instructions  pour  signaler  des  anomalies  peuvent être trouvées à
       l'adresse <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

       Depuis   2010,   cette   traduction   est   maintenue   à   l'aide   de    l'outil    po4a
       <URL:http://po4a.alioth.debian.org/>  par  l'équipe  de  traduction francophone au sein du
       projet perkamon <URL:http://perkamon.alioth.debian.org/>.

       Alain Portal <URL:http://manpagesfr.free.fr/> (2004-2006). Florentin  Duneau  et  l'équipe
       francophone de traduction de Debian (2006-2009).

       Veuillez     signaler     toute     erreur     de     traduction     en     écrivant     à
       <debian-l10n-french@lists.debian.org>  ou  par  un  rapport  de  bogue   sur   le   paquet
       manpages-fr.

       Vous  pouvez  toujours  avoir  accès  à la version anglaise de ce document en utilisant la
       commande « man -L C <section> <page_de_man> ».

                                          3 février 2010                          CLOCK_GETRES(2)