Subroutine gettimerid

Zweck

Ordnet einen prozesseigenen Intervallzeitgeber zu.

Bibliothek

Standard-C-Bibliothek (libc.a)

Syntax

#include <sys/time.h>
#include <sys/events.h>

timer_t gettimerid( timertype,  notifytype)
int timertype;
int notifytype;

Beschreibung

Die Subroutine gettimerid wird verwendet, um einen Zeitgeber pro Prozessintervall auf der Basis des Zeitgebers mit dem angegebenen Zeitgebertyp zuzuordnen. Die eindeutige ID wird verwendet, um den Intervallzeitgeber in Intervallzeitgeberanforderungen zu identifizieren. (Weitere Informationen finden Sie im Abschnitt zur Subroutine getinterval . Der bestimmte Zeitgebertyp, der Parameter Zeitgebertyp , wird in der sys/time.h -Datei definiert und kann entweder einen systemweiten Zeitgeber oder einen Zeitgeber pro Prozess angeben. Der Mechanismus, mit dem der Prozess über den Ablauf des Zeitgeberereignisses benachrichtigt werden soll, ist der Parameter notifytype , der in der Datei sys/events.h definiert ist.

Der Parameter Zeitgebertyp stellt einen der folgenden Zeitgebertypen dar:

Element Beschreibung
TimeOfDay POSIX -Systemzeitgeber. Dieser Zeitgeber stellt die Uhr des Systems dar. Für diesen Zeitgeber stellen die von der Subroutine gettimer zurückgegebenen und von der Subroutine settimer angegebenen Werte die Zeit seit 00:00:00 GMT, 1. Januar 1970 in Nanosekunden dar.
TIMERID_ALRM Alarmzeitgeber. Dieser Zeitgeber plant die Zustellung eines Signals SIGALRM bei einem Zeitgeber, der im Aufruf der Subroutine settimer angegeben ist.
TIMERID_REAL (TIMERID_REAL) Echtzeit-Timer. Der Echtzeitzeitgeber wird in Echtzeit verringert. Ein Signal SIGALRM wird zugestellt, wenn dieser Zeitgeber abläuft.
TIMERID_REAL_TH Zeitgeber pro Thread in Echtzeit. Wird in Echtzeit verringert und liefert ein Signal SIGTALRM , wenn es abläuft. SIGTALRM wird an den Thread gesendet, der den Zeitgeber festlegt. Jeder Thread hat einen eigenen Zeitgeber und kann seinen eigenen Zeitgeber bearbeiten. Dieser Zeitgeber wird nur mit dem 1:1-Threadmodell unterstützt. Wenn der Zeitgeber im Threadmodell M: N verwendet wird, können nicht definierte Ergebnisse auftreten.
TIMERID_VIRTUELL Virtueller Zeitgeber. Der virtuelle Zeitgeber verringert sich in der virtuellen Verarbeitungszeit. wird nur ausgeführt, wenn der Prozess im Benutzermodus ausgeführt wird. Ein Signal SIGVTALRM wird zugestellt, wenn es abläuft.
TIMERID_PROF (TIMERID_PROF) Zeitgeber für Profilermittlung. Der Zeitgeber für die Profilermittlung verringert sich sowohl bei Ausführung im Benutzermodus als auch bei Ausführung des Systems für den Prozess. Es ist so konzipiert, dass es von Prozessen verwendet werden kann, um ihre Ausführung statistisch zu profilieren. Ein Signal SIGPROF wird zugestellt, wenn der Zeitgeber für die Profilerstellung abläuft.

Intervallzeitgeber mit dem Benachrichtigungswert DELIVERY_SIGNAL werden von einer Subroutine exec übernommen.

Parameter

Element Beschreibung
Benachrichtigungsart Benachrichtigt den Prozess über den Ablauf des Zeitgeberereignisses.
Zeitgebertyp Gibt entweder einen systemweiten Zeitgeber oder einen prozessspezifischen Zeitgeber an.

Rückgabewerte

Wenn die Subroutine gettimerid erfolgreich ist, gibt sie eine timer_t -Struktur zurück, die an die Zeitgeber-Subroutinen pro Prozess, wie z. B. die Subroutine getinterval , übergeben werden kann. Wenn ein Fehler auftritt, wird der Wert -1 zurückgegeben und errno gesetzt.

Fehlercodes

Wenn das Unterprogramm gettimerid fehlschlägt, wird der Wert -1 zurückgegeben und errno auf einen der folgenden Fehlercodes gesetzt:

Element Beschreibung
EAGAIN Der aufrufende Prozess hat bereits alle Intervallzeitgeber zugeordnet, die dem angegebenen Zeitgebertyp für diese Implementierung zugeordnet sind.
EINVAL Der angegebene Zeitgebertyp ist nicht definiert.