Provided by: manpages-fr-dev_3.57d1p1-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);

       Lier avec -lrt (seulement pour les versions de glibc antérieures à 2.17).

   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 système qui mesure le temps réel (c'est-à-dire comme une pendule). Modifier
              cette horloge nécessite des privilèges adéquats. Cette horloge  est  concernée  par
              les  sauts discontinus de l'heure système (c'est-à-dire si l'administrateur modifie
              l'heure lui-même), et par les ajustements incrémentaux effectués par adjtime(3)  et
              NTP.

       CLOCK_REALTIME_COARSE (depuis Linux 2.6.32 ; spécifique à Linux)
              Horloge  plus rapide mais moins précise que CLOCK_REALTIME. À utiliser pour obtenir
              rapidement des données d'horodatage avec une résolution grossière.

       CLOCK_MONOTONIC
              Horloge non configurable qui représente un temps monotone depuis une date de  début
              arbitraire.  Cette horloge n'est pas concernée par les sauts discontinus de l'heure
              système (c'est-à-dire si  l'administrateur  modifie  l'heure  lui-même),  mais  est
              affectée par les ajustements incrémentaux effectués par adjtime(3) et NTP.

       CLOCK_MONOTONIC_COARSE (depuis Linux 2.6.32 ; spécifique à Linux)
              Horloge plus rapide mais moins précise que CLOCK_MONOTONIC. À utiliser pour obtenir
              rapidement des données d'horodatage avec une résolution grossière.

       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  ni aux ajustements NTP ni aux ajustements incrémentaux effectués
              par adjtime(3).

       CLOCK_BOOTTIME (depuis Linux 2.6.39 ; spécifique à Linux)
              Horloge identique à CLOCK_MONOTONIC, mais qui prend également en  compte  le  temps
              écoulé  pendant  la  veille  du  système.  Cela  offre aux applications une horloge
              monotone tenant compte des  veilles,  sans  avoir  à  s'occuper  des  problèmes  de
              discontinuités de CLOCK_REALTIME si l'horloge est mise à jour avec settimeofday(2).

       CLOCK_PROCESS_CPUTIME_ID (depuis Linux 2.6.12)
              Horloge  CPU  par  processus  (mesurant  le  temps processeur consommé par tous les
              threads du processus).

       CLOCK_THREAD_CPUTIME_ID (depuis Linux 2.6.12)
              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.

VERSIONS

       Ces appels système sont apparus dans Linux 2.6.

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 historique pour les systèmes multiprocesseur (SMP)
       Avant  la  prise  en  charge  par  le   noyau   Linux   de   CLOCK_PROCESS_CPUTIME_ID   et
       CLOCK_THREAD_CPUTIME_ID, la glibc a mis en œuvre ces horloges 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.

       Depuis  la glibc 2.4, les fonctions qui encapsulent les appels systèmes décrits dans cette
       page permettent d'éviter les problèmes mentionnés  ci-dessus  en  utilisant  les  horloges
       CLOCK_PROCESS_CPUTIME_ID  et  CLOCK_THREAD_CPUTIME_ID  du  noyau,  lorsque  celles-ci sont
       disponibles (c'est-à-dire les versions de Linux 2.6.12 et ultérieures).

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),  gettimeofday(2),  settimeofday(2),  time(2), adjtime(3), clock_getcpuclockid(3),
       ctime(3), ftime(3), pthread_getcpuclockid(3), sysconf(3), time(7)

COLOPHON

       Cette page fait partie de la publication 3.57 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

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

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

                                         28 décembre 2013                         CLOCK_GETRES(2)