Differences between current version and previous revision of setitimer(2).
Other diffs: Previous Major Revision, Previous Author, or view the Annotated Edit History
Newer page: | version 5 | Last edited on Monday, October 28, 2002 9:16:30 pm | by PerryLorier | |
Older page: | version 4 | Last edited on Tuesday, June 4, 2002 12:23:46 am | by perry | Revert |
@@ -1,147 +1,64 @@
GETITIMER
!!!GETITIMER
-NAME
-SYNOPSIS
-DESCRIPTION
-RETURN VALUE
-ERRORS
-CONFORMING TO
-SEE ALSO
-BUGS
----
!!NAME
-
getitimer, setitimer - get or set value of an interval timer
!!SYNOPSIS
-__#include __
+
__#include <sys/time.h>
__
-
-
__int getitimer(int__ ''which''__, struct itimerval
-
*__''value''__);__
-
-
-__int setitimer(int__ ''which''__, const struct
-
itimerval *__''value''__, struct itimerval
-
*__''ovalue''__);__
+
__int getitimer(int__ ''which''__, struct itimerval *__''value''__);__
+ __int setitimer(int__ ''which''__, const struct itimerval *__''value''__, struct itimerval *__''ovalue''__);__
!!DESCRIPTION
-
The system provides each process with three interval timers,
each decrementing in a distinct time domain. When any timer
expires, a signal is sent to the process, and the timer
(potentially) restarts.
-
-
__ITIMER_REAL__
-
-
-
decrements in real time, and delivers __SIGALRM__ upon
-
expiration.
-
-
-
__ITIMER_VIRTUAL__
-
-
-
decrements only when the process is executing, and delivers
-
__SIGVTALRM__ upon expiration.
-
-
-
__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.
-__SIGPROF__ is delivered upon expiration.
-
+;
__ITIMER_REAL__:
decrements in real time, and delivers __SIGALRM__ upon expiration.
+;
__ITIMER_VIRTUAL__:
decrements only when the process is executing, and delivers __SIGVTALRM__ upon expiration.
+;
__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.
+;
__SIGPROF__:
is delivered upon expiration.
Timer values are defined by the following
structures:
+ struct itimerval {
+ struct timeval it_interval; /* next value */
+ struct timeval it_value; /* current value */
+ };
+ struct timeval {
+ long tv_sec; /* seconds */
+ long tv_usec; /* microseconds */
+ };
-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.
-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
.
+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.
-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.
+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__.
-__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).
-SVr4, 4.4BSD (This call first appeared in
-4.2BSD).
!!SEE ALSO
+gettimeofday(2), sigaction(2), signal(2)
-gettimeofday(2), sigaction(2),
-signal(2)
!!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.
-----
+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.