Provided by: manpages-nl-dev_4.13-4_all bug

NAAM

       getitimer, setitimer - krijg of zet waarde voor een interval wekker

SAMENVATTING

       #include <sys/time.h>

       int getitimer(int welke, struct itimerval *huidige_waarde);
       int setitimer(int welke, const struct itimerval *nieuw_waarde,
                     struct itimerval *oud_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\mgespecificeerd  door middel van het welke argument\mworden 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 een periodieke timer */
               struct timeval it_value;    /* Tijd tot de volgende afloop  */
           };

           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.

VOLDOET AAN

       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.

       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.

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.

       Op Linux kernels voor 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 versie 2.6.12 een bug die onder bepaalde
       omstandigheden het voortijdig aflopen van timers veroorzaakt tot wel een jiffy. Deze bug  werd  verbeterd
       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 waarderesulteert in een EINVAL fout.

ZIE OOK

       gettimeofday(2), sigaction(2), signal(2), timer_create(2), timerfd_create(2), time(7)

COLOFON

       Deze pagina is onderdeel van release 5.10 van het  Linux  man-pages-project.  Een  beschrijving  van  het
       project,  informatie  over  het  melden  van  bugs  en  de  nieuwste  versie  van  deze  pagina  zijn  op
       https://www.kernel.org/doc/man-pages/ te vinden.

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                                             11 april 2020                                     GETITIMER(2)