Provided by: manpages-de-dev_0.10-1_all bug

BEZEICHNUNG

       getitimer,  setitimer  -  Zeit eines Intervall-Zeitgebers abfragen oder
       setzen

"UBERSICHT

       #include <sys/time.h>

       int getitimer(int welcher, struct itimerval *aktueller wert);
       int setitimer(int welcher,
                     const struct itimerval *neuer_wert,
                     struct itimerval *alter_wert);

BESCHREIBUNG

       Das System stellt jedem Prozess drei Intervall-Zeitgeber zur Verfugung,
       die  in  verschiedenen  Zeitdomanen  herunterzahlen. Wenn der Zeitgeber
       ablauft, wird ein Signal an  den  Prozess  gesandt  und  der  Zeitgeber
       startet (moglicherweise) von vorne.

       ITIMER_REAL    zahlt in Echtzeit zuruck und liefert bei Ablauf SIGALRM.

       ITIMER_VIRTUAL zahlt  nur  zuruck, wenn der Prozess ausgefuhrt wird und
                      liefert bei Ablauf SIGVTALRM.

       ITIMER_PROF    zahlt sowohl zuruck, wenn der  Prozess  ausgefuhrt  wird
                      als  auch,  wenn  das  System fur den Prozess tatig ist.
                      Zusammen  mit  ITIMER_VIRTUAL  kann   dieser   Zeitgeber
                      ermitteln,  wie lange eine Applikation sich im Benutzer-
                      und  im  Kernel-Adressraum  aufhalt.  Bei  Ablauf   wird
                      SIGPROF geliefert.

       Zeitgeberwerte sind durch folgende Strukturen definiert:

           struct itimerval
           {
               struct timeval it_interval; /* nachster Wert */
               struct timeval it_value;    /* aktueller Wert */
           };

           struct timeval
           {
               long tv_sec;                /* Sekunden */
               long tv_usec;               /* Mikrosekunden */
           };

       Die  Funktion  getitimer()  fullt  die  Struktur auf die aktueller_wert
       zeigt mit der aktuellen Einstellung fur den durch  welcher  angegebenen
       Zeitgeber  (ITIMER_REAL,  ITIMER_VIRTUAL oder ITIMER_PROF). Das Element
       it_value wird auf den Betrag der Zeit gesetzt, die  auf  dem  Zeitgeber
       verblieben  ist  oder  Null,  wenn  der  Zeitgeber  ausgeschaltet  ist.
       GleichermaBen wird it_interval auf den Rucksetzwert gesetzt.

       Die Funktion setitimer() setzt den angegebenen Zeitgeber auf  den  Wert
       in  neuer_wert.  Falls  alter_wert  nicht  NULL ist, wird der alte Wert
       dieses Zeitgebers dort gespeichert.

       Zeitgeber zahlen von it_value bis Null herunter, generieren ein  Signal
       und  werden  auf  it_interval zuruckgesetzt. Ein Zeitgeber,der auf Null
       gesetzt ist  (it_value  ist  Null  oder  der  Zeitgeber  lauft  ab  und
       it_interval ist Null), stoppt.

       Sowohl  tv_sec  als auch tv_usec sind fur das Festlegen der Dauer eines
       Zeitgebers von maBgeblich.

       Zeitgeber laufen nie vor der angeforderten Zeit ab, konnten  aber  eine
       (kurze) Zeit danach ablaufen. Dies hangt von der Zeitgeberauflosung des
       Systems und der Systemauslastung ab;  siehe  time(7).  (Siehe  aber  im
       Folgenden  den  Abschnitt FEHLER.) Bei Ablauf wird ein Signal generiert
       und der Zeitgeber wird  zuruckgesetzt.  Falls  ein  Zeitgeber  ablauft,
       wahrend  der  Prozess  aktiv  ist (trifft fur ITIMER_VIRTUAL immer zu),
       wird das Signal sofort gesandt, wenn es generiert ist. Andernfalls wird
       das Senden ein wenig verzogert, abhangig von der Systemauslastung.

R"UCKGABEWERT

       Bei   Erfolg   wird  Null  zuruckgegeben.  Bei  einem  Fehler  wird  -1
       zuruckgegeben und errno entsprechend gesetzt.

FEHLER

       EFAULT neuer_wert, alter_wert oder aktueller_wert sind  keine  gultigen
              Zeiger.

       EINVAL welcher  ist  weder ITIMER_REAL, ITIMER_VIRTUAL noch ITIMER_PROF
              oder (seit Linux 2.6.22) einer  der  tv_usec-Felder  in  in  der
              Struktur,  auf  die  neuer_wert  zeigt,  enthalt einen Wert, der
              auBerhalb des Bereichs 0 bis 999999 liegt.

