GETITIMER(2) Manuel du programmeur Linux GETITIMER(2)
NOM
getitimer, setitimer - Lire / écrire la valeur d'une tem
porisation.
SYNOPSIS
#include <sys/time.h>
int getitimer(int which, struct itimerval *value);
int setitimer(int which, const struct itimerval *value,
struct itimerval *ovalue);
DESCRIPTION
Le système fournit pour chaque processus trois temporisa
tions, chacune avec un fonctionnement particulier.
Lorsqu'une temporisation expire, un signal est envoyé au
processus et la temporisation redémarre éventuellement.
ITIMER_REAL décroît en temps réel et un signal SIGALRM
est émis à l'expiration du délai.
ITIMER_VIRTUAL décroît uniquement quand le processus
s'exécute, et un signal SIGVTALRM est émis
à l'expiration du délai.
ITIMER_PROF décroît à la fois quand le processus
s'exécute, et quand le processeur exécute
des fonctions systèmes à la demande du pro
cessus. Ce timer, utilisé conjointement
avec ITIMER_VIRTUAL, est généralement
utilisé pour obtenir le profil d'exécution
du processus entre les fonctionnalités
utilisateur et le noyau. SIGPROF est émis
à l'expiration du délai.
Les valeurs des temporisations sont définies 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 */
};
Getitimer(2) renseigne la structure pointée par value avec
le paramétrage de la temporisation which (parmi
ITIMER_REAL, ITIMER_VIRTUAL, ou ITIMER_PROF). L'élément
it_value est rempli avec le délai restant dans la tempori
sation, ou zéro si la temporisation est désactivée. De
même it_interval sera rempli avec la valeur originale de
la temporisation.
Linux 8 Avril 1997 1
GETITIMER(2) Manuel du programmeur Linux GETITIMER(2)
Setitimer(2) positionne la temporisation avec les valeurs
de value. Si ovalue est non nulle, les paramètres
précédents de la temporisation y sont inscrits.
Les temporisations décroissent de it_value à zéro,
déclenchent un signal, et sont replacées à it_interval.
Une temporisation s'arrête si elle est mise à zero
(it_value vaut zéro) ou bien elle expire et it_interval
vaut zéro.
Les deux champs tv_sec et tv_usec sont utilisés pour
déterminer la durée d'une temporisation.
Les temporisations n'expirent jamais avant la fin du temps
requis, et expirent plutôt avec un délai court et constant
après la limite. Ce délai dépend de la résolution du timer
système (actuellement 10 ms). A l'expiration un signal
est déclenché puis la temporisation réinitialisée. Si la
temporisation expire alors que le processus est actif
(toujours vrai avec ITIMER_VIRT) le signal sera délivré
immédiatement. Autrement il y aura un petit délai avant
réception du signal, dépendant de la charge du système.
VALEUR RENVOYEÉ
getitimer et setitimer renvoient 0 s'ils réussissent, ou
-1 s'ils échouent, auquel cas errno contient le code
d'erreur.
ERREURS
EFAULT value ou ovalue pointent en dehors de
l'espace d'adressage accessible.
EINVAL which n'est pas dans la liste ITIMER_REAL,
ITIMER_VIRT, ou ITIMER_PROF.
CONFORMITÉ
SVr4, 4.4BSD (Cet appel est apparu dans 4.2BSD).
VOIR AUSSI
gettimeofday(2), sigaction(2), signal(2).
BUGS
Sous Linux, l'émission et la réception d'un signal sont
distincts, et un même signal ne peut pas être émis deux
fois de suite si le premier n'a pas été reçu. Il est
ainsi possible qu'avec une charge système très élevée, une
temporisation ITIMER_REAL expire avant que le signal d'une
expiration précédente n'ait été reçu. Le second signal
sera alors perdu.
TRADUCTION
Christophe Blaess, 1997.
Linux 8 Avril 1997 2