Loading

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

       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_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.
       (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.23  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> ».

                                5 février 2009