Manpages

NOM

timer_settime, timer_gettime - Armer, désarmer et récupérer l’état d’une minuterie POSIX d’un processus

SYNOPSIS

#include <time.h>

int timer_settime(timer_t timerid, int flags,
const struct itimerspec *
new_value,
struct itimerspec *
old_value);
int timer_gettime(timer_t
timerid, struct itimerspec *curr_value);

Éditer les liens avec -lrt.

Exigences de macros de test de fonctionnalités pour la glibc (consulter feature_test_macros(7)) :

timer_settime(), timer_gettime(): _POSIX_C_SOURCE >= 199309L

DESCRIPTION

timer_settime() arme et désarme la minuterie indiquée par timerid. Le paramètre new_value est un pointeur vers une structure itimerspec qui indique la nouvelle valeur initiale et le nouvel intervalle pour la minuterie. La structure itimerspec est définie comme ceci :

struct timespec {
    time_t tv_sec;                /* Secondes */
    long   tv_nsec;               /* Nanosecondes */
};


struct itimerspec {
    struct timespec it_interval;  /* Intervalle pour les
                                     minuteries périodiques */
    struct timespec it_value;     /* Expiration initiale */
};

Chacune des sous-structures de la structure itimerspec est une structure timespec qui permet d’indiquer une valeur en secondes et en nanosecondes. Ces valeurs sont mesurée en fonction de l’horloge qui a été indiquée lorsque la minuterie a été créée avec timer_create(2).

Si new_value->it_value indique une valeur non nulle (c’est-à-dire qu’un de ses champs n’est pas nul), alors timer_settime() arme (démarre) la minuterie, en la configurant pour qu’elle expire au moment donnée (si la minuterie était déjà armée, sa configuration précédente est remplacée). Si new_value->it_value a une valeur nulle (c’est-à-dire si ses deux champs sont nuls), alors la minuterie est désarmée.

Le champ new_value->it_interval indique la période de la minuterie, en secondes et nanosecondes. Si ce champ n’est pas nul alors à chaque fois qu’une minuterie armée expire, la minuterie est rechargée avec la valeur indiquée dans new_value->it_interval. Si new_value->it_interval est nul, alors la minuterie n’expire qu’une fois, une fois que le temps défini par it_value est écoulé.

Par défaut, le temps d’expiration initial indiqué par new_value->it_value est interprété par rapport à l’instant actuel sur l’horloge de la minuterie au moment de l’appel. Ceci peut être modifié en indiquant TIMER_ABSTIME dans flags, new_value->it_value étant alors interprété comme une valeur absolue mesurée sur l’horloge de la minuterie ; c’est-à-dire que la minuterie expirera quand la valeur de l’horloge atteint la valeur indiquée par new_value->it_value. Si le temps absolu indiqué est déjà passé, alors la minuterie expire immédiatement et le compteur de dépassement (consultez timer_getoverrun(2)) est positionné en conséquence.

Si la valeur de l’horloge CLOCK_REALTIME est ajustée et qu’une minuterie absolue basée sur cette horloge est armée, alors l’expiration de cette minuterie sera ajustée en conséquence. Les ajustements de l’horloge CLOCK_REALTIME n’ont aucun effet sur les minuteries relatives basées sur cette horloge.

Si old_value n’est pas NULL, alors il pointe vers un tampon qui est utilisé pour renvoyer l’intervalle précédent de la minuterie (dans old_value->it_interval) et la durée qu’il restait avant l’expiration suivante de la minuterie (dans old_value->it_value).

timer_gettime() renvoie dans le tampon pointé par curr_value le temps restant avant l’expiration suivante et l’intervalle de la minuterie indiquée par timerid. Le temps restant avant l’expiration suivante est renvoyé dans curr_value->it_value ; il s’agit toujours d’une valeur relative, que le drapeau TIMER_ABSTIME soit utilisé ou non lorsque la minuterie est armée. Si la valeur renvoyée dans curr_value->it_value est nulle, alors la minuterie était désarmée au moment de l’appel. L’intervalle de la minuterie est renvoyée dans curr_value->it_interval. Si la valeur renvoyée dans curr_value->it_interval est nulle, alors il s’agit d’une minuterie à un coup.

VALEUR RENVOYÉE

En cas de réussite, timer_settime() et timer_gettime() renvoient zéro. En cas d’erreur, -1 est renvoyé et errno indique le code d’erreur.

ERREURS

Ces fonctions peuvent échouer avec les erreurs suivantes :

EFAULT

new_value, old_value ou curr_value n’est pas un pointeur valable.

EINVAL

timerid n’est pas valable

timer_settime() peut échouer avec les erreurs suivantes :

EINVAL

new_value.it_value est négatif ; ou new_value.it_value.tv_nsec est négatif ou supérieur à 999,999,999.

VERSIONS

Ces appels systèmes sont disponibles depuis Linux 2.6.

CONFORMITÉ

POSIX.1-2001, POSIX.1-2008.

EXEMPLES

Consultez timer_create(2).

VOIR AUSSI

timer_create(2), timer_getoverrun(2), time(7)

COLOPHON

Cette page fait partie de la publication 5.07 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies et la dernière version de cette page, peuvent être trouvées à l’adresse https://www.kernel.org/doc/man-pages/.

TRADUCTION

La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>;, Stéphan Rafin <stephan.rafin [AT] laposte.net>, Thierry Vignaud <tvignaud [AT] mandriva.com>, François Micaux, Alain Portal <aportal [AT] univ-montp2.fr>, Jean-Philippe Guérard <fevrier [AT] tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon [AT] wanadoo.fr>, Julien Cristau <jcristau [AT] debian.org>, Thomas Huriaux <thomas.huriaux [AT] gmail.com>, Nicolas François <nicolas.francois [AT] centraliens.net>, Florentin Duneau <fduneau [AT] gmail.com>, Simon Paillard <simon.paillard [AT] resel.fr>, Denis Barbier <barbier [AT] debian.org>, David Prévot <david [AT] tilapin.org>, Cédric Boutillier <cedric.boutillier [AT] gmail.com> et Frédéric Hantrais <fhantrais [AT] gmail.com>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n’y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à <debian-l10n-french [AT] lists.org>.