Provided by: manpages-fr-dev_3.17.1-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  (voir
   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 le début de l’Ère
       Unix (01-01-1970  GMT  00:00).  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_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.
       (Voyez aussi sysconf(3).)

NOTES

   Note pour les systèmes multiprocesseurs (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,   les   horloges   CLOCK_PROCESS_CPUTIME_ID   et
       CLOCK_THREAD_CPUTIME_ID   devraient   pouvoir   être   définies    avec
       clock_settime(). Cependant, ces horloges ne sont pas définissable.

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.17 du projet man-pages
       Linux. Une description du projet et des instructions pour signaler  des
       anomalies       peuvent       être       trouvées      à      l’adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Cette page de manuel a été traduite et mise à  jour  par  Alain  Portal
       <aportal  AT  univ-montp2  DOT  fr>  entre  2004  et  2006,  et  mise à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Florentin Duneau <fduneau@gmail.com> et l’équipe
       francophone de traduction de Debian.

       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> ».

                               7 septembre 2008                CLOCK_GETRES(3)