timer_getoverrun(2) System Calls Manual timer_getoverrun(2) BEZEICHNUNG timer_getoverrun -Uberlaufzahler fur prozessbezogene POSIX-Timer erhalten BIBLIOTHEK Echtzeitbibliothek (librt, -lrt) UBERSICHT #include 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 >>Uberlaufzahler<< fur den durch timerid referenzierten Zahler zuruck. Eine Anwendung kann den Uberlaufzahler fur die Berechnung der genauen Anzahl der Timer-Ablaufe verwenden, die uber eine angegebene Zeitdauer aufgetreten waren. Timer-Uberlaufe konnen sowohl beim Empfang von Ablaufbenachrichtigungen mittels Signalen (SIGEV_SIGNAL) wie auch uber Threads (SIGEV_THREAD) erfolgen. Wenn Ablaufbenachrichtigungen uber ein Signal ausgeliefert werden, konnen Uberlaufe wie folgt auftreten. Unabhangig davon, ob ein Echtzeitsignal fur die Timer-Benachrichtigung verwandt wird, stellt das System hochstens ein Signal pro Timer in die Warteschlange. (Dies ist das von POSIX.1 spezifiziert Verhalten. Die Alternative, ein Signal fur jeden Timer-Ablauf in die Warteschlange zu stellen, konnte leicht in einen Uberlauf der erlaubten Beschrankungen fur Signale in Warteschlangen auf dem System fuhren.) Aufgrund von System-Scheduling-Verzogerungen oder aufgrund temporarer Blockierungen des Signals kann es eine Verzogerung 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 konnen weitere Timer-Ablaufe auftreten. Die Timer-Uberlaufzahlung ist die Anzahl der zusatzlichen Timer-Ablaufe, die zwischen dem Zeitpunkt der Erstellung des Signals und dem Zeitpunkt der Auslieferung oder Akzeptanz aufgetreten sind. Timer-Uberlaufe konnen auch auftreten, wenn Ablaufbenachrichtigungen mittels Aufruf eines Threads ausgeliefert werden, da es eine beliebige Verzogerung zwischen einem Ablauf des Timers und dem Aufruf des Benachrichtigungs-Threads geben kann und in diesem Verzogerungsintervall zusatzliche Timer-Ablaufe auftreten konnen. RUCKGABEWERT Im Erfolgsfall liefert timer_getoverrun() den Uberlaufzahler des festgelegten Timers zuruck; dieser Zahler kann 0 sein, falls keine Uberlaufe aufgetreten sind. Im Fehlerfall wird -1 zuruckgeliefert und errno gesetzt, um den Fehler anzuzeigen. FEHLER EINVAL timer_kennung ist keine gultige Timer-Kennung. VERSIONEN Wenn Timer-Benachrichtigungen mittels Signalen (SIGEV_SIGNAL) ausgeliefert werden, ist es unter Linux auch moglich, den Uberlaufzahler mittels des Feldes si_overrun der Struktur siginfo_t zu erhalten (siehe sigaction(2)). Dies ermoglicht es einer Anwendung, den Zusatzaufwand der Ausfuhrung eines Systemaufrufs zu vermeiden, um den Uberlaufzahler zu ermitteln, ist aber eine nicht portierbare Erweiterung von POSIX.1. POSIX.1 behandelt Uberlaufe 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 zuruckliefern soll, wenn der Uberlaufzahler grosser oder gleich einem implementierungsabhangigen Maximum DELAYTIMER_MAX ist. Vor Linux 4.19 beginnt der Zahlerzyklus erneut von niedrigen Werten, falls der Timer-Uberlaufwert die maximal darstellbare Ganzzahl uberschreitet. Seit Linux 4.19 liefert timer_getoverrun() in diesem Fall DELAYTIMER_MAX (definiert als INT_MAX in ) zuruck (und der Uberlaufwert wird auf 0 zuruckgesetzt). 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) UBERSETZUNG Die deutsche Ubersetzung dieser Handbuchseite wurde von Helge Kreutzmann erstellt. Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG ubernommen. Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer . Linux man-pages 6.8 2. Mai 2024 timer_getoverrun(2)