.\" -*- coding: UTF-8 -*-
.\" Copyright 7/93 by Darren Senn <sinster@scintilla.santa-clara.ca.us>
.\" and Copyright (C) 2016, Michael Kerrisk <mtk.manpages@gmail.com>
.\" Based on a similar page Copyright 1992 by Rick Faith
.\"
.\" %%%LICENSE_START(FREELY_REDISTRIBUTABLE)
.\" May be freely distributed and modified
.\" %%%LICENSE_END
.\"
.\" Modified Tue Oct 22 00:22:35 EDT 1996 by Eric S. Raymond <esr@thyrsus.com>
.\" 2005-04-06 mtk, Matthias Lang <matthias@corelatus.se>
.\" 	Noted MAX_SEC_IN_JIFFIES ceiling
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH getitimer 2 "12 février 2023" "Pages du manuel de Linux 6.03" 
.SH NOM
getitimer, setitimer \- Lire/écrire la valeur d'une temporisation
.SH BIBLIOTHÈQUE
Bibliothèque C standard (\fIlibc\fP, \fI\-lc\fP)
.SH SYNOPSIS
.nf
\fB#include <sys/time.h>\fP
.PP
\fBint getitimer(int \fP\fIwhich\fP\fB, struct itimerval *\fP\fIcurr_value\fP\fB);\fP
\fBint setitimer(int \fP\fIwhich\fP\fB, const struct itimerval *restrict \fP\fInew_value\fP\fB,\fP
\fB              struct itimerval *_Nullable restrict \fP\fIold_value\fP\fB);\fP
.fi
.SH DESCRIPTION
Ces appels système donnent accès à des temporisations d'intervalle,
c'est\-à\-dire des temporisations qui expirent en premier à un moment du futur
et (éventuellement) à des intervalles réguliers après lui. Lorsqu'une
temporisation expire, un signal est envoyé au processus appelant et la
temporisation est réinitialisée à l'intervalle spécifié (s'il n'est pas
nul).
.PP
Trois types de minuteries —\ indiquées par le paramètre \fIwhich\fP\ — sont
fournis, chacun comptant par rapport à une horloge différente et générant un
signal différent à l'expiration de la minuterie\ :
.TP 
\fBITIMER_REAL\fP
Cette minuterie compte en temps réel (à savoir celui de la pendule
murale). À chaque expiration, un signal \fBSIGALRM\fP est généré.
.TP 
\fBITIMER_VIRTUAL\fP
Cette minuterie compte par rapport au temps du processeur en mode
utilisateur consommé par le processus (la mesure comprend le temps
processeur consommé par tous les threads du processus). À chaque expiration,
un signal \fBSIGVTALRM\fP est généré.
.TP 
\fBITIMER_PROF\fP
Cette minuterie compte par rapport au temps total de processeur (à savoir
celui de l'utilisateur et du système) consommé par le processus (la mesure
comprend le temps processeur consommé par tous les threads du processus). À
chaque expiration, un signal \fBSIGPROF\fP est généré.
.IP
Conjuguée à \fBITIMER_VIRTUAL\fP, cette minuterie peut être utilisée pour
tracer le temps processeur du système et de l'utilisateur consommé par le
processus.
.PP
Un processus n'a qu'un des trois types de minuterie.
.PP
Les valeurs des temporisations sont définies avec les structures suivantes\ :
.PP
.in +4n
.EX
struct itimerval {
    struct timeval it_interval;  /* Intervalle pour les
                                     minuteries périodiques */
    struct timeval it_value;     /* Délai jusqu'à la prochaine
                                     expiration */
};

