1 .\" Copyright 7/93 by Darren Senn <sinster@scintilla.santa-clara.ca.us>
2 .\" Based on a similar page Copyright 1992 by Rick Faith
3 .\" May be freely distributed
4 .\" Modified Tue Oct 22 00:22:35 EDT 1996 by Eric S. Raymond <esr@thyrsus.com>
5 .\" 2005-04-06 mtk, Matthias Lang <matthias@corelatus.se>
6 .\" Noted MAX_SEC_IN_JIFFIES ceiling
7 .TH GETITIMER 2 2009-03-15 "Linux" "Linux Programmer's Manual"
9 getitimer, setitimer \- get or set value of an interval timer
12 .B #include <sys/time.h>
14 .BI "int getitimer(int " which ", struct itimerval *" curr_value );
16 .BI "int setitimer(int " which ", const struct itimerval *" new_value ,
17 .BI " struct itimerval *" old_value );
20 The system provides each process with three interval timers,
21 each decrementing in a distinct time domain.
22 When any timer expires, a signal is sent to the
23 process, and the timer (potentially) restarts.
26 decrements in real time, and delivers
31 decrements only when the process is executing, and delivers
36 decrements both when the process executes and when the system is executing
37 on behalf of the process.
40 this timer is usually used to profile the time spent by the
41 application in user and kernel space.
43 is delivered upon expiration.
45 Timer values are defined by the following structures:
51 struct timeval it_interval; /* next value */
52 struct timeval it_value; /* current value */
56 long tv_sec; /* seconds */
57 long tv_usec; /* microseconds */
65 fills the structure pointed to by
67 with the current setting for the timer specified by
76 is set to the amount of time remaining on the timer, or zero if the timer
80 is set to the reset value.
84 sets the specified timer to the value in
88 is non-NULL, the old value of the timer is stored there.
92 to zero, generate a signal, and reset to
94 A timer which is set to zero
96 is zero or the timer expires and
104 are significant in determining the duration of a timer.
106 Timers will never expire before the requested time,
107 but may expire some (short) time afterward, which depends
108 on the system timer resolution and on the system load; see
110 (But see BUGS below.)
111 Upon expiration, a signal will be generated and the timer reset.
112 If the timer expires while the process is active (always true for
114 the signal will be delivered immediately when generated.
116 delivery will be offset by a small time dependent on the system loading.
118 On success, zero is returned.
119 On error, \-1 is returned, and
121 is set appropriately.
129 is not valid a pointer.
138 or (since Linux 2.6.22) one of the
140 fields in the structure pointed to by
142 contains a value outside the range 0 to 999999.
144 POSIX.1-2001, SVr4, 4.4BSD (this call first appeared in 4.2BSD).
149 obsolete, recommending the use of the POSIX timers API
150 .RB ( timer_gettime (2),
151 .BR timer_settime (2),
156 does not inherit its parent's interval timers.
157 Interval timers are preserved across an
163 and the three interfaces
170 The generation and delivery of a signal are distinct, and
171 only one instance of each of the signals listed above may be pending
173 Under very heavy loading, an
175 timer may expire before the signal from a previous expiration
177 The second signal in such an event will be lost.
179 On Linux kernels before 2.6.16, timer values are represented in jiffies.
180 If a request is made set a timer with a value whose jiffies
181 representation exceeds
182 .B MAX_SEC_IN_JIFFIES
184 .IR include/linux/jiffies.h ),
185 then the timer is silently truncated to this ceiling value.
186 On Linux/i386 (where, since Linux 2.6.13,
187 the default jiffy is 0.004 seconds),
188 this means that the ceiling value for a timer is
189 approximately 99.42 days.
191 the kernel uses a different internal representation for times,
192 and this ceiling is removed.
194 On certain systems (including i386),
195 Linux kernels before version 2.6.12 have a bug which will produce
196 premature timer expirations of up to one jiffy under some circumstances.
197 This bug is fixed in kernel 2.6.12.
198 .\" 4 Jul 2005: It looks like this bug may remain in 2.4.x.
199 .\" http://lkml.org/lkml/2005/7/1/165
201 POSIX.1-2001 says that
205 value is specified that is outside of the range 0 to 999999.
206 However, in kernels up to and including 2.6.21,
207 Linux does not give an error, but instead silently
208 adjusts the corresponding seconds value for the timer.
209 From kernel 2.6.22 onward,
210 this nonconformance has been repaired:
216 .\" Bugzilla report 25 Apr 2006:
217 .\" http://bugzilla.kernel.org/show_bug.cgi?id=6443
218 .\" "setitimer() should reject noncanonical arguments"
220 .BR gettimeofday (2),
223 .BR timer_create (2),
224 .BR timerfd_create (2),