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

BEZEICHNUNG

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

ÜBERSICHT

       #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  Verfügung,  die  in
       verschiedenen Zeitdomänen herunterzählen. Wenn der Zeitgeber abläuft, wird ein  Signal  an
       den Prozess gesandt und der Zeitgeber startet (möglicherweise) von vorne.

       ITIMER_REAL    zählt in Echtzeit zurück und liefert bei Ablauf SIGALRM.

       ITIMER_VIRTUAL zählt  nur  zurück, wenn der Prozess ausgeführt wird und liefert bei Ablauf
                      SIGVTALRM.

       ITIMER_PROF    zählt sowohl zurück, wenn der Prozess ausgeführt wird als  auch,  wenn  das
                      System  für  den Prozess tätig ist. Zusammen mit ITIMER_VIRTUAL kann dieser
                      Zeitgeber ermitteln, wie lange eine Applikation sich im  Benutzer-  und  im
                      Kernel-Adressraum aufhält. Bei Ablauf wird SIGPROF geliefert.

       Zeitgeberwerte sind durch folgende Strukturen definiert:

           struct itimerval
           {
               struct timeval it_interval; /* nächster Wert */
               struct timeval it_value;    /* aktueller Wert */
           };

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

       Die Funktion getitimer() füllt die Struktur auf die aktueller_wert zeigt mit der aktuellen
       Einstellung für 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.  Gleichermaßen
       wird it_interval auf den Rücksetzwert 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 zählen von it_value bis Null herunter, generieren  ein  Signal  und  werden  auf
       it_interval  zurückgesetzt. Ein Zeitgeber,der auf Null gesetzt ist (it_value ist Null oder
       der Zeitgeber läuft ab und it_interval ist Null), stoppt.

       Sowohl tv_sec als auch tv_usec sind für das  Festlegen  der  Dauer  eines  Zeitgebers  von
       maßgeblich.

       Zeitgeber  laufen nie vor der angeforderten Zeit ab, könnten aber eine (kurze) Zeit danach
       ablaufen. Dies hängt von der Zeitgeberauflösung 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 zurückgesetzt. Falls ein Zeitgeber abläuft,  während  der
       Prozess  aktiv  ist  (trifft für ITIMER_VIRTUAL immer zu), wird das Signal sofort gesandt,
       wenn es generiert ist. Andernfalls wird das Senden ein wenig verzögert, abhängig  von  der
       Systemauslastung.

RÜCKGABEWERT

       Bei  Erfolg  wird  Null  zurückgegeben.  Bei  einem Fehler wird -1 zurückgegeben und errno
       entsprechend gesetzt.

FEHLER

       EFAULT neuer_wert, alter_wert oder aktueller_wert sind keine gültigen 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,
              enthält einen Wert, der außerhalb 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 über ein execve(2) konserviert.

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

FEHLER

       Das Generieren und Senden eines Signals sind eigenständig und nur eine Instanz  von  jedem
       der  oben  aufgelisteten  Signale  kann  für  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  übersteigt  (in  include/linux/jiffies.h  definiert),  dann  wurde der
       Zeitgeber stillschweigend auf diese Obergrenze gekürzt. Auf Linux/i386 (wobei  seit  Linux
       2.6.13  der  Standard-Jiffy 0,004 Sekunden entspricht), bedeutet dies, dass die Obergrenze
       für einen Zeitgeber zirka 99,42 Tagen entspricht. Seit Linux  2.6.16  benutzt  der  Kernel
       eine andere interne Entsprechung für Zeiten und diese Obergrenze wurde entfernt.

       Auf  bestimmten Systemen (einschließlich i386) haben Linux-Kernel vor 2.6.12 einen Fehler,
       der unter Umständen vorzeitige Zeitgeberabläufe 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 außerhalb des Bereichs 0 bis 999999 liegt. In Kerneln bis einschließlich  2.6.21  gibt
       Linux   jedoch  keinen  Fehler  zurück,  sondern  passt  stattdessen  stillschweigend  den
       Sekundenwert für den Zeitgeber an. Ab Kernel 2.6.22 aufwärts wurde dieser Fehler  behoben:
       Ein unpassender tv_usec-Wert führt 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  Veröffentlichung  3.32  des  Projekts  Linux-man-pages. Eine
       Beschreibung des Projekts und Informationen, wie Fehler  gemeldet  werden  können,  finden
       sich unter http://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

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

       Diese Übersetzung ist Freie Dokumentation;  lesen  Sie  die  GNU  General  Public  License
       Version   3  oder  neuer  bezüglich  der  Copyright-Bedingungen.  Es  wird  KEINE  HAFTUNG
       übernommen.

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