Provided by: manpages-de-dev_0.5-4.1ubuntu1_all bug

BEZEICHNUNG

       getitimer, setitimer - holt/setzt Zeit eines Intervall-Timers

ÜBERSICHT

       #include <sys/time.h>

       int getitimer(int which, struct itimerval *value);
       int   setitimer(int   which,  const  struct  itimerval  *value,  struct
              itimerval *ovalue);

BESCHREIBUNG

       Das System stellt jedem Prozess drei Intervall-Timer zur Verfügung, die
       in  unterschiedlichen  Prozesszuständen bis Null herabzählen.  Wenn der
       Timer Null erreicht, wird ein Signal an den Prozess geliefert  und  der
       Timer startet (möglicherweise) von vorne.

       ITIMER_REAL    zählt  die tatsächlich laufende Zeit und liefert SIGALRM
                      wenn die Null erreicht wurde.

       ITIMER_VIRTUAL zählt nur, wenn der Prozess ausgeführt wird und  liefert
                      SIGVTALRM wenn die Null erreicht wurde.

       ITIMER_PROF    zählt  sowohl, wenn der Prozess Rechnerzeit beansprucht,
                      als auch, wenn das System für  den  Prozess  tätig  ist.
                      Zusammen  mit ITIMER_VIRTUAL, kann man so ermitteln, wie
                      lange  eine   Applikation   sich   im   User-   und   im
                      Kernelprogrammraum  aufhält.  Wenn der Zähler abgelaufen
                      ist, wird SIGPROF geliefert.

       Die Timerwerte sind durch folgende Strukturen definiert:
            struct itimerval
            {
                struct timeval it_interval; /* nächster Timerwert */
                struct timeval it_value;    /* dieser Timerwert */
            };
            struct timeval
            {
                long tv_sec;                /* Sekunden */
                long tv_usec;               /* Mikrosekunden */
            };

       Getitimer(2) füllt die Struktur value  mit  den  aktuellen  Werten  des
       Timers,   den  which  angibt,  was  ITIMER_REAL,  ITIMER_VIRTUAL,  oder
       ITIMER_PROF) sein  kann.   The  element  it_value  wird  auf  die  Zeit
       gesetzt,  die  noch verbleibt oder auf Null, wenn der Timer nicht aktiv
       ist.  Analog wird it_interval auf den Resetwert gesetzt.

       Setitimer(2) setzt den angegebenen Timer auf den  Wert,  der  in  value
       referenziert  wird.   Falls  ovalue  nicht Null ist, wird der alte Wert
       dort abgelegt.

       Timer werden von it_value dekrementiert bis Null erreicht wird, es wird
       ein  Signal  ausgelöst und der Timer wird auf den Beginn des Intervalls
       it_interval zurückgesetzt.   Ein  Timer,  der  auf  Null  gesetzt  wird
       (it_value  ist  Null  oder  der Timer läuft ab und it_interval wird auf
       Null gesetzt) terminiert.

       Timer laufen nie vor der  angeforderten  Zeit  ab,  sondern  eher  eine
       konstant  kurze  Zeitspanne später.  Die Größe der Zeitspanne hängt von
       der Auflösung des Timer ab (aktuell 10ms).  Bei Ablauf wird ein  Signal
       erzeugt  und  der  Timer  beginnt von neuem.  Wenn das Signal ausgelöst
       wird, wenn der Prozess aktiv ist (das ist  bei  ITIMER_VIRT  stets  der
       Fall),  wird  das Signal augenblicklich ausgeliefert.  Andernfalls wird
       das Signal  etwas  später  ausgeliefert,  was  von  der  Belastung  der
       Maschine abhängen kann.

RÜCKGABEWERT

       Bei  Erfolg  wird  Null  geliefert,  bei  aufgetretenem  Fehler wird -1
       geliefert und errno wird entsprechend gesetzt.

FEHLER

       EFAULT         value oder ovalue sind keine gültigen Pointer.

       EINVAL         which  ist  weder  ITIMER_REAL  noch  ITIMER_VIRT   noch
                      ITIMER_PROF.

BUGS

       Unter  Linux  ist der Zeitpunkt der Auslösung des Signals vom Zeitpunkt
       der Auslieferung verschieden und es existiert keine Warteschlange.  Das
       bedeutet,  dass unter unbeschreiblich starker Belastung es denkbar ist,
       dass ITIMER_REAL abläuft, bevor das  Signal  des  vorigen  Ablaufs  des
       Timers ausgeliefert wurde.  Das zweite Signal wird verloren.

SIEHE AUCH

       gettimeofday(2), sigaction(2), signal(2).