Provided by: manpages-de-dev_1.4-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
           {
               time_t tv_sec;             /* Sekunden */
               suseconds_t 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.

       Die Standards schweigen zu der Bedeutung des folgenden Aufrufs:

           setitimer(which, NULL, &alter_wert);

       Viele Systeme (Solaris, die BSDs und vielleicht andere) behandeln dies zu folgendem äquivalent:

           getitimer(which, &alter_wert);

       Unter Linux wird dies als äquivalent zu einem Aufruf betrachtet, bei dem die Felder neuer_wert Null sind,
       das  heißt, der Zeitgeber deaktiviert ist. Benutzen Sie nicht diese ungünstige Linux-Eigenschaft: Sie ist
       unnötig und nicht portierbar.

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

       This  page  is  part  of  release  3.54 of the Linux man-pages project. A description of the project, and
       information about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

       Die deutsche Übersetzung dieser Handbuchseite  wurde  von  Chris  Leick  <c.leick@vollbio.de>  und  Helge
       Kreutzmann <debian@helgefjell.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>.

Linux                                            1. Oktober 2012                                    GETITIMER(2)