NOM
timer_getoverrun - Obtenir le nombre de dépassements d’une minuterie
POSIX d’un processus
SYNOPSIS
#include <time.h>
int timer_getoverrun(timer_t timerid);
Effectuez l’édition des liens avec l’option -lrt.
Exigences de macros de test de fonctionnalités pour la glibc (voir
feature_test_macros(7)) :
timer_getoverrun() : _POSIX_C_SOURCE >= 199309
timer_getoverrun() renvoie le compteur de dépassements pour la
minuterie indiquée par timerid. Une application peut utiliser le
compteur de dépassements pour calculer avec précision le nombre
d’expiration qui se seraient écoulée dans un intervalle de temps donné.
Les dépassements de minuterie peuvent survenir lors de la réception
d’une notification par un signal (SIGEV_SIGNAL) ou par un thread
(SIGEV_THREAD).
Quand les notifications d’expiration sont fournies par un signal, les
dépassements peuvent survenir de cette façon. Qu’un signal temps réel
soit utilisé ou non pour les notifications de la minuterie, le système
empile au plus un signal par minuterie. (Il s’agit du comportement
spécifié par POSIX.1-2001. L’alternative, empiler un signal pour chaque
expiration de minuterie, pourrait facilement dépasser les limites
permises pour l’empilement de signaux sur le système.) Pour des raisons
de délais d’ordonnancement, ou parce que le signal peut avoir été
bloqué pendant un moment, il peut y avoir un délai entre le moment ou
le signal de notification est produit et le moment ou il est reçu (par
le gestionnaire de signal) ou accepté (par exemple en utilisant
sigwaitinfo(2)). Dans cet intervalle, d’autres expirations de minuterie
peuvent survenir. Le compteur de dépassements de la minuterie
correspond au nombre d’expirations supplémentaires qui se sont
produites entre le moment où le signal a été produit et le moment ou il
a été reçu ou accepté.
Les dépassements de minuterie peuvent aussi se produire lorsque les
notifications d’expirations sont fournies par un appel à un thread
puisqu’il peut y avoir un délai arbitraire entre l’expiration de la
minuterie et l’exécution du thread de notification et que dans
l’intervalle de ce délai, d’autres expirations de minuterie peuvent se
produire.
VALEUR RENVOYÉE
S’il réussit, timer_getoverrun() renvoie le compteur d’expirations de
la minuterie indiquée ; ce compteur peut valoir 0 si aucune expiration
n’a eu lieu. S’il échoue, il renvoie -1 et écrit errno en conséquence.
ERREURS
EINVAL timerid n’est pas un identifiant de minuterie valable.
VERSIONS
Cet appel système est disponible depuis Linux 2.6.
CONFORMITÉ
POSIX.1-2001
NOTES
Lorsque les notifications de minuterie sont fournies par des signaux
(SIGEV_SIGNAL), il est possible sous Linux d’obtenir le compteur de
dépassements par le champ si_overrun de la structure siginfo_t
(consultez sigaction(2)). Ce permet à une application d’éviter le
surcoût d’un appel système pour obtenir le compteur de dépassements,
mais est une extension à POSIX.1-2001 non portable.
POSIX.1-2001 ne mentionne les dépassements de minuteries que dans le
contexte de notifications de minuteries par des signaux.
BOGUES
POSIX.1-2001 spécifie que si le compteur de dépassements de la
minuterie est supérieur ou égal au maximum défini par l’implémentation
(DELAYTIMER_MAX), alors timer_getoverrun() devrait renvoyer
DELAYTIMER_MAX. Cependant Linux n’implémente pas cette fonctionnalité :
à la place, si le nombre de dépassements dépasse l’entier le plus grand
représentable, le compteur redémarre à partir des petites valeurs.
EXEMPLE
Consultez timer_create(2).
VOIR AUSSI
clock_gettime(2), sigaction(2), signalfd(2), sigwaitinfo(2),
timer_create(2), timer_delete(2), timer_settime(2), signal(7), time(7)
COLOPHON
Cette page fait partie de la publication 3.23 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
Cette page de manuel a été traduite et est maintenue par Nicolas
François <nicolas.francois@centraliens.net> et l’équipe francophone de
traduction de Debian.
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> ».