KONFORM ZU

       POSIX.1-2001,  SVr4,  4.4BSD  (dieser  Aufruf  erschien  erstmalig   in
       4.2BSD).  POSIX.1-2008  kennzeichnet  getitimer()  und  setitimer() als
       veraltet und empfiehlt stattdessen die POSIX-Zeitgeber-API zu  benutzen
       (timer_gettime(2), timer_settime(2), etc.).

ANMERKUNGEN

       Ein  Kindprozess,  der  mittels  fork(2)  erzeugt wurde. erbt nicht die
       Intervall-Zeitgeber seines Elternprozesses. Intervall-Zeitgeber  werden
       uber ein execve(2) konserviert.

       POSIX.1  beschreibt das Zusammenspiel zwischen setitimer() und den drei
       Schnittstellen alarm(2), sleep(3) und usleep(3) nicht naher.

FEHLER

       Das Generieren und Senden eines Signals sind eigenstandig und nur  eine
       Instanz von jedem der oben aufgelisteten Signale kann fur einen Prozess
       anstehen. Unter sehr hoher Systemlast  kann  ein  ITIMER_REAL-Zeitgeber
       ablaufen  bevor das Signal von einem vorherigen Ablauf geliefert wurde.
       Das zweite Signal geht bei einem solchen Ereignis verloren.

       Auf  Linux-Kerneln  vor  2.6.16  wurden   Zeitgeberwerte   in   Jiffies
       dargestellt.  Falls  eine  Anfrage  zum  Setzen  des Zeitgebers gemacht
       wurde, dessen Jiffies-Entsprechung  MAX_SEC_IN_JIFFIES  ubersteigt  (in
       include/linux/jiffies.h    definiert),   dann   wurde   der   Zeitgeber
       stillschweigend auf diese Obergrenze  gekurzt.  Auf  Linux/i386  (wobei
       seit  Linux  2.6.13  der  Standard-Jiffy  0,004  Sekunden  entspricht),
       bedeutet dies, dass die Obergrenze  fur  einen  Zeitgeber  zirka  99,42
       Tagen  entspricht.  Seit  Linux  2.6.16  benutzt der Kernel eine andere
       interne Entsprechung fur Zeiten und diese Obergrenze wurde entfernt.

       Auf bestimmten Systemen (einschlieBlich i386)  haben  Linux-Kernel  vor
       2.6.12  einen  Fehler,  der unter Umstanden vorzeitige Zeitgeberablaufe
       von bis zu einem Jiffy produziert. Dieser Fehler wurde in Kernel 2.6.12
       behoben.

       Laut   POSIX.1-2001   sollte   setitimer()   fehlschlagen,   wenn   ein
       tv_usec-Wert angegeben wurde, der auBerhalb des Bereichs 0  bis  999999
       liegt.  In  Kerneln  bis einschlieBlich 2.6.21 gibt Linux jedoch keinen
       Fehler  zuruck,   sondern   passt   stattdessen   stillschweigend   den
       Sekundenwert  fur  den  Zeitgeber  an.  Ab Kernel 2.6.22 aufwarts wurde
       dieser Fehler behoben: Ein  unpassender  tv_usec-Wert  fuhrt  zu  einem
       EINVAL-Fehler.

SIEHE AUCH

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

KOLOPHON

       Diese  Seite  ist  Teil  der   Veroffentlichung   3.32   des   Projekts
       Linux-man-pages.  Eine Beschreibung des Projekts und Informationen, wie
       Fehler    gemeldet     werden     konnen,     finden     sich     unter
       http://www.kernel.org/doc/man-pages/.

"UBERSETZUNG

       Die  deutsche  Ubersetzung  dieser  Handbuchseite wurde von Chris Leick
       <c.leick@vollbio.de> erstellt.

       Diese Ubersetzung ist Freie Dokumentation; lesen Sie  die  GNU  General
       Public   License   Version   3  oder  neuer  bezuglich  der  Copyright-
       Bedingungen. Es wird KEINE HAFTUNG ubernommen.

       Wenn  Sie  Fehler  in  der  Ubersetzung  dieser  Handbuchseite  finden,
       schicken     Sie     bitte     eine     E-Mail     an     <debian-l10n-
       german@lists.debian.org>.

Linux                            15. Marz 2009                    GETITIMER(2)