getitimer

TriggerTek Logo
abcdefghijklmnopqrstuvwxyz_
GETITIMER(2)		  Linux Programmer’s Manual		 GETITIMER(2)



NAME
       getitimer, setitimer - 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 itimer-
	      val *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 pro-
		      file the time spent by the application in user and ker-
		      nel 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 */
	    };

       The function getitimer 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 dis-
       abled.  Similarly, it_interval is set to the reset value.   The	func-
       tion  setitimer	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 gener-
       ated 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
       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.



Linux 0.99.11			  1993-08-05			 GETITIMER(2)