GETITIMER(2) System Calls Manual GETITIMER(2)
getitimer, setitimer - get/set value of interval timer
int getitimer (which, value)
struct itimerval *value;
int setitimer (which, value, ovalue)
struct itimerval *value, *ovalue;
The system provides each process with three interval timers, defined in
<<sys/time.h>>. The getitimer() call stores the current value of the
timer specified by which into the structure pointed to by value. The
setitimer() call sets the value of the timer specified by which to the
value specified in the structure pointed to by value, and if ovalue is
not a NULL pointer, stores the previous value of the timer in the
structure pointed to by ovalue.
A timer value is defined by the itimerval structure, which includes the
struct timeval it_interval; /* timer interval */
struct timeval it_value; /* current value */
If it_value is non-zero, it indicates the time to the next timer expi-
ration. If it_interval is non-zero, it specifies a value to be used in
reloading it_value when the timer expires. Setting it_value to zero
disables a timer; however, it_value and it_interval must still be ini-
tialized. Setting it_interval to zero causes a timer to be disabled
after its next expiration (assuming it_value is non-zero).
Time values smaller than the resolution of the system clock are rounded
up to this resolution.
The three timers are:
ITIMER_REAL Decrements in real time. A SIGALRM signal is
delivered when this timer expires.
ITIMER_VIRTUAL Decrements in process virtual time. It runs only
when the process is executing. A SIGVTALRM signal
is delivered when it expires.
ITIMER_PROF Decrements both in process virtual time and when
the system is running on behalf of the process. It
is designed to be used by interpreters in statisti-
cally profiling the execution of interpreted pro-
grams. Each time the ITIMER_PROF timer expires,
the SIGPROF signal is delivered. Because this sig-
nal may interrupt in-progress system calls, pro-
grams using this timer must be prepared to restart
interrupted system calls.
getitimer() and setitimer() return:
0 on success.
-1 on failure and set errno to indicate the error.
The possible errors are:
EFAULT The value or ovalue parameter specified a bad address.
EINVAL The value parameter specified a time that was too large
to be handled.
Three macros for manipulating time values are defined in <<sys/time.h>>.
timerclear sets a time value to zero, timerisset tests if a time value
is non-zero, and timercmp() compares two time values (beware that >>=
and <<= do not work with this macro).
21 January 1990 GETITIMER(2)