table of contents
| timer_getoverrun(2) | System Calls Manual | timer_getoverrun(2) |
NAVN¶
timer_getoverrun - hent overløbsantal for et POSIX per proces-stopur
BIBLIOTEK¶
Realtidsbibliotek (librt, -lrt)
SYNOPSIS¶
#include <time.h>
int timer_getoverrun(timer_t timerid);
timer_getoverrun():
_POSIX_C_SOURCE >= 199309L
BESKRIVELSE¶
timer_getoverrun() returnerer »overløbsantallet« (overrun count) for stopuret refereret til af timerid. Et program kan bruge overløbsantallet til præcist at beregne antallet af stopursudløb, der ville være sket over et tidsinterval. Stopursoverløb kan opstå både under modtagelse af udløbspåmindelser via signaler (SIGEV_SIGNAL), og via tråde (SIGEV_THREAD).
Når udløbspåmindelser leveres via et signal kan overløb opstå som en følge. Uanset om et realtids signal bruges for stopurspåmindelser, så sætter systemet mindst et signal per stopur i kø. (Dette er opførelsen anført af POSIX.1. Alternativet at lave en kø for et signal for hver stopursudløb kan nemt medføre mere end de tilladte begrænsninger for signaler i kø på systemet). På grund af systemplanlægningsforsinkelser eller fordi signalet kan være midlertidigt blokeret, kan der være en forsinkelse mellem tiden hvor påmindelsessignalet oprettes og tiden hvor det leveres (f.eks. fanget af en signalhåndtering) eller accepteret (f.eks. via sigwaitinfo(2)). I dette interval kan yderligere stopursudløb opstå. Stopurets overløbantal er antallet af yderligere stopursudløb, der opstod mellem tiden hvor signalet blev oprettet og det blev leveret eller accepteret.
Stopursoverløb kan også opstå når udløbspåmindelser leveres via igangsættelse af en tård, da der kan være en arbitrær forbinkelse mellem et udløb for et stopur og igangsættelse af påmindelsestråden, og i det forsinkelsesinterval, kan yderligere stopursudløb opstå.
RETURVÆRDI¶
Ved succes returnerer timer_getoverrun() overløbsantallet for det angivne stopur; dette antal kan være 0 hvis ingen overløb er opstået. Ved fejl returneres -1 og errno angives for at indikere fejlen.
FEJL¶
- EINVAL
- timerid er ikke et gyldigt timer-id.
VERSIONER¶
Når stopurspåmindelser leveres via signaler (SIGEV_SIGNAL), er det på Linux altid muligt at indhente overløbsantallet via feltet si_overrun for strukturen siginfo_t (se sigaction(2)). Dette gør det muligt for et program at undgå belastningen med at lave et systemkald for at indhente overløbsantallet, men er en ikkeflytbar udvidelse til POSIX.1.
POSIX.1 diskuterer kun stopursoverløb i konteksten af stopurspåmindelser, der bruger signaler.
STANDARDER¶
POSIX.1-2024.
HISTORIK¶
Linux 2.6. POSIX.1-2001.
FEJL¶
POSIX.1 angiver at hvis stopuretes overløbsantal svarer til eller er større end et implementeringsdefineret maksimum, DELAYTIMER_MAX, så bør timer_getoverrun() returnere DELAYTIMER_MAX. Før Linux 4.19 hvis stopurets overløbsværdi var større end det maksimale repræsenterbare heltal, startede tællercyklusserne en gang mere fra lave værdier. Siden Linux 4.19 returnerer timer_getoverrun() DELAYTIMER_MAX (defineret som INT_MAX i <limits.h>) i dette tilfælde (og overløbsværdien nulstilles til 0).
EKSEMPLER¶
Se timer_create(2).
SE OGSŶ
clock_gettime(2), sigaction(2), signalfd(2), sigwaitinfo(2), timer_create(2), timer_delete(2), timer_settime(2), signal(7), time(7)
OVERSÆTTELSE¶
Oversættere af denne manual til dansk Joe Hansen <joedalton2@yahoo.dk>
Denne oversættelse er gratis dokumentation; læs GNU General Public License version 3 eller nyere for ophavsretbetingelser. Der er INGEN ANSVAR.
Hvis du støder på fejl i oversættelsen af denne vejledning, skal du sende en besked til debian-l10n-danish@lists.debian.org.
| 29. oktober 2025 | Linux man-pages (ej udgivet) |