]> git.saurik.com Git - apple/xnu.git/blame - bsd/man/man2/getitimer.2
xnu-792.21.3.tar.gz
[apple/xnu.git] / bsd / man / man2 / getitimer.2
CommitLineData
9bccf70c
A
1.\" $NetBSD: getitimer.2,v 1.6 1995/10/12 15:40:54 jtc Exp $
2.\"
3.\" Copyright (c) 1983, 1991, 1993
4.\" The Regents of the University of California. All rights reserved.
5.\"
6.\" Redistribution and use in source and binary forms, with or without
7.\" modification, are permitted provided that the following conditions
8.\" are met:
9.\" 1. Redistributions of source code must retain the above copyright
10.\" notice, this list of conditions and the following disclaimer.
11.\" 2. Redistributions in binary form must reproduce the above copyright
12.\" notice, this list of conditions and the following disclaimer in the
13.\" documentation and/or other materials provided with the distribution.
14.\" 3. All advertising materials mentioning features or use of this software
15.\" must display the following acknowledgement:
16.\" This product includes software developed by the University of
17.\" California, Berkeley and its contributors.
18.\" 4. Neither the name of the University nor the names of its contributors
19.\" may be used to endorse or promote products derived from this software
20.\" without specific prior written permission.
21.\"
22.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
23.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
26.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32.\" SUCH DAMAGE.
33.\"
34.\" @(#)getitimer.2 8.2 (Berkeley) 12/11/93
35.\"
36.Dd December 11, 1993
37.Dt GETITIMER 2
38.Os BSD 4.2
39.Sh NAME
40.Nm getitimer ,
41.Nm setitimer
42.Nd get/set value of interval timer
43.Sh SYNOPSIS
44.Fd #include <sys/time.h>
45.Fd #define ITIMER_REAL 0
46.Fd #define ITIMER_VIRTUAL 1
47.Fd #define ITIMER_PROF 2
48.Ft int
49.Fn getitimer "int which" "struct itimerval *value"
50.Ft int
51.Fn setitimer "int which" "const struct itimerval *value" "struct itimerval *ovalue"
52.Sh DESCRIPTION
53The system provides each process with three interval timers,
54defined in
55.Ao Pa sys/time.h Ac .
56The
57.Fn getitimer
58call returns the current value for the timer specified in
59.Fa which
60in the structure at
61.Fa value .
62The
63.Fn setitimer
64call sets a timer to the specified
65.Fa value
66(returning the previous value of the timer if
67.Fa ovalue
68is non-nil).
69.Pp
70A timer value is defined by the
71.Fa itimerval
72structure:
73.Bd -literal -offset indent
74struct itimerval {
75 struct timeval it_interval; /* timer interval */
76 struct timeval it_value; /* current value */
77};
78.Ed
79.Pp
80If
81.Fa it_value
82is non-zero, it indicates the time to the next timer expiration.
83If
84.Fa it_interval
85is non-zero, it specifies a value to be used in reloading
86.Fa it_value
87when the timer expires.
88Setting
89.Fa it_value
90to 0 disables a timer. Setting
91.Fa it_interval
92to 0 causes a timer to be disabled after its next expiration (assuming
93.Fa it_value
94is non-zero).
95.Pp
96Time values smaller than the resolution of the
97system clock are rounded up to this resolution
98(typically 10 milliseconds).
99.Pp
100The
101.Dv ITIMER_REAL
102timer decrements in real time. A
103.Dv SIGALRM
104signal is
105delivered when this timer expires.
106.Pp
107The
108.Dv ITIMER_VIRTUAL
109timer decrements in process virtual time.
110It runs only when the process is executing. A
111.Dv SIGVTALRM
112signal
113is delivered when it expires.
114.Pp
115The
116.Dv ITIMER_PROF
117timer decrements both in process virtual time and
118when the system is running on behalf of the process. It is designed
119to be used by interpreters in statistically profiling the execution
120of interpreted programs.
121Each time the
122.Dv ITIMER_PROF
123timer expires, the
124.Dv SIGPROF
125signal is
126delivered. Because this signal may interrupt in-progress
127system calls, programs using this timer must be prepared to
128restart interrupted system calls.
129.Sh NOTES
130Three macros for manipulating time values are defined in
131.Ao Pa sys/time.h Ac .
132.Fa Timerclear
133sets a time value to zero,
134.Fa timerisset
135tests if a time value is non-zero, and
136.Fa timercmp
137compares two time values (beware that >= and <= do not
138work with this macro).
139.Sh RETURN VALUES
140If the calls succeed, a value of 0 is returned. If an error occurs,
141the value -1 is returned, and a more precise error code is placed
142in the global variable
143.Va errno .
144.Sh ERRORS
145.Fn Getitimer
146and
147.Fn setitimer
148will fail if:
149.Bl -tag -width Er
150.It Bq Er EFAULT
151The
152.Fa value
153parameter specified a bad address.
154.It Bq Er EINVAL
155A
156.Fa value
157parameter specified a time that was too large
158to be handled.
159.El
160.Sh SEE ALSO
161.Xr select 2 ,
162.Xr sigaction 2 ,
163.Xr gettimeofday 2
164.Sh HISTORY
165The
166.Fn getitimer
167function call appeared in
168.Bx 4.2 .