Penguin
Blame: setitimer(2)
EditPageHistoryDiffInfoLikePages
Annotated edit history of setitimer(2) version 5, including all changes. View license author blame.
Rev Author # Line
3 perry 1 GETITIMER
2 !!!GETITIMER
3 ----
4 !!NAME
5
6 getitimer, setitimer - get or set value of an interval timer
7 !!SYNOPSIS
8
9
5 PerryLorier 10 __#include <sys/time.h>__
3 perry 11
5 PerryLorier 12 __int getitimer(int__ ''which''__, struct itimerval *__''value''__);__
13 __int setitimer(int__ ''which''__, const struct itimerval *__''value''__, struct itimerval *__''ovalue''__);__
3 perry 14 !!DESCRIPTION
15
16 The system provides each process with three interval timers,
17 each decrementing in a distinct time domain. When any timer
18 expires, a signal is sent to the process, and the timer
19 (potentially) restarts.
20
5 PerryLorier 21 ;__ITIMER_REAL__: decrements in real time, and delivers __SIGALRM__ upon expiration.
22 ;__ITIMER_VIRTUAL__: decrements only when the process is executing, and delivers __SIGVTALRM__ upon expiration.
23 ;__ITIMER_PROF__: decrements both when the process executes and when the system is executing on behalf of the process. Coupled with __ITIMER_VIRTUAL__, this timer is usually used to profile the time spent by the application in user and kernel space.
24 ;__SIGPROF__: is delivered upon expiration.
3 perry 25
26 Timer values are defined by the following
27 structures:
28
5 PerryLorier 29 struct itimerval {
30 struct timeval it_interval; /* next value */
31 struct timeval it_value; /* current value */
32 };
33 struct timeval {
34 long tv_sec; /* seconds */
35 long tv_usec; /* microseconds */
36 };
3 perry 37
5 PerryLorier 38 getitimer(2) fills the structure indicated by ''value'' with the current setting for the timer indicated by ''which'' (one of __ITIMER_REAL__, __ITIMER_VIRTUAL__, or __ITIMER_PROF__). The element __it_value__ is set to the amount of time remaining on the timer, or zero if the timer is disabled. Similarly, __it_interval__ is set to the reset value. setitimer(2) sets the indicated timer to the value in ''value''. If ''ovalue'' is nonzero, the old value of the timer is stored there.
3 perry 39
5 PerryLorier 40 Timers decrement from ''it_value'' to zero, generate a signal, and reset to ''it_interval''. A timer which is set to zero (''it_value'' is zero or the timer expires and ''it_interval'' is zero) stops.
3 perry 41
5 PerryLorier 42 Both ''tv_sec'' and ''tv_usec'' are significant in determining the duration of a timer.
3 perry 43
5 PerryLorier 44 Timers will never expire before the requested time, instead expiring some short, constant time afterwards, dependent on the system timer resolution (currently 10ms). Upon expiration, a signal will be generated and the timer reset. If the timer expires while the process is active (always true for __ITIMER_VIRT__) the signal will be delivered immediately when generated. Otherwise the delivery will be offset by a small time dependent on the system loading.
3 perry 45
46 !!RETURN VALUE
47
5 PerryLorier 48 On success, zero is returned. On error, -1 is returned, and ''errno'' is set appropriately.
3 perry 49 !!ERRORS
50
5 PerryLorier 51 ;[EFAULT]: ''value'' or ''ovalue'' are not valid pointers.
52 ;[EINVAL]: ''which'' is not one of __ITIMER_REAL__, __ITIMER_VIRT__, or __ITIMER_PROF__.
3 perry 53
54 !!CONFORMING TO
55
5 PerryLorier 56 SVr4, 4.4BSD (This call first appeared in 4.2BSD).
3 perry 57
58 !!SEE ALSO
59
5 PerryLorier 60 gettimeofday(2), sigaction(2), signal(2)
3 perry 61
62 !!BUGS
63
5 PerryLorier 64 Under Linux, the generation and delivery of a signal are distinct, and there each signal is permitted only one outstanding event. It's therefore conceivable that under pathologically heavy loading, __ITIMER_REAL__ will expire before the signal from a previous expiration has been delivered. The second signal in such an event will be lost.
This page is a man page (or other imported legacy content). We are unable to automatically determine the license status of this page.

PHP Warning

lib/blame.php:177: Warning: Invalid argument supplied for foreach() (...repeated 7 times)