GETITIMER (2)
get or set value of an interval timer
SYNOPSIS
#include <sys/time.h>
int getitimer(int
which ,
struct itimerval
* value );
int setitimer(int
which ,
const struct itimerval
* value ,
struct itimerval
* ovalue );
DESCRIPTION
struct itimerval {
struct timeval it_interval; /* next value */
struct timeval it_value; /* current value */
};
struct timeval {
long tv_sec; /* seconds */
long tv_usec; /* microseconds */
};
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.
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.
Both
tv_sec
and
tv_usec
are significant in determining the duration of a timer.
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.
RETURN VALUE
On success, zero is returned. On error, -1 is returned, and
errno
is set appropriately.
ERRORS
EFAULT
value
or
ovalue
are not valid pointers.
EINVAL
which
is not one of
ITIMER_REAL ,
ITIMER_VIRT ,
or
ITIMER_PROF .
CONFORMING TO
SVr4, 4.4BSD (This call first appeared in 4.2BSD).
SEE ALSO
BUGS
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.
man2/getnodes.2
man2/getntype.2
man2/getntype.2
man2/getntype.2
|