Provided by: manpages-nl-dev_4.27.0-1_all 

NAAM
getitimer, setitimer - krijg of zet waarde voor een interval wekker
BIBLIOTHEEK
Standard C bibliotheek (libc, -lc)
SAMENVATTING
#include <sys/time.h>
int getitimer(int welke, struct itimerval *huidige_waarde);
int setitimer(int welke, const struct itimerval *nieuwe_waarde,
struct itimerval *_NULL_baaroude_waarde);
BESCHRIJVING
Deze systeem aanroepen geven toegang tot de interval timers, dit zijn, timers die aflopen op een punt in
de toekomst, en (optioneel) op regelmatige intervallen nadien. Als een timer afloopt, dan wordt een
signaal gegenereerd voor het aanroepende proces, en wordt de timer gereset naar het opgeven interval (als
dit interval niet nul was).
Drie typen van timers—gespecificeerd door middel van het welke argument—worden gemaakt, waarvan elk type
tikt met een verschillende klok en die een ander signaal genereert op het moment van aflopen:
ITIMER_REAL
De timer loopt omlaag in de echte (b.v. wandklok) tijd. Bij elk aflopen wordt een SIGALRM signaal
gegenereerd.
ITIMER_VIRTUAL
De timer telt omlaag met de gebruikers-mode CPU tijd die door het proces geconsumeerd wordt. (Deze
meting omvat de gebruikte CPU tijd, die door alle threads in het proces geconsumeerd worden.) Bij
elk aflopen wordt een SIGVTALRM signaal gegenereerd.
ITIMER_PROF
Deze timer telt af vanaf de totale CPU tijd (m.a.w. zowel gebruiker als systeem) die door het
proces geconsumeerd wordt. (De meting omvat de CPU tijd die wordt geconsumeerd door alle threads
van het proces.) Elke keer als de timer verloopt wordt een SIGPROF signaal gegenereerd.
In samenhang met ITIMER_VIRTUAL kan deze timer worden gebruikt om de gebruiker en systeem CPU tijd
die door het proces geconsumeerd wordt te meten.
Elk proces heeft alleen een van elk van de drie typen timers.
Wekker waardes worden bepaald door de volgende structuren:
struct itimerval {
struct timeval it_interval; /* Interval voor periodieke timer */
struct timeval it_value; /* Tijd tot volgende verlopen */
};
struct timeval {
time_t tv_sec; /* seconden */
suseconds_t tv_usec; /* microseconden */
};
getitimer()
De functie getitimer(2) slaat de huidige waarde van de timer gegeven door huidige_waarde op in de
structuur aangewezen door huidige_waarde.
De it_value substructuur wordt gevuld met de hoeveelheid time de overblijft tot het eerst volgende
verlopen van de gespecificeerde timer. Deze waarde verandert als de timer aftelt, en wordt terug gezet
naar it_value wanneer de timer afloopt. Indien beide velden van it_value nul zijn, dan wordt de timer
niet actief gemaakt.
De it_value substructuur wordt gevuld met het timer interval. Als beide velden van it_value nul zijn,
dan wordt het een eenmalige timer (m.a.w. dan verloopt deze precies een keer).
setitimer()
De functie setitimer(2) vult of leegt de aangewezen timer naar de waarde in waarde, door het zetten van
de timer op de waarde aangegeven door new_value. Indien old_value niet-nul is, dan wordt de buffer waar
het naar wijst gebruikt om de vorige waarde van de timer terug te geven (m.a.w. dezelfde informatie die
wordt teruggegeven door getitimer()).
Als een van beide velden in new_value.it_value niet-nul is, dan wordt de timer geladen om te verlopen op
de initieel opgegeven tijd. Als beide velden in new_value.it_value nul zijn, dan wordt de timer uitgezet.
Het new_value.it_value veld bepaalt het nieuwe interval voor de timer; indien beide subvelden nul zijn,
dan is het een eenmalige timer.
EIND WAARDE
Bij succes wordt nul teruggegeven. Bij falen wordt -1 teruggegeven en wordt errno overeenkomstig gezet.
FOUTEN
EFAULT nieuw_waarde, oud_waarde of huidige_waarde zijn geen geldige pointers.
EINVAL welke is niet een van ITIMER_REAL, ITIMER_VIRTUAL of ITIMER_PROF; of (vanaf Linux 2.6.22) een van
de tv_usec velden in de structure aangewezen door nieuwe_waarde bevat een waarde buiten het bereik
[0, 999999].
VERSIES
De standaarden vermelden de betekenis van de aanroep:
setitimer(which, NULL, &oud_waarde);
Veel systemen (Solaris, de BSD´s, en misschien andere) behandelen dit als equivalent met:
getitimer(which, &oud_waarde);
In Linux, wordt dit behandeld als equivalent met een aanroep waarin het nieuw_waarde veld nul zijn; dit
betekent dat de timer is uitgeschakeld. Gebruik dit Linux fenomeen niet: het is niet overdraagbaar en
onnodig.
VOLDOET AAN
POSIX.1-2008.
GESCHIEDENIS
POSIX.1-2001, SVr4, 4.4BSD (de aanroep verscheen voor het eerst in 4.2BSD). POSIX.1-2008 markeerde
getitimer() en setitimer() als verouderd, en beval het gebruik van de POSIX timer API
(timer_gettime(2), timer_settime(2), etc.) in plaats daarvan aan.
OPMERKINGEN
Timers lopen nooit af vóór de gevraagde tijd, maar mogen (korte) tijd ná die tijd aflopen, dit hangt af
van resolutie van de systeem timer en van de belasting van het systeem; zie time(7). (Maar zie BUGS
hieronder.) Als de timer afloopt terwijl het proces actief is (altijd waar voor ITIMER_VIRTUAL), dan
wordt het signaal onmiddellijk afgeleverd nadat het gegenereerd werd.
Een kind aangemaakt via fork(2) erft niet de interval timers van zijn ouder. Interval timers blijven
bewaard door een execve(2).
POSIX.1 specificeert de interactie tussen setitimer() en de drie interfaces alarm(2), sleep(3), en
usleep(3) niet.
BUGS
Het genereren en afleveren van een signaal zijn verschillend, en alleen een instantie van elk van de
hierboven genoemde signalen mag in behandeling zijn in een proces. Bij sterke belasting, kan een
ITIMER_REAL timer verlopen voordat het signaal van een eerdere timer afloop werd afgeleverd. In dat geval
zal het tweede signaal verloren gaan.
Voor Linux 2.6.16 worden timer waarde gerepresenteerd met jiffies. Als een verzoek wordt gemaakt om een
timer te zetten met een waarde wiens jiffie representatie MAX_SEC_IN_JIFFIES (gedefinieerd in
include/linux/jiffies.h) overschrijd, dan wordt de timer stilzwijgend beperkt tot de maximale waarde. Op
Linux/i386 (waar, vanaf Linux 2.6.13, de standaard jiffy gelijk is aan 0.004 seconden), betekent dit dat
de maximale waarde van een timer ongeveer 99,42 dagen is. Vanaf Linux 2.6.16, gebruikt de kernel een
verschillende interne representatie voor tijden, en is dit plafond verwijdert.
Op bepaalde systemen (inclusief i386), hebben Linux kernels voor Linux 2.6.12 een bug die onder bepaalde
omstandigheden het voortijdig aflopen van timers veroorzaakt tot wel een jiffy. Deze bug werd opgelost in
kernel 2.6.12.
POSIX.1-2001 schrijft voor dat setitimer() moet falen als een tv_usec waarde werd opgegeven die buiten
het bereik van 0 tot 999999 ligt. Echter in kernels tot en met 2.6.21, geeft Linux geen fout, maar past
in plaats daarvan stilzwijgend de overeenkomstige seconden waarde van de timer aan. Vanaf kernel 2.6.22,
werd deze niet-conformiteit gerepareerd: een ongeldige tv_usec waarde resulteert in een EINVAL fout.
ZIE OOK
gettimeofday(2), sigaction(2), signal(2), timer_create(2), timerfd_create(2), time(7)
VERTALING
De Nederlandse vertaling van deze handleiding is geschreven door Jos Boersema <joshb@xs4all.nl>, Mario
Blättermann <mario.blaettermann@gmail.com> en Luc Castermans <luc.castermans@gmail.com>
Deze vertaling is vrije documentatie; lees de GNU General Public License Version 3 of later over de
Copyright-voorwaarden. Er is geen AANSPRAKELIJKHEID.
Indien U fouten in de vertaling van deze handleiding zou vinden, stuur een e-mail naar debian-l10n-
dutch@lists.debian.org.
Linux man-pagina's 6.9.1 2 mei 2024 getitimer(2)