Types
struct timevalConstantes
struct timespec
struct itimerval
ITIMER_PROF ITIMER_REAL ITIMER_VIRTUALFonctions
alarm()
nanosleep()
getitimer()
setitimer()
struct timeval
{ long tv_sec; /* en secondes */ long tv_usec; /* en micro-secondes */ }; |
struct timespec
{ time_t tv_sec; /* secondes */ long tv_nsec; /* nano-secondes = milliardième de seconde */ }; // timespec |
struct itimerval
{ struct timeval it_interval; /* intervalle entre deux signaux */ struct timeval it_value; /* delai initial */ }; |
#define
ITIMER_REAL 0 /* declenche SIGALRM
*/
#define ITIMER_VIRTUAL 1 /* declenche SIGVTALRM */ #define ITIMER_PROF 2 /* declenche SIGPROF */ |
Les fonctions système permettant de manipuler les timers sont alarm(), getitimer() et setitimer() :
alarm - arme un timerSyntaxe
#include <unistd.h> // contient le prototype de la fonction
alarm()
unsigned int alarm (unsigned int nb_sec); |
Description
La fonction alarm() arme le timer ITIMER_REAL avec une durée de nb_sec secondes. A l'écoulement de ce délai (au minimum), le processus reçoit le signal SIGALRM. Le timer est alors désarmé.
Valeur retournée
La fonction alarm() renvoie la valeur du temps restant dans le timer au moment de son appel. Cette valeur peut être utilisée à réception du signal SIGALRM pour restaurer le timer. Les fonctions alarm() et getitimer() peuvent donc interférer sur le même timer ITIMER_REAL.
Diagnostic d'erreur
La fonction alarm() ne peut pas renvoyer de code d'erreur.
nanosleep - suspend le processus pendant un délai exprimé en nano-secondesSyntaxe
#include <unistd.h> // contient le prototype de la fonction
nanosleep()
// et de struct timespec int nanosleep (const struct timespec *req, struct timespec *rem); |
Description
La fonction nanosleep() suspend le processus pendant un délai supérieur ou égal à la valeur contenue dans une structure pointée par le paramètre req, et exprimée en nano-secondes. De plus, la précision dépend du système et de la machine, et peut varier dans une très large plage (1 micro-seconde pour un noyau Linux temps réel à 10 milli-secondes sous Linux/i386).
Si la fonction est interrompue par la réception d'un signal, et si le pointeur rem est non nul, il pointe sur une structure contenant le délai restant au moment de l'interruption. Attention : si la fonction nanosleep() se termine normalement lorsque le délai est épuisé, la structure pointée par rem n'est pas remise à zéro.
Valeur retournée
La fonction nanosleep() renvoie 0 en cas de retour normal (épuisement du délai).
Diagnostic d'erreur
La fonction nanosleep() renvoie -1 en cas d'erreur ou d'interruption par un signal. La variable globale errno est alors positionnée.
getitimer - renvoie la valeur d'un timerSyntaxe
#include <sys/time.h> // contient le prototype de la fonction getitimer()
// et de struct itimerval int getitimer (int which, const struct itimerval *valeur); |
Description
La fonction getitimer() remplit le paramètre valeur avec la valeur du timer indiqué par which (parmi : ITIMER_REAL, ITIMER_VIRTUAL ou ITIMER_PROF).
Valeur retournée
La fonction getitimer() renvoie 0 si l'appel s'est bien passé.
Diagnostic d'erreur
La fonction getitimer() renvoie -1 en cas d'erreur. La variable globale errno est alors positionnée.
setitimer - initialise la valeur d'un timer.Syntaxe
#include <sys/time.h> // contient le prototype de setitimer ()
// et de struct itimerval int setitimer (int which, const struct itimerval *value,
|
Description
La fonction setitimer() initialise le timer indiqué par which (parmi : ITIMER_REAL, ITIMER_VIRTUAL ou ITIMER_PROF) à la valeur value (2 délais). Si value->it_interval == 0, le timer sera désarmé après la prochaine expiration. Si le pointeur o_value n'est pas nul, il doit pointer sur la variable o_value qui recevra la valeur qu'avait le timer avant modification. Cette possibilité peut être utilisée pour restaurer un timer provisoirement modifié. Le plus petit intervalle de temps ne peut être inférieur à la granularité de la machine : tv_usec > granule, information non trouvée au moment de la rédaction de ce document. En conséquence, toute opération plus courte qu'un granule n'est pas détectable par l'intermédiaire d'un timer.
Valeur retournée
La fonction setitimer() renvoie 0 si l'appel s'est bien passé.
Diagnostic d'erreur
La fonction setitimer() renvoie -1 en cas d'erreur. La variable globale errno est alors positionnée.