NAAM
getitimer, setitimer − krijg of zet waarde voor een interval wekker
OVERZICHT
#include <sys/time.h> |
||
int getitimer(int |
welke, struct itimerval *waarde);
int setitimer(int |
welke, const struct itimerval *waarde, struct |
itimerval *owaarde);
BESCHRIJVING
Het systeem levert elk proces drie interval wekkers, elk aftellend in een apart tijd-gebied. Wanneer een wekker afloopt wordt een signaal gezonden naar het proces, en de wekker wordt (eventueel) herstart.
ITIMER_REAL |
{wekker echt} telt af in echte tijd, en levert SIGALRM bij aflopen. | ||
ITIMER_VIRTUAL |
{wekker virtueel} telt alleen af als het proces aan het uitvoeren is, en levert SIGVTALRM bij aflopen. | ||
ITIMER_PROF |
{wekker meet} telt en af als het proces loopt, en als het systeem aan het uitvoeren is ten dienste van het proces. Samen met ITIMER_VIRTUAL, wordt deze wekker gewoonlijk gebruikt om de tijd verbruikt door de toepassing in gebruikersruimte en in kernelruimte te meten. SIGPROF wordt afgeleverd bij aflopen. |
Wekker waardes worden bepaald door de volgende structuren:
struct itimerval {
struct timeval it_interval; /* {interval} volgende waarde */
struct timeval it_value; /* {waarde} huidige waarde */
};
struct timeval {
long tv_sec; /* {seconden} seconden */
long tv_usec; /* {useconden} microseconden */
};
Getitimer(2) vult de structuur aangewezen door waarde met de huidige stand voor de wekker aangewezen door welke (een van ITIMER_REAL, ITIMER_VIRTUAL, of ITIMER_PROF). Het onderdeel it_value wordt geschakeld naar de hoeveelheid tijd die nog rest op de wekker, of nul als de wekker uitgezet is. Net zo, it_interval wordt geschakeld naar de herstart waarde. Setitimer(2) schakelt de aangewezen wekker naar de waarde in waarde. Als owaarde ongelijk-nul is, wordt de oude waarde van de wekker daar opgeslagen.
Wekkers tellen af van it_value naar nul, veroorzaken een signaal en herstarten met it_interval. Een wekker die naar nul geschakeld is (it_value is nul of de wekker loopt af en it_interval is nul) stopt.
Beide, tv_sec en tv_usec zijn belangrijk bij het bepalen van de duur van een wekker.
Wekkers zullen nooit aflopen vóór het gevraagde tijdstip, in plaats daarvan aflopend een korte, gelijkblijvende tijd naderhands, afhankelijk van het scheidend vermogen van de systeem wekker (momenteel 10ms). Bij aflopen zal een signaal opgewekt worden en de wekker wordt herstart. Als de wekker afloopt terwijl het proces bezig is (altijd ’waar’ voor ITIMER_VIRT) dan wordt het signaal onmiddellijk afgeleverd als het opgewekt wordt. In het andere geval zal de aflevering een korte tijd verplaatst worden afhankelijk van de lasten op het systeem.
TERUGGEEF WAARDE
Bij success wordt nul teruggegeven. Bij falen wordt −1 teruggegeven en wordt errno naar behoren gezet.
FOUTEN
EFAULT |
{fout} waarde of owaarde zijn geen geldige pointers. | ||
EINVAL |
{ongeldig} welke is niet een van ITIMER_REAL, ITIMER_VIRT, of ITIMER_PROF. |
VOLDOET AAN
SVr4, 4.4BSD (deze aanroep verscheen voor het eerst in 4.2BSD).
ZIE OOK
gettimeofday(2) {krijg tijd op dag}, sigaction(2) {signaal daad}, signal(2) {signaal}.
BUGS
Onder Linux zijn het opwekken en afleveren van een signaal verschillend, en voor elk signaal is maar één wachtende gebeurtenis toegestaan. Het is daarom denkbaar dat onder ziekelijk zware systeemlasten, ITIMER_REAL af zal lopen voordat het signaal van een eerdere afloping afgeleverd is. Het tweede signaal zal in dit geval verloren zijn.
VERTALING
Dit is een handleiding uit manpages-dev 1.29. Alles wat tussen ’{’..’}’ staat is aanvullende vertaling, en hoort niet bij de originele handleiding. Email naar <manpages-nl [AT] nl.org>.
$Id: setitimer.2,v 1.1.1.1 2004/03/21 21:02:25 cor Exp $