timer_getoverrun(2)

BEZEICHNUNG
timer_getoverrun -Überlaufzähler für prozessbezogene POSIX-Timer erhalten

BIBLIOTHEK
Echtzeitbibliothek (librt, -lrt)

ÜBERSICHT
#include <time.h>

int timer_getoverrun(timer_t timerid);

    Mit Glibc erforderliche Feature-Test-Makros (siehe feature_test_macros(7)):

timer_getoverrun():
    _POSIX_C_SOURCE >= 199309L

BESCHREIBUNG
timer_getoverrun() liefert den »Überlaufzähler« für den durch timerid referenzierten Zähler zurück. Eine Anwendung kann den Überlaufzähler für die Berechnung der genauen Anzahl der Timer-Abläufe verwenden, die über eine angegebene Zeitdauer aufgetreten wären. Timer-Überläufe können sowohl beim Empfang von Ablaufbenachrichtigungen mittels Signalen (SIGEV_SIGNAL) wie auch über Threads (SIGEV_THREAD) erfolgen.

Wenn Ablaufbenachrichtigungen über ein Signal ausgeliefert werden, können Überläufe wie folgt auftreten. Unabhängig davon, ob ein Echtzeitsignal für die Timer-Benachrichtigung verwandt wird, stellt das System höchstens ein Signal pro Timer in die Warteschlange. (Dies ist das von POSIX.1 spezifiziert Verhalten. Die Alternative, ein Signal für jeden Timer-Ablauf in die Warteschlange zu stellen, könnte leicht in einen Überlauf der erlaubten Beschränkungen für Signale in Warteschlangen auf dem System führen.) Aufgrund von System-Scheduling-Verzögerungen oder aufgrund temporärer Blockierungen des Signals kann es eine Verzögerung zwischen dem Zeitpunkt, zu dem das Benachrichtigungssignal erstellt wird und dem Zeitpunkt, zu dem es ausgeliefert (z.B. wenn es durch einen Signal-Handhaber gefangen wird) oder akzeptiert wird (z.B. mittels sigwaitinfo(2)), geben. In diesem Intervall können weitere Timer-Abläufe auftreten. Die Timer-Überlaufzählung ist die Anzahl der zusätzlichen Timer-Abläufe, die zwischen dem Zeitpunkt der Erstellung des Signals und dem Zeitpunkt der Auslieferung oder Akzeptanz aufgetreten sind.

Timer-Überläufe können auch auftreten, wenn Ablaufbenachrichtigungen mittels Aufruf eines Threads ausgeliefert werden, da es eine beliebige Verzögerung zwischen einem Ablauf des Timers und dem Aufruf des Benachrichtigungs-Threads geben kann und in diesem Verzögerungsintervall zusätzliche Timer-Abläufe auftreten können.

RÜCKGABEWERT
Im Erfolgsfall liefert timer_getoverrun() den Überlaufzähler des festgelegten Timers zurück; dieser Zähler kann 0 sein, falls keine Überläufe aufgetreten sind. Im Fehlerfall wird -1 zurückgeliefert und errno gesetzt, um den Fehler anzuzeigen.

FEHLER

EINVAL
    timer_kennung ist keine gültige Timer-Kennung.

VERSIONEN
Wenn Timer-Benachrichtigungen mittels Signalen (SIGEV_SIGNAL) ausgeliefert werden, ist es unter Linux auch möglich, den Überlaufzähler mittels des Feldes si_overrun der Struktur siginfo_t zu erhalten (siehe sigaction(2)). Dies ermöglicht es einer Anwendung, den Zusatzaufwand der Ausführung eines Systemaufrufs zu vermeiden, um den Überlaufzähler zu ermitteln, ist aber eine nicht portierbare Erweiterung von POSIX.1.

POSIX.1 behandelt Überlaufe nur im Kontext von Timer-Benachrichtigungen mittels Signalen.

STANDARDS
POSIX.1-2008.

GESCHICHTE
Linux 2.6. POSIX.1-2001.

FEHLER
POSIX.1 spezifiziert, dass timer_getoverrun() DELAYTIMER_MAX zurückliefern soll, wenn der Überlaufzähler größer oder gleich einem implementierungsabhängigen Maximum DELAYTIMER_MAX ist. Vor Linux 4.19 beginnt der Zählerzyklus allerdings erneut von niedrigen Werten, falls der Timer-Überlaufwert die maximal darstellbare Ganzzahl überschreitet und der Zähler in den nächsten Zyklus geht. Seit Linux 4.19 liefert timer_getoverrun() in diesem Fall DELAYTIMER_MAX (definiert als INT_MAX in <limits.h>) zurück (und der Überlaufwert wird auf 0 zurückgesetzt).

BEISPIELE
Siehe timer_create(2).

SIEHE AUCH
clock_gettime(2), sigaction(2), signalfd(2), sigwaitinfo(2), timer_create(2), timer_delete(2), timer_settime(2), signal(7), time(7)

ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann <debian@helgefjell.de> erstellt.

Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 (https://www.gnu.org/licenses/gpl-3.0.html) 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 die Mailingliste der Übersetzer: debian-l10n-german@lists.debian.org.