Provided by: manpages-nl-dev_4.15.0-9_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 *nieuwe_waarde,
                     struct itimerval *oude_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.13  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
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  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⟩.