struct timeval {
    time_t tv_sec;                /* secondes        */
    suseconds_t tv_usec;          /* microsecondes   */
};
.EE
.in
.\"
.SS getitimer()
La fonction \fBgetitimer\fP() met la valeur actuelle de la temporisation
indiquée dans \fIwhich\fP dans le tampon vers lequel pointe \fIcurr_value\fP.
.PP
La sous\-structure \fIit_value\fP est peuplée par la quantité de temps restant
avant la prochaine expiration de la minuterie indiquée. Cette valeur change
pendant le décompte de la minuterie et sera réinitialisée à \fIit_interval\fP
quand la minuterie expirera. Si les deux champs de \fIit_value\fP sont nuls,
cette minuterie est alors désarmée (inactive).
.PP
La sous\-structure \fIit_interval\fP est peuplée par l'intervalle de la
temporisation. Si les deux champs de \fIit_interval\fP sont nuls, il s'agit
d'une minuterie à un temps (c'est\-à\-dire qu'elle n'expire qu'une fois).
.SS setitimer()
La fonction \fBsetitimer\fP() arme ou désarme la temporisation indiquée dans
\fIwhich\fP, en positionnant la valeur de la temporisation sur la valeur
indiquée par \fInew_value\fP. Si \fIold_value\fP n'est pas NULL, le tampon vers
lequel il pointe est utilisé pour renvoyer la valeur précédente de la
temporisation (c'est\-à\-dire la même information renvoyée par
\fBgetitimer\fP()).
.PP
Si un champ \fInew_value.it_value\fP est positif, la minuterie est armée pour
expirer en premier au moment spécifié. Si les deux champs de
\fInew_value.it_value\fP valent zéro, la minuterie est désarmée.
.PP
Le champ \fInew_value.it_interval\fP indique le nouvel intervalle de la
minuterie\ ; si ses deux sous\-champs sont nuls, la minuterie est configurée
pour n'expirer qu'une seule fois.
.SH "VALEUR RENVOYÉE"
En cas de succès, zéro est renvoyé. En cas d'erreur, \fB\-1\fP est renvoyé et
\fIerrno\fP est définie pour préciser l'erreur.
.SH ERREURS
.TP 
\fBEFAULT\fP
\fInew_value\fP, \fIold_value\fP ou \fIcurr_value\fP n'est pas un pointeur valable.
.TP 
\fBEINVAL\fP
\fIwhich\fP n'est ni \fBITIMER_REAL\fP, ni \fBITIMER_VIRTUAL\fP, ni \fBITIMER_PROF\fP\ ;
ou (depuis Linux\ 2.6.22) un des champs \fItv_usec\fP dans la structure pointée
par \fInew_value\fP contient une valeur hors de l'intervalle [0, 999999].
.SH STANDARDS
POSIX.1\-2001, SVr4, 4.4BSD (cet appel est apparu dans 4.2BSD). POSIX.1\-2008
marque \fBgetitimer\fP() et \fBsetitimer\fP() comme étant obsolètes, en
recommandant d'utiliser à la place l'API des temporisations POSIX
(\fBtimer_gettime\fP(2), \fBtimer_settime\fP(2), etc.).
.SH NOTES
Les temporisations n'expirent jamais avant la fin du temps demandé, mais
elles peuvent expirer après un court moment après la fin, qui dépend de la
résolution de l’horloge système et de la charge du système\ ; consultez
\fBtime\fP(7) (mais consultez la section BOGUES ci\(hydessous). Si la
temporisation expire alors que le processus est actif (toujours vrai avec
\fBITIMER_VIRTUAL\fP), le signal sera délivré immédiatement après sa création.
.PP
Un enfant créé avec \fBfork\fP(2) n'hérite pas des temporisations périodiques
de son parent. Les temporisations périodiques sont conservées au travers
d'un \fBexecve\fP(2).
.PP
POSIX.1 laisse indéterminées les interactions entre \fBsetitimer\fP() et les
trois interfaces \fBalarm\fP(2), \fBsleep\fP(3) et \fBusleep\fP(3).
.PP
Les normes ne donnent pas la signification de l'appel\ :
.PP
.in +4n
.EX
setitimer(which, NULL, &old_value);
.EE
.in
.PP
De nombreux systèmes d'exploitation (Solaris, les BSD et peut\-être d'autres)
le traitent comme étant équivalent à\ :
.PP
.in +4n
.EX
getitimer(which, &old_value);
.EE
.in
.PP
Dans Linux, il est traité comme étant équivalent à un appel dans lequel les
champs de \fInew_value\fP sont égaux à zéro, ce qui correspondrait à une
temporisation désactivée. \fIN'utilisez pas cette non\-fonctionnalité de Linux\fP\ : elle est non portable et inutile.
.SH BOGUES
Sous Linux, l'émission et la réception d'un signal sont distinctes, et une
seule instance de chacun des signaux peut être en attente pour un
processus. Il est ainsi possible qu'avec une charge système très élevée, une
temporisation \fBITIMER_REAL\fP expire avant que le signal d'une expiration
précédente n'ait été reçu. Le second signal sera alors perdu.
.PP
Avant Linux\ 2.6.16, les valeurs des temporisations sont exprimées en «\ jiffies\ ». Si une temporisation est initialisée à une valeur en jiffies
dépassant la constante \fBMAX_SEC_IN_JIFFIES\fP (définie dans
\fIinclude/linux/jiffies.h\fP), la temporisation est silencieusement tronquée à
cette valeur maximale. Sous Linux sur i386 (où, depuis Linux\ 2.6.13, un
jiffy correspond par défaut à 4 millisecondes), cela signifie que la valeur
maximale d'une temporisation est environ 99,42 jours. Depuis Linux\ 2.6.16,
le noyau utilise une représentation interne du temps différente et le
plafond est supprimé.
.PP
.\" 4 Jul 2005: It looks like this bug may remain in Linux 2.4.x.
.\"	http://lkml.org/lkml/2005/7/1/165
Sur certains systèmes (y compris i386), les noyaux Linux avant Linux\ 2.6.12
ont un bogue qui cause des expirations prématurées de temporisation, avec
une avance pouvant aller jusqu'à un jiffy dans certaines circonstances. Ce
bogue est corrigé dans Linux\ 2.6.12.
.PP
.\" Bugzilla report 25 Apr 2006:
.\" http://bugzilla.kernel.org/show_bug.cgi?id=6443
.\" "setitimer() should reject noncanonical arguments"
Selon POSIX.1\-2001, \fBsetitimer\fP() devrait échouer si la valeur de
\fItv_usec\fP fournie est hors de l'intervalle [0, 999999]. Cependant, dans les
noyaux de version inférieure ou égale à Linux\ 2.6.21, Linux ne renvoie pas
d'erreur, et se contente d'ajuster la valeur de \fItv_sec\fP
correspondante. Depuis Linux\ 2.6.22, cette non conformité a été corrigée\ ;
une valeur non valable de \fItv_usec\fP résulte en une erreur \fBEINVAL\fP.
.SH "VOIR AUSSI"
\fBgettimeofday\fP(2), \fBsigaction\fP(2), \fBsignal\fP(2), \fBtimer_create\fP(2),
\fBtimerfd_create\fP(2), \fBtime\fP(7)
.PP
.SH 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@laposte.net>,
Thierry Vignaud <tvignaud@mandriva.com>,
François Micaux,
Alain Portal <aportal@univ-montp2.fr>,
Jean-Philippe Guérard <fevrier@tigreraye.org>,
Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>,
Julien Cristau <jcristau@debian.org>,
Thomas Huriaux <thomas.huriaux@gmail.com>,
Nicolas François <nicolas.francois@centraliens.net>,
Florentin Duneau <fduneau@gmail.com>,
Simon Paillard <simon.paillard@resel.enst-bretagne.fr>,
Denis Barbier <barbier@debian.org>,
David Prévot <david@tilapin.org>,
Cédric Boutillier <cedric.boutillier@gmail.com>,
Frédéric Hantrais <fhantrais@gmail.com>
et
Jean-Philippe MENGUAL <jpmengual@debian.org>
.
.PP
Cette traduction est une documentation libre ; veuillez vous reporter à la
.UR https://www.gnu.org/licenses/gpl-3.0.html
GNU General Public License version 3
.UE
concernant les conditions de copie et 
de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
.PP
Si vous découvrez un bogue dans la traduction de cette page de manuel, 
veuillez envoyer un message à
.MT debian-l10n-french@lists.debian.org
.ME .