getitimer(3C) getitimer(3C)
NAME
getitimer, setitimer - Intervallzeitgeber lesen und setzen
SYNTAX
#include <sys/time.h>
int getitimer(int which, struct itimerval *value);
int setitimer(int which, struct itimerval *value,
struct itimerval *ovalue);
BESCHREIBUNG
Das System bietet jedem Prozeß drei Intervallzeitgeber an, die in der
Datei sys/time.h vereinbart werden. Der Aufruf getitimer() speichert
den aktuellen Wert des Timers (Zeitgebers) which in der Struktur, auf
die value zeigt. Der Aufruf setitimer() setzt den Wert von which auf
den Wert, der in der Struktur steht, auf die value zeigt; ist ovalue
nicht gleich NULL, wird der vorherige Wert des Timers in der Struktur
abgelegt, auf die ovalue zeigt.
Die Einstellung eines Timers wird durch die Struktur itimerval (siehe
gettimeofday(3C) für die Definition von timeval) definiert, welche die
folgenden Komponenten enthält:
struct timeval itinterval; /* Timer-Intervall */
struct timeval itvalue; /* aktueller Wert */
Wenn itvalue ungleich Null ist, wird der Zeitpunkt des nächsten
Ablaufens des Timers angegeben. Wenn itinterval ungleich Null ist,
wird ein Wert angegeben, auf den itvalue gesetzt wird, wenn der Timer
abläuft. Wird itvalue auf Null gesetzt, so wird der Timer deakti-
viert, unabhängig vom Wert von itinterval. Das Setzen von itinterval
auf Null deaktiviert den Timer nach seinem nächsten Ablauf (vorausge-
setzt, daß itvalue ungleich Null ist).
Sind Zeitwerte kleiner als die Auflösung der Systemuhr, so werden
diese auf die Auflösung der Systemuhr gerundet.
Die drei Timer sind:
ITIMERREAL
In Realzeit des Prozesses dekrementieren. Das Signal SIGALRM wird
gesendet, wenn dieser Timer abläuft.
ITIMERVIRTUAL
In virtueller Prozeßzeit [Zeit des Prozesses im Benutzermodus
(user mode)] dekrementieren. Dieser Timer läuft nur, wenn der
Prozeß ausgeführt wird. Das Signal SIGVTALRM wird gesendet, wenn
dieser Timer abläuft.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
getitimer(3C) getitimer(3C)
ITIMERPROF
Sowohl in virtueller Prozeßzeit als auch in Realzeit [Zeit des
Prozesses im Benutzer- und im Systemmodus (user and sys mode)]
dekrementieren. Dieser Timer dient Interpretern zur statistischen
Profilerstellung der Ausführungszeit interpretierter Programme.
Jedesmal, wenn der Timer ITIMERPROF abläuft, wird das Signal
SIGPROF gesendet. Da dieses Signal Systemaufrufe des Prozesses
unterbricht, müssen diejenigen Programme, die diesen Timer ver-
wenden, darauf vorbereitet sein, die unterbrochenen Systemaufrufe
zu wiederholen.
Die Interaktion zwischen setitimer() und einem Aufruf von alarm(),
sleep() oder usleep() ist undefiniert.
ERGEBNIS
Wenn der Aufruf erfolgreich war, wird der Wert 0 zurückgegeben. Tritt
ein Fehler auf, wird -1 zurückgegeben und der Fehlercode in die glo-
bale Variable errno geschrieben.
Unter der folgenden Bedingung schlagen die Funktionen getitimer() und
setitimer() fehl und setzen errno auf den angegebenen Wert:
EINVAL Die angegebenen Sekunden sind größer als 100.000.000, die
angegebenen Mikrosekunden sind größer oder gleich 1.000.000,
oder der Parameter which wurde nicht erkannt.
HINWEISE
Das Feld mit den Mikrosekunden darf keinen Wert enthalten, der gleich
oder größer als eine Sekunde ist.
setitimer() ist unabhängig vom Systemaufruf alarm().
Benutzen Sie setitimer() nicht zusammen mit der sleep()-Routine. Ein
Aufruf von sleep() nach setitimer() löscht die Informationen der Sig-
nalbehandlungsroutine des Benutzers.
SIEHE AUCH
alarm(2), sleep(3), usleep(3), gettimeofday(3C), sleep(3C), signal(5),
systime(5), time(5).
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98