Provided by:
manpages-fr-dev_3.27fr1.4-1_all 
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'edition des liens avec l'option -lrt.
Exigences de macros de test de fonctionnalites 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 resolution (precision) de
l'horloge clk_id specifiee et si res est non NULL, elle l'enregistre
dans la structure timespec pointee par res. La resolution des horloges
depend de l'implementation et ne peut pas etre configuree par un
processus particulier. Si la valeur du temps pointe par l'argument tp
de clock_settime() n'est pas un multiple de res, cette valeur est
tronquee a un multiple de res.
Les fonctions clock_gettime() et clock_settime() recuperent et
configurent le temps de l'horloge clk_id specifiee.
Les arguments res et tp sont des structures timespec definies dans
<time.h> :
struct timespec {
time_t tv_sec; /* secondes */
long tv_nsec; /* nanosecondes */
};
L'argument clk_id est l'identifiant d'une horloge particuliere sur
laquelle agir. Une horloge peut etre globale au systeme, et par
consequent visible de tous les processus, ou propre a un processus, si
elle mesure le temps uniquement pour celui-ci.
Toutes les implementations supportent l'horloge temps reel globale,
laquelle est identifiee par CLOCK_REALTIME. Son temps represente le
nombre de secondes et nanosecondes ecoulees depuis l'epoque Unix
(1er janvier 1970 a 00:00:00 UTC). Lorsque son temps est modifie, les
horloges mesurant un intervalle de temps ne sont pas affectees alors
que celles indiquant une date (heure) absolue le sont.
Plusieurs horloges peuvent etre implementees. L'interpretation des
valeurs de temps correspondantes et l'effet sur les temporisateurs ne
sont pas specifies.
Les versions suffisamment recentes de la glibc et du noyau Linux gerent
les horloges suivantes :
CLOCK_REALTIME
Horloge temps reel globale au systeme. Configurer cette horloge
necessite d'avoir les privileges appropries.
CLOCK_MONOTONIC
Horloge non configurable qui represente un temps monotone depuis
une date de debut arbitraire.
CLOCK_MONOTONIC_RAW (depuis Linux 2.6.28 ; specifique a Linux)
Similaire a CLOCK_MONOTONIC, mais fournit un acces direct a un
temps materiel qui n'est pas sujet aux ajustements NTP.
CLOCK_PROCESS_CPUTIME_ID
Horloge CPU haute resolution pour processus.
CLOCK_THREAD_CPUTIME_ID
Horloge CPU specifique aux threads.
VALEUR RENVOY'EE
clock_gettime(), clock_settime() et clock_getres() renvoient 0 si elles
reussissent ou -1 si elles echouent, 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 specifiee n'est pas supportee sur ce systeme.
EPERM clock_settime() n'a pas l'autorisation de configurer l'horloge
specifiee.
CONFORMIT'E
SUSv2, POSIX.1-2001.
DISPONIBILIT'E
Sur les systemes conformes a la specification POSIX sur lesquels ces
fonctions sont disponibles, la constante symbolique _POSIX_TIMERS est
definie dans <unistd.h> comme etant une valeur superieure a 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`emes multiprocesseur (SMP)
Les horloges CLOCK_PROCESS_CPUTIME_ID et CLOCK_THREAD_CPUTIME_ID sont
realisees sur bien des plate-formes en utilisant les temporisateurs des
CPU (TSC sur i386, AR.ITC sur Itanium). Les registres peuvent etre
differents entre CPU avec pour consequence des r'esultats bidons pour
ces horloges si un processus a ete transfere sur une autre CPU.
Si les CPU d'un systeme multiprocesseur ont differentes sources
d'horloges, il n'y a aucun moyen de maintenir une correlation entre les
registres temporisateur puisque chaque CPU tournera a une frequence
legerement differente. Si c'est le cas, clock_getcpuclockid(0) renverra
ENOENT pour signifier cette condition. Les deux horloges seront donc
utiles si on peut etre certain que le processus reste sur un CPU en
particulier.
Les processeurs d'un systeme multiprocesseur ne demarrent pas
exactement au meme moment, ainsi les registres temporisateurs sont
lances avec un decalage. Certaines architectures incluent un code pour
tenter de limiter ce decalage au demarrage. Toutefois, ce code ne
garantit pas l'accord precis des decalages. La glibc ne contient rien
pour gerer ces decalages (a la difference du noyau Linux). Typiquement,
ces decalages sont petits et ainsi, leurs effets peuvent etre
negligeable dans la plupart des cas.
BOGUES
Selon POSIX.1-2001, un processus avec des << privileges adequats >>
peut changer les horloges CLOCK_PROCESS_CPUTIME_ID et
CLOCK_THREAD_CPUTIME_ID avec clock_settime(). Sous Linux, ces horloges
ne peuvent pas etre modifiees (c'est-a-dire qu'aucun processus n'a de
<< privileges adequats >>).
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.27 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent etre trouvees a l'adresse
<URL:http://www.kernel.org/doc/man-pages/>.
TRADUCTION
Depuis 2010, cette traduction est maintenue a l'aide de l'outil po4a
<URL:http://po4a.alioth.debian.org/> par l'equipe 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'equipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en ecrivant a
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir acces a la version anglaise de ce document
en utilisant la commande << man -L C <section> <page_de_man> >>.
3 fevrier 2010 CLOCK_GETRES(2)