Provided by:
manpages-fr-dev_3.27fr1.4-1_all 
NOM
getitimer, setitimer - Lire/ecrire la valeur d'une temporisation
SYNOPSIS
#include <sys/time.h>
int getitimer(int which, struct itimerval *curr_value);
int setitimer(int which, const struct itimerval *new_value,
struct itimerval *old_value);
DESCRIPTION
Le systeme fournit pour chaque processus trois temporisations, chacune
avec un fonctionnement particulier. Lorsqu'une temporisation expire, un
signal est envoye au processus et la temporisation redemarre
eventuellement.
ITIMER_REAL decroit en temps reel et un signal SIGALRM est emis a
l'expiration du delai.
ITIMER_VIRTUAL decroit uniquement quand le processus s'execute, et un
signal SIGVTALRM est emis a l'expiration du delai.
ITIMER_PROF decroit a la fois quand le processus s'execute, et quand
le processeur execute des fonctions systemes a la
demande du processus. Cette temporisation, utilisee
conjointement avec ITIMER_VIRTUAL, est generalement
utilisee pour obtenir le profil d'execution du processus
entre les fonctionnalites utilisateur et le noyau.
SIGPROF est emis a l'expiration du delai.
Les valeurs des temporisations sont definies avec les structures
suivantes :
struct itimerval {
struct timeval it_interval; /* valeur suivante */
struct timeval it_value; /* valeur actuelle */
};
struct timeval {
long tv_sec; /* secondes */
long tv_usec; /* micro secondes */
};
La fonction getitimer() renseigne la structure pointee par curr_value
avec le parametrage de la temporisation indique par which (parmi
ITIMER_REAL, ITIMER_VIRTUAL, ou ITIMER_PROF). L'element it_value est
rempli avec le delai restant dans la temporisation, ou zero si la
temporisation est desactivee. De meme, it_interval sera rempli avec la
valeur originale de la temporisation.
La fonction setitimer() positionne la temporisation avec les valeurs de
new_value. Si old_value n'est pas NULL, les parametres precedents de la
temporisation y sont inscrits.
Les temporisations decroissent de it_value a zero, declenchent un
signal, et sont replacees a it_interval. Une temporisation s'arrete si
elle est mise a zero (it_value vaut zero) ou bien elle expire et
it_interval vaut zero.
Les deux champs tv_sec et tv_usec sont utilises pour determiner la
duree d'une temporisation.
Les temporisations n'expirent jamais avant la fin du temps requis, et
expirent plutot avec un court delai apres la limite. Ce delai depend de
la resolution de la temporisation systeme et de la charge du systeme ;
consultez time(7) (mais consultez la section BOGUES ci-dessous). A
l'expiration, un signal est declenche puis la temporisation
reinitialisee. Si la temporisation expire alors que le processus est
actif (toujours vrai avec ITIMER_VIRTUAL) le signal sera delivre
immediatement. Autrement, il y aura un petit delai avant reception du
signal, dependant de la charge du systeme.
VALEUR RENVOY'EE
S'il reussit, cet appel systeme renvoie 0. S'il echoue, il renvoie -1
et remplit errno en consequence.
ERREURS
EFAULT new_value, old_value ou curr_value n'est pas un pointeur
valable.
EINVAL which n'est ni ITIMER_REAL, ni ITIMER_VIRTUAL, ni ITIMER_PROF ;
ou (depuis Linux 2.6.22) un des champs tv_usec dans la structure
pointee par new_value contient une valeur hors de l'intervalle 0
a 999 999.
CONFORMIT'E
POSIX.1-2001, SVr4, BSD 4.4 (cet appel est apparu dans BSD 4.2).
POSIX.1-2008 marque getitimer() et setitimer() comme etant obsoletes,
en recommandant d'utiliser a la place l'API des temporisations POSIX
(timer_gettime(2), timer_settime(2), etc.).
NOTES
Un fils cree avec fork(2) n'herite pas des temporisations periodiques
de son pere. Les temporisations periodiques sont conservees au travers
d'un execve(2).
POSIX.1 laisse indeterminees les actions entre setitimer() et les trois
interfaces alarm(2), sleep(3) et usleep(3).
BOGUES
Sous Linux, l'emission et la reception d'un signal sont distincts, et
un meme signal ne peut pas etre emis deux fois de suite si le premier
n'a pas ete recu. Il est ainsi possible qu'avec une charge systeme tres
elevee, une temporisation ITIMER_REAL expire avant que le signal d'une
expiration precedente n'ait ete recu. Le second signal sera alors
perdu.
Sous les noyaux Linux anterieurs au 2.6.16, les valeurs des
temporisations sont exprimees en << jiffies >>. Si une temporisation
est initialisee a une valeur en jiffies depassant la constante
MAX_SEC_IN_JIFFIES (definie dans include/linux/jiffies.h), la
temporisation est silencieusement tronquee a cette valeur maximale.
Sous Linux sur i386 (ou, depuis Linux 2.6.13, un jiffy correspond par
defaut a 4 millisecondes), cela signifie que la valeur maximale d'une
temporisation est environ 99,42 jours. Depuis Linux 2.6.16, le noyau
utilise une representation interne du temps differente et le plafond
est supprime.
Sur certains systemes (y compris i386), les noyaux Linux avant la
version 2.6.12 ont un bogue qui cause des expirations prematurees de
temporisation, avec une avance pouvant aller jusqu'a un jiffy dans
certaines circonstances. Ce bogue est corrige dans Linux 2.6.12.
Selon POSIX.1-2001, setitimer() devrait echouer si la valeur de tv_usec
fournie n'est pas entre 0 et 999999. Cependant, dans les noyaux de
version inferieure ou egale a 2.6.21, Linux ne renvoie pas d'erreur, et
se contente d'ajuster la valeur de tv_sec correspondante. Depuis le
noyau 2.6.22, cette non conformite a ete corrigee ; une valeur non
valable de tv_usec resulte en une erreur EINVAL.
VOIR AUSSI
gettimeofday(2), sigaction(2), signal(2), timer_create(2),
timerfd_create(2), 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/>.
Christophe Blaess <URL:http://www.blaess.fr/christophe/> (1996-2003),
Alain Portal <URL:http://manpagesfr.free.fr/> (2003-2006). Julien
Cristau 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> >>.