GETITIMER
Section: Manuel du programmeur Linux (2) Updated: 18 juillet 2003 Index
NOM
SYNOPSIS
DESCRIPTION
VALEUR RENVOYEÉ
ERREURS
CONFORMITÉ
VOIR AUSSI
BOGUES
TRADUCTION
NOM
getitimer, setitimer - Lire / écrire la valeur d'une temporisation.
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 temporisations, 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 processus.
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 */
};
La fonction
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 temporisation, ou zéro si la
temporisation est désactivée. De même
it_interval
sera rempli avec la valeur originale de la temporisation.
La fonction
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 à zéro
(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_VIRTUAL)
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
BOGUES
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, 1996-2003.
|