xref: /xnu-10063.141.1/bsd/sys/resource.h (revision d8b80295118ef25ac3a784134bcf95cd8e88109f)
1*d8b80295SApple OSS Distributions /*
2*d8b80295SApple OSS Distributions  * Copyright (c) 2000-2018 Apple Inc. All rights reserved.
3*d8b80295SApple OSS Distributions  *
4*d8b80295SApple OSS Distributions  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
5*d8b80295SApple OSS Distributions  *
6*d8b80295SApple OSS Distributions  * This file contains Original Code and/or Modifications of Original Code
7*d8b80295SApple OSS Distributions  * as defined in and that are subject to the Apple Public Source License
8*d8b80295SApple OSS Distributions  * Version 2.0 (the 'License'). You may not use this file except in
9*d8b80295SApple OSS Distributions  * compliance with the License. The rights granted to you under the License
10*d8b80295SApple OSS Distributions  * may not be used to create, or enable the creation or redistribution of,
11*d8b80295SApple OSS Distributions  * unlawful or unlicensed copies of an Apple operating system, or to
12*d8b80295SApple OSS Distributions  * circumvent, violate, or enable the circumvention or violation of, any
13*d8b80295SApple OSS Distributions  * terms of an Apple operating system software license agreement.
14*d8b80295SApple OSS Distributions  *
15*d8b80295SApple OSS Distributions  * Please obtain a copy of the License at
16*d8b80295SApple OSS Distributions  * http://www.opensource.apple.com/apsl/ and read it before using this file.
17*d8b80295SApple OSS Distributions  *
18*d8b80295SApple OSS Distributions  * The Original Code and all software distributed under the License are
19*d8b80295SApple OSS Distributions  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
20*d8b80295SApple OSS Distributions  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
21*d8b80295SApple OSS Distributions  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
22*d8b80295SApple OSS Distributions  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
23*d8b80295SApple OSS Distributions  * Please see the License for the specific language governing rights and
24*d8b80295SApple OSS Distributions  * limitations under the License.
25*d8b80295SApple OSS Distributions  *
26*d8b80295SApple OSS Distributions  * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
27*d8b80295SApple OSS Distributions  */
28*d8b80295SApple OSS Distributions /* Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved */
29*d8b80295SApple OSS Distributions /*
30*d8b80295SApple OSS Distributions  * Copyright (c) 1982, 1986, 1993
31*d8b80295SApple OSS Distributions  *	The Regents of the University of California.  All rights reserved.
32*d8b80295SApple OSS Distributions  *
33*d8b80295SApple OSS Distributions  * Redistribution and use in source and binary forms, with or without
34*d8b80295SApple OSS Distributions  * modification, are permitted provided that the following conditions
35*d8b80295SApple OSS Distributions  * are met:
36*d8b80295SApple OSS Distributions  * 1. Redistributions of source code must retain the above copyright
37*d8b80295SApple OSS Distributions  *    notice, this list of conditions and the following disclaimer.
38*d8b80295SApple OSS Distributions  * 2. Redistributions in binary form must reproduce the above copyright
39*d8b80295SApple OSS Distributions  *    notice, this list of conditions and the following disclaimer in the
40*d8b80295SApple OSS Distributions  *    documentation and/or other materials provided with the distribution.
41*d8b80295SApple OSS Distributions  * 3. All advertising materials mentioning features or use of this software
42*d8b80295SApple OSS Distributions  *    must display the following acknowledgement:
43*d8b80295SApple OSS Distributions  *	This product includes software developed by the University of
44*d8b80295SApple OSS Distributions  *	California, Berkeley and its contributors.
45*d8b80295SApple OSS Distributions  * 4. Neither the name of the University nor the names of its contributors
46*d8b80295SApple OSS Distributions  *    may be used to endorse or promote products derived from this software
47*d8b80295SApple OSS Distributions  *    without specific prior written permission.
48*d8b80295SApple OSS Distributions  *
49*d8b80295SApple OSS Distributions  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
50*d8b80295SApple OSS Distributions  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
51*d8b80295SApple OSS Distributions  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
52*d8b80295SApple OSS Distributions  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
53*d8b80295SApple OSS Distributions  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
54*d8b80295SApple OSS Distributions  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
55*d8b80295SApple OSS Distributions  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
56*d8b80295SApple OSS Distributions  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
57*d8b80295SApple OSS Distributions  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
58*d8b80295SApple OSS Distributions  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
59*d8b80295SApple OSS Distributions  * SUCH DAMAGE.
60*d8b80295SApple OSS Distributions  *
61*d8b80295SApple OSS Distributions  *	@(#)resource.h	8.2 (Berkeley) 1/4/94
62*d8b80295SApple OSS Distributions  */
63*d8b80295SApple OSS Distributions 
64*d8b80295SApple OSS Distributions #ifndef _SYS_RESOURCE_H_
65*d8b80295SApple OSS Distributions #define _SYS_RESOURCE_H_
66*d8b80295SApple OSS Distributions 
67*d8b80295SApple OSS Distributions #include <sys/appleapiopts.h>
68*d8b80295SApple OSS Distributions #include <sys/cdefs.h>
69*d8b80295SApple OSS Distributions #include <sys/_types.h>
70*d8b80295SApple OSS Distributions 
71*d8b80295SApple OSS Distributions #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
72*d8b80295SApple OSS Distributions #include <stdint.h>
73*d8b80295SApple OSS Distributions #endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
74*d8b80295SApple OSS Distributions 
75*d8b80295SApple OSS Distributions #ifndef KERNEL
76*d8b80295SApple OSS Distributions #include <Availability.h>
77*d8b80295SApple OSS Distributions #endif
78*d8b80295SApple OSS Distributions 
79*d8b80295SApple OSS Distributions /* [XSI] The timeval structure shall be defined as described in
80*d8b80295SApple OSS Distributions  * <sys/time.h>
81*d8b80295SApple OSS Distributions  */
82*d8b80295SApple OSS Distributions #include <sys/_types/_timeval.h>
83*d8b80295SApple OSS Distributions #ifdef KERNEL
84*d8b80295SApple OSS Distributions #include <sys/_types/_user32_timeval.h>
85*d8b80295SApple OSS Distributions #include <sys/_types/_user64_timeval.h>
86*d8b80295SApple OSS Distributions #endif
87*d8b80295SApple OSS Distributions 
88*d8b80295SApple OSS Distributions /* The id_t type shall be defined as described in <sys/types.h> */
89*d8b80295SApple OSS Distributions #include <sys/_types/_id_t.h>
90*d8b80295SApple OSS Distributions 
91*d8b80295SApple OSS Distributions 
92*d8b80295SApple OSS Distributions /*
93*d8b80295SApple OSS Distributions  * Resource limit type (low 63 bits, excluding the sign bit)
94*d8b80295SApple OSS Distributions  */
95*d8b80295SApple OSS Distributions typedef __uint64_t      rlim_t;
96*d8b80295SApple OSS Distributions 
97*d8b80295SApple OSS Distributions 
98*d8b80295SApple OSS Distributions /*****
99*d8b80295SApple OSS Distributions  * PRIORITY
100*d8b80295SApple OSS Distributions  */
101*d8b80295SApple OSS Distributions 
102*d8b80295SApple OSS Distributions /*
103*d8b80295SApple OSS Distributions  * Possible values of the first parameter to getpriority()/setpriority(),
104*d8b80295SApple OSS Distributions  * used to indicate the type of the second parameter.
105*d8b80295SApple OSS Distributions  */
106*d8b80295SApple OSS Distributions #define PRIO_PROCESS    0               /* Second argument is a PID */
107*d8b80295SApple OSS Distributions #define PRIO_PGRP       1               /* Second argument is a GID */
108*d8b80295SApple OSS Distributions #define PRIO_USER       2               /* Second argument is a UID */
109*d8b80295SApple OSS Distributions 
110*d8b80295SApple OSS Distributions #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
111*d8b80295SApple OSS Distributions #define PRIO_DARWIN_THREAD      3               /* Second argument is always 0 (current thread) */
112*d8b80295SApple OSS Distributions #define PRIO_DARWIN_PROCESS     4               /* Second argument is a PID */
113*d8b80295SApple OSS Distributions 
114*d8b80295SApple OSS Distributions #ifdef PRIVATE
115*d8b80295SApple OSS Distributions 
116*d8b80295SApple OSS Distributions #define PRIO_DARWIN_GPU         5               /* Second argument is a PID */
117*d8b80295SApple OSS Distributions 
118*d8b80295SApple OSS Distributions #define PRIO_DARWIN_GPU_ALLOW   0x1
119*d8b80295SApple OSS Distributions #define PRIO_DARWIN_GPU_DENY    0x2
120*d8b80295SApple OSS Distributions 
121*d8b80295SApple OSS Distributions #define PRIO_DARWIN_ROLE        6               /* Second argument is a PID */
122*d8b80295SApple OSS Distributions 
123*d8b80295SApple OSS Distributions #define PRIO_DARWIN_ROLE_DEFAULT        0x0     /* Reset to default state */
124*d8b80295SApple OSS Distributions #define PRIO_DARWIN_ROLE_UI_FOCAL       0x1     /* On  screen,     focal UI */
125*d8b80295SApple OSS Distributions #define PRIO_DARWIN_ROLE_UI             0x2     /* On  screen UI,  focal unknown */
126*d8b80295SApple OSS Distributions #define PRIO_DARWIN_ROLE_NON_UI         0x3     /* Off screen, non-focal UI */
127*d8b80295SApple OSS Distributions #define PRIO_DARWIN_ROLE_UI_NON_FOCAL   0x4     /* On  screen, non-focal UI */
128*d8b80295SApple OSS Distributions #define PRIO_DARWIN_ROLE_TAL_LAUNCH     0x5     /* Throttled-launch (for OS X TAL resume) */
129*d8b80295SApple OSS Distributions #define PRIO_DARWIN_ROLE_DARWIN_BG      0x6     /* Throttled for running in the background */
130*d8b80295SApple OSS Distributions 
131*d8b80295SApple OSS Distributions /* Additional private parameters to getpriority()/setpriority() are in resource_private.h */
132*d8b80295SApple OSS Distributions 
133*d8b80295SApple OSS Distributions #endif /* PRIVATE */
134*d8b80295SApple OSS Distributions 
135*d8b80295SApple OSS Distributions /*
136*d8b80295SApple OSS Distributions  * Range limitations for the value of the third parameter to setpriority().
137*d8b80295SApple OSS Distributions  */
138*d8b80295SApple OSS Distributions #define PRIO_MIN        -20
139*d8b80295SApple OSS Distributions #define PRIO_MAX        20
140*d8b80295SApple OSS Distributions 
141*d8b80295SApple OSS Distributions /*
142*d8b80295SApple OSS Distributions  * use PRIO_DARWIN_BG to set the current thread into "background" state
143*d8b80295SApple OSS Distributions  * which lowers CPU, disk IO, and networking priorites until thread terminates
144*d8b80295SApple OSS Distributions  * or "background" state is revoked
145*d8b80295SApple OSS Distributions  */
146*d8b80295SApple OSS Distributions #define PRIO_DARWIN_BG 0x1000
147*d8b80295SApple OSS Distributions 
148*d8b80295SApple OSS Distributions /*
149*d8b80295SApple OSS Distributions  * use PRIO_DARWIN_NONUI to restrict a process's ability to make calls to
150*d8b80295SApple OSS Distributions  * the GPU. (deprecated)
151*d8b80295SApple OSS Distributions  */
152*d8b80295SApple OSS Distributions #define PRIO_DARWIN_NONUI 0x1001
153*d8b80295SApple OSS Distributions 
154*d8b80295SApple OSS Distributions #endif  /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
155*d8b80295SApple OSS Distributions 
156*d8b80295SApple OSS Distributions 
157*d8b80295SApple OSS Distributions 
158*d8b80295SApple OSS Distributions /*****
159*d8b80295SApple OSS Distributions  * RESOURCE USAGE
160*d8b80295SApple OSS Distributions  */
161*d8b80295SApple OSS Distributions 
162*d8b80295SApple OSS Distributions /*
163*d8b80295SApple OSS Distributions  * Possible values of the first parameter to getrusage(), used to indicate
164*d8b80295SApple OSS Distributions  * the scope of the information to be returned.
165*d8b80295SApple OSS Distributions  */
166*d8b80295SApple OSS Distributions #define RUSAGE_SELF     0               /* Current process information */
167*d8b80295SApple OSS Distributions #define RUSAGE_CHILDREN -1              /* Current process' children */
168*d8b80295SApple OSS Distributions 
169*d8b80295SApple OSS Distributions /*
170*d8b80295SApple OSS Distributions  * A structure representing an accounting of resource utilization.  The
171*d8b80295SApple OSS Distributions  * address of an instance of this structure is the second parameter to
172*d8b80295SApple OSS Distributions  * getrusage().
173*d8b80295SApple OSS Distributions  *
174*d8b80295SApple OSS Distributions  * Note: All values other than ru_utime and ru_stime are implementaiton
175*d8b80295SApple OSS Distributions  *       defined and subject to change in a future release.  Their use
176*d8b80295SApple OSS Distributions  *       is discouraged for standards compliant programs.
177*d8b80295SApple OSS Distributions  */
178*d8b80295SApple OSS Distributions struct  rusage {
179*d8b80295SApple OSS Distributions 	struct timeval ru_utime;        /* user time used (PL) */
180*d8b80295SApple OSS Distributions 	struct timeval ru_stime;        /* system time used (PL) */
181*d8b80295SApple OSS Distributions #if __DARWIN_C_LEVEL < __DARWIN_C_FULL
182*d8b80295SApple OSS Distributions 	long    ru_opaque[14];          /* implementation defined */
183*d8b80295SApple OSS Distributions #else
184*d8b80295SApple OSS Distributions 	/*
185*d8b80295SApple OSS Distributions 	 * Informational aliases for source compatibility with programs
186*d8b80295SApple OSS Distributions 	 * that need more information than that provided by standards,
187*d8b80295SApple OSS Distributions 	 * and which do not mind being OS-dependent.
188*d8b80295SApple OSS Distributions 	 */
189*d8b80295SApple OSS Distributions 	long    ru_maxrss;              /* max resident set size (PL) */
190*d8b80295SApple OSS Distributions #define ru_first        ru_ixrss        /* internal: ruadd() range start */
191*d8b80295SApple OSS Distributions 	long    ru_ixrss;               /* integral shared memory size (NU) */
192*d8b80295SApple OSS Distributions 	long    ru_idrss;               /* integral unshared data (NU)  */
193*d8b80295SApple OSS Distributions 	long    ru_isrss;               /* integral unshared stack (NU) */
194*d8b80295SApple OSS Distributions 	long    ru_minflt;              /* page reclaims (NU) */
195*d8b80295SApple OSS Distributions 	long    ru_majflt;              /* page faults (NU) */
196*d8b80295SApple OSS Distributions 	long    ru_nswap;               /* swaps (NU) */
197*d8b80295SApple OSS Distributions 	long    ru_inblock;             /* block input operations (atomic) */
198*d8b80295SApple OSS Distributions 	long    ru_oublock;             /* block output operations (atomic) */
199*d8b80295SApple OSS Distributions 	long    ru_msgsnd;              /* messages sent (atomic) */
200*d8b80295SApple OSS Distributions 	long    ru_msgrcv;              /* messages received (atomic) */
201*d8b80295SApple OSS Distributions 	long    ru_nsignals;            /* signals received (atomic) */
202*d8b80295SApple OSS Distributions 	long    ru_nvcsw;               /* voluntary context switches (atomic) */
203*d8b80295SApple OSS Distributions 	long    ru_nivcsw;              /* involuntary " */
204*d8b80295SApple OSS Distributions #define ru_last         ru_nivcsw       /* internal: ruadd() range end */
205*d8b80295SApple OSS Distributions #endif  /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
206*d8b80295SApple OSS Distributions };
207*d8b80295SApple OSS Distributions 
208*d8b80295SApple OSS Distributions #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
209*d8b80295SApple OSS Distributions /*
210*d8b80295SApple OSS Distributions  * Flavors for proc_pid_rusage().
211*d8b80295SApple OSS Distributions  */
212*d8b80295SApple OSS Distributions #define RUSAGE_INFO_V0  0
213*d8b80295SApple OSS Distributions #define RUSAGE_INFO_V1  1
214*d8b80295SApple OSS Distributions #define RUSAGE_INFO_V2  2
215*d8b80295SApple OSS Distributions #define RUSAGE_INFO_V3  3
216*d8b80295SApple OSS Distributions #define RUSAGE_INFO_V4  4
217*d8b80295SApple OSS Distributions #define RUSAGE_INFO_V5  5
218*d8b80295SApple OSS Distributions #define RUSAGE_INFO_V6  6
219*d8b80295SApple OSS Distributions #define RUSAGE_INFO_CURRENT RUSAGE_INFO_V6
220*d8b80295SApple OSS Distributions 
221*d8b80295SApple OSS Distributions /*
222*d8b80295SApple OSS Distributions  * Flags for RUSAGE_INFO_V5
223*d8b80295SApple OSS Distributions  */
224*d8b80295SApple OSS Distributions #define RU_PROC_RUNS_RESLIDE    0x00000001      /* proc has reslid shared cache */
225*d8b80295SApple OSS Distributions 
226*d8b80295SApple OSS Distributions typedef void *rusage_info_t;
227*d8b80295SApple OSS Distributions 
228*d8b80295SApple OSS Distributions struct rusage_info_v0 {
229*d8b80295SApple OSS Distributions 	uint8_t  ri_uuid[16];
230*d8b80295SApple OSS Distributions 	uint64_t ri_user_time;
231*d8b80295SApple OSS Distributions 	uint64_t ri_system_time;
232*d8b80295SApple OSS Distributions 	uint64_t ri_pkg_idle_wkups;
233*d8b80295SApple OSS Distributions 	uint64_t ri_interrupt_wkups;
234*d8b80295SApple OSS Distributions 	uint64_t ri_pageins;
235*d8b80295SApple OSS Distributions 	uint64_t ri_wired_size;
236*d8b80295SApple OSS Distributions 	uint64_t ri_resident_size;
237*d8b80295SApple OSS Distributions 	uint64_t ri_phys_footprint;
238*d8b80295SApple OSS Distributions 	uint64_t ri_proc_start_abstime;
239*d8b80295SApple OSS Distributions 	uint64_t ri_proc_exit_abstime;
240*d8b80295SApple OSS Distributions };
241*d8b80295SApple OSS Distributions 
242*d8b80295SApple OSS Distributions struct rusage_info_v1 {
243*d8b80295SApple OSS Distributions 	uint8_t  ri_uuid[16];
244*d8b80295SApple OSS Distributions 	uint64_t ri_user_time;
245*d8b80295SApple OSS Distributions 	uint64_t ri_system_time;
246*d8b80295SApple OSS Distributions 	uint64_t ri_pkg_idle_wkups;
247*d8b80295SApple OSS Distributions 	uint64_t ri_interrupt_wkups;
248*d8b80295SApple OSS Distributions 	uint64_t ri_pageins;
249*d8b80295SApple OSS Distributions 	uint64_t ri_wired_size;
250*d8b80295SApple OSS Distributions 	uint64_t ri_resident_size;
251*d8b80295SApple OSS Distributions 	uint64_t ri_phys_footprint;
252*d8b80295SApple OSS Distributions 	uint64_t ri_proc_start_abstime;
253*d8b80295SApple OSS Distributions 	uint64_t ri_proc_exit_abstime;
254*d8b80295SApple OSS Distributions 	uint64_t ri_child_user_time;
255*d8b80295SApple OSS Distributions 	uint64_t ri_child_system_time;
256*d8b80295SApple OSS Distributions 	uint64_t ri_child_pkg_idle_wkups;
257*d8b80295SApple OSS Distributions 	uint64_t ri_child_interrupt_wkups;
258*d8b80295SApple OSS Distributions 	uint64_t ri_child_pageins;
259*d8b80295SApple OSS Distributions 	uint64_t ri_child_elapsed_abstime;
260*d8b80295SApple OSS Distributions };
261*d8b80295SApple OSS Distributions 
262*d8b80295SApple OSS Distributions struct rusage_info_v2 {
263*d8b80295SApple OSS Distributions 	uint8_t  ri_uuid[16];
264*d8b80295SApple OSS Distributions 	uint64_t ri_user_time;
265*d8b80295SApple OSS Distributions 	uint64_t ri_system_time;
266*d8b80295SApple OSS Distributions 	uint64_t ri_pkg_idle_wkups;
267*d8b80295SApple OSS Distributions 	uint64_t ri_interrupt_wkups;
268*d8b80295SApple OSS Distributions 	uint64_t ri_pageins;
269*d8b80295SApple OSS Distributions 	uint64_t ri_wired_size;
270*d8b80295SApple OSS Distributions 	uint64_t ri_resident_size;
271*d8b80295SApple OSS Distributions 	uint64_t ri_phys_footprint;
272*d8b80295SApple OSS Distributions 	uint64_t ri_proc_start_abstime;
273*d8b80295SApple OSS Distributions 	uint64_t ri_proc_exit_abstime;
274*d8b80295SApple OSS Distributions 	uint64_t ri_child_user_time;
275*d8b80295SApple OSS Distributions 	uint64_t ri_child_system_time;
276*d8b80295SApple OSS Distributions 	uint64_t ri_child_pkg_idle_wkups;
277*d8b80295SApple OSS Distributions 	uint64_t ri_child_interrupt_wkups;
278*d8b80295SApple OSS Distributions 	uint64_t ri_child_pageins;
279*d8b80295SApple OSS Distributions 	uint64_t ri_child_elapsed_abstime;
280*d8b80295SApple OSS Distributions 	uint64_t ri_diskio_bytesread;
281*d8b80295SApple OSS Distributions 	uint64_t ri_diskio_byteswritten;
282*d8b80295SApple OSS Distributions };
283*d8b80295SApple OSS Distributions 
284*d8b80295SApple OSS Distributions struct rusage_info_v3 {
285*d8b80295SApple OSS Distributions 	uint8_t  ri_uuid[16];
286*d8b80295SApple OSS Distributions 	uint64_t ri_user_time;
287*d8b80295SApple OSS Distributions 	uint64_t ri_system_time;
288*d8b80295SApple OSS Distributions 	uint64_t ri_pkg_idle_wkups;
289*d8b80295SApple OSS Distributions 	uint64_t ri_interrupt_wkups;
290*d8b80295SApple OSS Distributions 	uint64_t ri_pageins;
291*d8b80295SApple OSS Distributions 	uint64_t ri_wired_size;
292*d8b80295SApple OSS Distributions 	uint64_t ri_resident_size;
293*d8b80295SApple OSS Distributions 	uint64_t ri_phys_footprint;
294*d8b80295SApple OSS Distributions 	uint64_t ri_proc_start_abstime;
295*d8b80295SApple OSS Distributions 	uint64_t ri_proc_exit_abstime;
296*d8b80295SApple OSS Distributions 	uint64_t ri_child_user_time;
297*d8b80295SApple OSS Distributions 	uint64_t ri_child_system_time;
298*d8b80295SApple OSS Distributions 	uint64_t ri_child_pkg_idle_wkups;
299*d8b80295SApple OSS Distributions 	uint64_t ri_child_interrupt_wkups;
300*d8b80295SApple OSS Distributions 	uint64_t ri_child_pageins;
301*d8b80295SApple OSS Distributions 	uint64_t ri_child_elapsed_abstime;
302*d8b80295SApple OSS Distributions 	uint64_t ri_diskio_bytesread;
303*d8b80295SApple OSS Distributions 	uint64_t ri_diskio_byteswritten;
304*d8b80295SApple OSS Distributions 	uint64_t ri_cpu_time_qos_default;
305*d8b80295SApple OSS Distributions 	uint64_t ri_cpu_time_qos_maintenance;
306*d8b80295SApple OSS Distributions 	uint64_t ri_cpu_time_qos_background;
307*d8b80295SApple OSS Distributions 	uint64_t ri_cpu_time_qos_utility;
308*d8b80295SApple OSS Distributions 	uint64_t ri_cpu_time_qos_legacy;
309*d8b80295SApple OSS Distributions 	uint64_t ri_cpu_time_qos_user_initiated;
310*d8b80295SApple OSS Distributions 	uint64_t ri_cpu_time_qos_user_interactive;
311*d8b80295SApple OSS Distributions 	uint64_t ri_billed_system_time;
312*d8b80295SApple OSS Distributions 	uint64_t ri_serviced_system_time;
313*d8b80295SApple OSS Distributions };
314*d8b80295SApple OSS Distributions 
315*d8b80295SApple OSS Distributions struct rusage_info_v4 {
316*d8b80295SApple OSS Distributions 	uint8_t  ri_uuid[16];
317*d8b80295SApple OSS Distributions 	uint64_t ri_user_time;
318*d8b80295SApple OSS Distributions 	uint64_t ri_system_time;
319*d8b80295SApple OSS Distributions 	uint64_t ri_pkg_idle_wkups;
320*d8b80295SApple OSS Distributions 	uint64_t ri_interrupt_wkups;
321*d8b80295SApple OSS Distributions 	uint64_t ri_pageins;
322*d8b80295SApple OSS Distributions 	uint64_t ri_wired_size;
323*d8b80295SApple OSS Distributions 	uint64_t ri_resident_size;
324*d8b80295SApple OSS Distributions 	uint64_t ri_phys_footprint;
325*d8b80295SApple OSS Distributions 	uint64_t ri_proc_start_abstime;
326*d8b80295SApple OSS Distributions 	uint64_t ri_proc_exit_abstime;
327*d8b80295SApple OSS Distributions 	uint64_t ri_child_user_time;
328*d8b80295SApple OSS Distributions 	uint64_t ri_child_system_time;
329*d8b80295SApple OSS Distributions 	uint64_t ri_child_pkg_idle_wkups;
330*d8b80295SApple OSS Distributions 	uint64_t ri_child_interrupt_wkups;
331*d8b80295SApple OSS Distributions 	uint64_t ri_child_pageins;
332*d8b80295SApple OSS Distributions 	uint64_t ri_child_elapsed_abstime;
333*d8b80295SApple OSS Distributions 	uint64_t ri_diskio_bytesread;
334*d8b80295SApple OSS Distributions 	uint64_t ri_diskio_byteswritten;
335*d8b80295SApple OSS Distributions 	uint64_t ri_cpu_time_qos_default;
336*d8b80295SApple OSS Distributions 	uint64_t ri_cpu_time_qos_maintenance;
337*d8b80295SApple OSS Distributions 	uint64_t ri_cpu_time_qos_background;
338*d8b80295SApple OSS Distributions 	uint64_t ri_cpu_time_qos_utility;
339*d8b80295SApple OSS Distributions 	uint64_t ri_cpu_time_qos_legacy;
340*d8b80295SApple OSS Distributions 	uint64_t ri_cpu_time_qos_user_initiated;
341*d8b80295SApple OSS Distributions 	uint64_t ri_cpu_time_qos_user_interactive;
342*d8b80295SApple OSS Distributions 	uint64_t ri_billed_system_time;
343*d8b80295SApple OSS Distributions 	uint64_t ri_serviced_system_time;
344*d8b80295SApple OSS Distributions 	uint64_t ri_logical_writes;
345*d8b80295SApple OSS Distributions 	uint64_t ri_lifetime_max_phys_footprint;
346*d8b80295SApple OSS Distributions 	uint64_t ri_instructions;
347*d8b80295SApple OSS Distributions 	uint64_t ri_cycles;
348*d8b80295SApple OSS Distributions 	uint64_t ri_billed_energy;
349*d8b80295SApple OSS Distributions 	uint64_t ri_serviced_energy;
350*d8b80295SApple OSS Distributions 	uint64_t ri_interval_max_phys_footprint;
351*d8b80295SApple OSS Distributions 	uint64_t ri_runnable_time;
352*d8b80295SApple OSS Distributions };
353*d8b80295SApple OSS Distributions 
354*d8b80295SApple OSS Distributions struct rusage_info_v5 {
355*d8b80295SApple OSS Distributions 	uint8_t  ri_uuid[16];
356*d8b80295SApple OSS Distributions 	uint64_t ri_user_time;
357*d8b80295SApple OSS Distributions 	uint64_t ri_system_time;
358*d8b80295SApple OSS Distributions 	uint64_t ri_pkg_idle_wkups;
359*d8b80295SApple OSS Distributions 	uint64_t ri_interrupt_wkups;
360*d8b80295SApple OSS Distributions 	uint64_t ri_pageins;
361*d8b80295SApple OSS Distributions 	uint64_t ri_wired_size;
362*d8b80295SApple OSS Distributions 	uint64_t ri_resident_size;
363*d8b80295SApple OSS Distributions 	uint64_t ri_phys_footprint;
364*d8b80295SApple OSS Distributions 	uint64_t ri_proc_start_abstime;
365*d8b80295SApple OSS Distributions 	uint64_t ri_proc_exit_abstime;
366*d8b80295SApple OSS Distributions 	uint64_t ri_child_user_time;
367*d8b80295SApple OSS Distributions 	uint64_t ri_child_system_time;
368*d8b80295SApple OSS Distributions 	uint64_t ri_child_pkg_idle_wkups;
369*d8b80295SApple OSS Distributions 	uint64_t ri_child_interrupt_wkups;
370*d8b80295SApple OSS Distributions 	uint64_t ri_child_pageins;
371*d8b80295SApple OSS Distributions 	uint64_t ri_child_elapsed_abstime;
372*d8b80295SApple OSS Distributions 	uint64_t ri_diskio_bytesread;
373*d8b80295SApple OSS Distributions 	uint64_t ri_diskio_byteswritten;
374*d8b80295SApple OSS Distributions 	uint64_t ri_cpu_time_qos_default;
375*d8b80295SApple OSS Distributions 	uint64_t ri_cpu_time_qos_maintenance;
376*d8b80295SApple OSS Distributions 	uint64_t ri_cpu_time_qos_background;
377*d8b80295SApple OSS Distributions 	uint64_t ri_cpu_time_qos_utility;
378*d8b80295SApple OSS Distributions 	uint64_t ri_cpu_time_qos_legacy;
379*d8b80295SApple OSS Distributions 	uint64_t ri_cpu_time_qos_user_initiated;
380*d8b80295SApple OSS Distributions 	uint64_t ri_cpu_time_qos_user_interactive;
381*d8b80295SApple OSS Distributions 	uint64_t ri_billed_system_time;
382*d8b80295SApple OSS Distributions 	uint64_t ri_serviced_system_time;
383*d8b80295SApple OSS Distributions 	uint64_t ri_logical_writes;
384*d8b80295SApple OSS Distributions 	uint64_t ri_lifetime_max_phys_footprint;
385*d8b80295SApple OSS Distributions 	uint64_t ri_instructions;
386*d8b80295SApple OSS Distributions 	uint64_t ri_cycles;
387*d8b80295SApple OSS Distributions 	uint64_t ri_billed_energy;
388*d8b80295SApple OSS Distributions 	uint64_t ri_serviced_energy;
389*d8b80295SApple OSS Distributions 	uint64_t ri_interval_max_phys_footprint;
390*d8b80295SApple OSS Distributions 	uint64_t ri_runnable_time;
391*d8b80295SApple OSS Distributions 	uint64_t ri_flags;
392*d8b80295SApple OSS Distributions };
393*d8b80295SApple OSS Distributions 
394*d8b80295SApple OSS Distributions struct rusage_info_v6 {
395*d8b80295SApple OSS Distributions 	uint8_t  ri_uuid[16];
396*d8b80295SApple OSS Distributions 	uint64_t ri_user_time;
397*d8b80295SApple OSS Distributions 	uint64_t ri_system_time;
398*d8b80295SApple OSS Distributions 	uint64_t ri_pkg_idle_wkups;
399*d8b80295SApple OSS Distributions 	uint64_t ri_interrupt_wkups;
400*d8b80295SApple OSS Distributions 	uint64_t ri_pageins;
401*d8b80295SApple OSS Distributions 	uint64_t ri_wired_size;
402*d8b80295SApple OSS Distributions 	uint64_t ri_resident_size;
403*d8b80295SApple OSS Distributions 	uint64_t ri_phys_footprint;
404*d8b80295SApple OSS Distributions 	uint64_t ri_proc_start_abstime;
405*d8b80295SApple OSS Distributions 	uint64_t ri_proc_exit_abstime;
406*d8b80295SApple OSS Distributions 	uint64_t ri_child_user_time;
407*d8b80295SApple OSS Distributions 	uint64_t ri_child_system_time;
408*d8b80295SApple OSS Distributions 	uint64_t ri_child_pkg_idle_wkups;
409*d8b80295SApple OSS Distributions 	uint64_t ri_child_interrupt_wkups;
410*d8b80295SApple OSS Distributions 	uint64_t ri_child_pageins;
411*d8b80295SApple OSS Distributions 	uint64_t ri_child_elapsed_abstime;
412*d8b80295SApple OSS Distributions 	uint64_t ri_diskio_bytesread;
413*d8b80295SApple OSS Distributions 	uint64_t ri_diskio_byteswritten;
414*d8b80295SApple OSS Distributions 	uint64_t ri_cpu_time_qos_default;
415*d8b80295SApple OSS Distributions 	uint64_t ri_cpu_time_qos_maintenance;
416*d8b80295SApple OSS Distributions 	uint64_t ri_cpu_time_qos_background;
417*d8b80295SApple OSS Distributions 	uint64_t ri_cpu_time_qos_utility;
418*d8b80295SApple OSS Distributions 	uint64_t ri_cpu_time_qos_legacy;
419*d8b80295SApple OSS Distributions 	uint64_t ri_cpu_time_qos_user_initiated;
420*d8b80295SApple OSS Distributions 	uint64_t ri_cpu_time_qos_user_interactive;
421*d8b80295SApple OSS Distributions 	uint64_t ri_billed_system_time;
422*d8b80295SApple OSS Distributions 	uint64_t ri_serviced_system_time;
423*d8b80295SApple OSS Distributions 	uint64_t ri_logical_writes;
424*d8b80295SApple OSS Distributions 	uint64_t ri_lifetime_max_phys_footprint;
425*d8b80295SApple OSS Distributions 	uint64_t ri_instructions;
426*d8b80295SApple OSS Distributions 	uint64_t ri_cycles;
427*d8b80295SApple OSS Distributions 	uint64_t ri_billed_energy;
428*d8b80295SApple OSS Distributions 	uint64_t ri_serviced_energy;
429*d8b80295SApple OSS Distributions 	uint64_t ri_interval_max_phys_footprint;
430*d8b80295SApple OSS Distributions 	uint64_t ri_runnable_time;
431*d8b80295SApple OSS Distributions 	uint64_t ri_flags;
432*d8b80295SApple OSS Distributions 	uint64_t ri_user_ptime;
433*d8b80295SApple OSS Distributions 	uint64_t ri_system_ptime;
434*d8b80295SApple OSS Distributions 	uint64_t ri_pinstructions;
435*d8b80295SApple OSS Distributions 	uint64_t ri_pcycles;
436*d8b80295SApple OSS Distributions 	uint64_t ri_energy_nj;
437*d8b80295SApple OSS Distributions 	uint64_t ri_penergy_nj;
438*d8b80295SApple OSS Distributions 	uint64_t ri_secure_time_in_system;
439*d8b80295SApple OSS Distributions 	uint64_t ri_secure_ptime_in_system;
440*d8b80295SApple OSS Distributions 	uint64_t ri_reserved[12];
441*d8b80295SApple OSS Distributions };
442*d8b80295SApple OSS Distributions 
443*d8b80295SApple OSS Distributions typedef struct rusage_info_v6 rusage_info_current;
444*d8b80295SApple OSS Distributions 
445*d8b80295SApple OSS Distributions #endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
446*d8b80295SApple OSS Distributions 
447*d8b80295SApple OSS Distributions #ifdef KERNEL
448*d8b80295SApple OSS Distributions 
449*d8b80295SApple OSS Distributions struct rusage_superset {
450*d8b80295SApple OSS Distributions 	struct rusage           ru;
451*d8b80295SApple OSS Distributions 	rusage_info_current     ri;
452*d8b80295SApple OSS Distributions };
453*d8b80295SApple OSS Distributions 
454*d8b80295SApple OSS Distributions struct rusage_info_child {
455*d8b80295SApple OSS Distributions 	uint64_t ri_child_user_time;
456*d8b80295SApple OSS Distributions 	uint64_t ri_child_system_time;
457*d8b80295SApple OSS Distributions 	uint64_t ri_child_pkg_idle_wkups;
458*d8b80295SApple OSS Distributions 	uint64_t ri_child_interrupt_wkups;
459*d8b80295SApple OSS Distributions 	uint64_t ri_child_pageins;
460*d8b80295SApple OSS Distributions 	uint64_t ri_child_elapsed_abstime;
461*d8b80295SApple OSS Distributions };
462*d8b80295SApple OSS Distributions 
463*d8b80295SApple OSS Distributions struct  user64_rusage {
464*d8b80295SApple OSS Distributions 	struct user64_timeval ru_utime; /* user time used */
465*d8b80295SApple OSS Distributions 	struct user64_timeval ru_stime; /* system time used */
466*d8b80295SApple OSS Distributions 	user64_long_t   ru_maxrss;              /* max resident set size */
467*d8b80295SApple OSS Distributions 	user64_long_t   ru_ixrss;               /* integral shared memory size */
468*d8b80295SApple OSS Distributions 	user64_long_t   ru_idrss;               /* integral unshared data " */
469*d8b80295SApple OSS Distributions 	user64_long_t   ru_isrss;               /* integral unshared stack " */
470*d8b80295SApple OSS Distributions 	user64_long_t   ru_minflt;              /* page reclaims */
471*d8b80295SApple OSS Distributions 	user64_long_t   ru_majflt;              /* page faults */
472*d8b80295SApple OSS Distributions 	user64_long_t   ru_nswap;               /* swaps */
473*d8b80295SApple OSS Distributions 	user64_long_t   ru_inblock;             /* block input operations */
474*d8b80295SApple OSS Distributions 	user64_long_t   ru_oublock;             /* block output operations */
475*d8b80295SApple OSS Distributions 	user64_long_t   ru_msgsnd;              /* messages sent */
476*d8b80295SApple OSS Distributions 	user64_long_t   ru_msgrcv;              /* messages received */
477*d8b80295SApple OSS Distributions 	user64_long_t   ru_nsignals;    /* signals received */
478*d8b80295SApple OSS Distributions 	user64_long_t   ru_nvcsw;               /* voluntary context switches */
479*d8b80295SApple OSS Distributions 	user64_long_t   ru_nivcsw;              /* involuntary " */
480*d8b80295SApple OSS Distributions };
481*d8b80295SApple OSS Distributions 
482*d8b80295SApple OSS Distributions struct  user32_rusage {
483*d8b80295SApple OSS Distributions 	struct user32_timeval ru_utime; /* user time used */
484*d8b80295SApple OSS Distributions 	struct user32_timeval ru_stime; /* system time used */
485*d8b80295SApple OSS Distributions 	user32_long_t   ru_maxrss;              /* max resident set size */
486*d8b80295SApple OSS Distributions 	user32_long_t   ru_ixrss;               /* integral shared memory size */
487*d8b80295SApple OSS Distributions 	user32_long_t   ru_idrss;               /* integral unshared data " */
488*d8b80295SApple OSS Distributions 	user32_long_t   ru_isrss;               /* integral unshared stack " */
489*d8b80295SApple OSS Distributions 	user32_long_t   ru_minflt;              /* page reclaims */
490*d8b80295SApple OSS Distributions 	user32_long_t   ru_majflt;              /* page faults */
491*d8b80295SApple OSS Distributions 	user32_long_t   ru_nswap;               /* swaps */
492*d8b80295SApple OSS Distributions 	user32_long_t   ru_inblock;             /* block input operations */
493*d8b80295SApple OSS Distributions 	user32_long_t   ru_oublock;             /* block output operations */
494*d8b80295SApple OSS Distributions 	user32_long_t   ru_msgsnd;              /* messages sent */
495*d8b80295SApple OSS Distributions 	user32_long_t   ru_msgrcv;              /* messages received */
496*d8b80295SApple OSS Distributions 	user32_long_t   ru_nsignals;    /* signals received */
497*d8b80295SApple OSS Distributions 	user32_long_t   ru_nvcsw;               /* voluntary context switches */
498*d8b80295SApple OSS Distributions 	user32_long_t   ru_nivcsw;              /* involuntary " */
499*d8b80295SApple OSS Distributions };
500*d8b80295SApple OSS Distributions 
501*d8b80295SApple OSS Distributions #endif /* KERNEL */
502*d8b80295SApple OSS Distributions 
503*d8b80295SApple OSS Distributions 
504*d8b80295SApple OSS Distributions /*****
505*d8b80295SApple OSS Distributions  * RESOURCE LIMITS
506*d8b80295SApple OSS Distributions  */
507*d8b80295SApple OSS Distributions 
508*d8b80295SApple OSS Distributions /*
509*d8b80295SApple OSS Distributions  * Symbolic constants for resource limits; since all limits are representable
510*d8b80295SApple OSS Distributions  * as a type rlim_t, we are permitted to define RLIM_SAVED_* in terms of
511*d8b80295SApple OSS Distributions  * RLIM_INFINITY.
512*d8b80295SApple OSS Distributions  */
513*d8b80295SApple OSS Distributions #define RLIM_INFINITY   (((__uint64_t)1 << 63) - 1)     /* no limit */
514*d8b80295SApple OSS Distributions #define RLIM_SAVED_MAX  RLIM_INFINITY   /* Unrepresentable hard limit */
515*d8b80295SApple OSS Distributions #define RLIM_SAVED_CUR  RLIM_INFINITY   /* Unrepresentable soft limit */
516*d8b80295SApple OSS Distributions 
517*d8b80295SApple OSS Distributions /*
518*d8b80295SApple OSS Distributions  * Possible values of the first parameter to getrlimit()/setrlimit(), to
519*d8b80295SApple OSS Distributions  * indicate for which resource the operation is being performed.
520*d8b80295SApple OSS Distributions  */
521*d8b80295SApple OSS Distributions #define RLIMIT_CPU      0               /* cpu time per process */
522*d8b80295SApple OSS Distributions #define RLIMIT_FSIZE    1               /* file size */
523*d8b80295SApple OSS Distributions #define RLIMIT_DATA     2               /* data segment size */
524*d8b80295SApple OSS Distributions #define RLIMIT_STACK    3               /* stack size */
525*d8b80295SApple OSS Distributions #define RLIMIT_CORE     4               /* core file size */
526*d8b80295SApple OSS Distributions #define RLIMIT_AS       5               /* address space (resident set size) */
527*d8b80295SApple OSS Distributions #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
528*d8b80295SApple OSS Distributions #define RLIMIT_RSS      RLIMIT_AS       /* source compatibility alias */
529*d8b80295SApple OSS Distributions #define RLIMIT_MEMLOCK  6               /* locked-in-memory address space */
530*d8b80295SApple OSS Distributions #define RLIMIT_NPROC    7               /* number of processes */
531*d8b80295SApple OSS Distributions #endif  /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
532*d8b80295SApple OSS Distributions #define RLIMIT_NOFILE   8               /* number of open files */
533*d8b80295SApple OSS Distributions #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
534*d8b80295SApple OSS Distributions #define RLIM_NLIMITS    9               /* total number of resource limits */
535*d8b80295SApple OSS Distributions #endif  /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
536*d8b80295SApple OSS Distributions #define _RLIMIT_POSIX_FLAG      0x1000  /* Set bit for strict POSIX */
537*d8b80295SApple OSS Distributions 
538*d8b80295SApple OSS Distributions /*
539*d8b80295SApple OSS Distributions  * A structure representing a resource limit.  The address of an instance
540*d8b80295SApple OSS Distributions  * of this structure is the second parameter to getrlimit()/setrlimit().
541*d8b80295SApple OSS Distributions  */
542*d8b80295SApple OSS Distributions struct rlimit {
543*d8b80295SApple OSS Distributions 	rlim_t  rlim_cur;               /* current (soft) limit */
544*d8b80295SApple OSS Distributions 	rlim_t  rlim_max;               /* maximum value for rlim_cur */
545*d8b80295SApple OSS Distributions };
546*d8b80295SApple OSS Distributions 
547*d8b80295SApple OSS Distributions #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
548*d8b80295SApple OSS Distributions /*
549*d8b80295SApple OSS Distributions  * proc_rlimit_control()
550*d8b80295SApple OSS Distributions  *
551*d8b80295SApple OSS Distributions  * Resource limit flavors
552*d8b80295SApple OSS Distributions  */
553*d8b80295SApple OSS Distributions #define RLIMIT_WAKEUPS_MONITOR          0x1 /* Configure the wakeups monitor. */
554*d8b80295SApple OSS Distributions #define RLIMIT_CPU_USAGE_MONITOR        0x2 /* Configure the CPU usage monitor. */
555*d8b80295SApple OSS Distributions #define RLIMIT_THREAD_CPULIMITS         0x3 /* Configure a blocking, per-thread, CPU limits. */
556*d8b80295SApple OSS Distributions #define RLIMIT_FOOTPRINT_INTERVAL       0x4 /* Configure memory footprint interval tracking */
557*d8b80295SApple OSS Distributions 
558*d8b80295SApple OSS Distributions /*
559*d8b80295SApple OSS Distributions  * Flags for wakeups monitor control.
560*d8b80295SApple OSS Distributions  */
561*d8b80295SApple OSS Distributions #define WAKEMON_ENABLE                  0x01
562*d8b80295SApple OSS Distributions #define WAKEMON_DISABLE                 0x02
563*d8b80295SApple OSS Distributions #define WAKEMON_GET_PARAMS              0x04
564*d8b80295SApple OSS Distributions #define WAKEMON_SET_DEFAULTS            0x08
565*d8b80295SApple OSS Distributions #define WAKEMON_MAKE_FATAL              0x10 /* Configure the task so that violations are fatal. */
566*d8b80295SApple OSS Distributions 
567*d8b80295SApple OSS Distributions /*
568*d8b80295SApple OSS Distributions  * Flags for CPU usage monitor control.
569*d8b80295SApple OSS Distributions  */
570*d8b80295SApple OSS Distributions #define CPUMON_MAKE_FATAL               0x1000
571*d8b80295SApple OSS Distributions 
572*d8b80295SApple OSS Distributions /*
573*d8b80295SApple OSS Distributions  * Flags for memory footprint interval tracking.
574*d8b80295SApple OSS Distributions  */
575*d8b80295SApple OSS Distributions #define FOOTPRINT_INTERVAL_RESET        0x1 /* Reset the footprint interval counter to zero */
576*d8b80295SApple OSS Distributions 
577*d8b80295SApple OSS Distributions struct proc_rlimit_control_wakeupmon {
578*d8b80295SApple OSS Distributions 	uint32_t wm_flags;
579*d8b80295SApple OSS Distributions 	int32_t wm_rate;
580*d8b80295SApple OSS Distributions };
581*d8b80295SApple OSS Distributions 
582*d8b80295SApple OSS Distributions #if PRIVATE
583*d8b80295SApple OSS Distributions /*
584*d8b80295SApple OSS Distributions  * Flags for I/O monitor control.
585*d8b80295SApple OSS Distributions  */
586*d8b80295SApple OSS Distributions #define IOMON_ENABLE                    0x01
587*d8b80295SApple OSS Distributions #define IOMON_DISABLE                   0x02
588*d8b80295SApple OSS Distributions 
589*d8b80295SApple OSS Distributions #endif /* PRIVATE */
590*d8b80295SApple OSS Distributions 
591*d8b80295SApple OSS Distributions 
592*d8b80295SApple OSS Distributions /* I/O type */
593*d8b80295SApple OSS Distributions #define IOPOL_TYPE_DISK 0
594*d8b80295SApple OSS Distributions #if PRIVATE
595*d8b80295SApple OSS Distributions #define IOPOL_TYPE_VFS_HFS_CASE_SENSITIVITY 1
596*d8b80295SApple OSS Distributions #endif
597*d8b80295SApple OSS Distributions #define IOPOL_TYPE_VFS_ATIME_UPDATES 2
598*d8b80295SApple OSS Distributions #define IOPOL_TYPE_VFS_MATERIALIZE_DATALESS_FILES 3
599*d8b80295SApple OSS Distributions #define IOPOL_TYPE_VFS_STATFS_NO_DATA_VOLUME 4
600*d8b80295SApple OSS Distributions #define IOPOL_TYPE_VFS_TRIGGER_RESOLVE 5
601*d8b80295SApple OSS Distributions #define IOPOL_TYPE_VFS_IGNORE_CONTENT_PROTECTION 6
602*d8b80295SApple OSS Distributions #define IOPOL_TYPE_VFS_IGNORE_PERMISSIONS 7
603*d8b80295SApple OSS Distributions #define IOPOL_TYPE_VFS_SKIP_MTIME_UPDATE 8
604*d8b80295SApple OSS Distributions #define IOPOL_TYPE_VFS_ALLOW_LOW_SPACE_WRITES 9
605*d8b80295SApple OSS Distributions #define IOPOL_TYPE_VFS_DISALLOW_RW_FOR_O_EVTONLY 10
606*d8b80295SApple OSS Distributions #if PRIVATE
607*d8b80295SApple OSS Distributions #define IOPOL_TYPE_VFS_ALTLINK 11
608*d8b80295SApple OSS Distributions #define IOPOL_TYPE_VFS_NOCACHE_WRITE_FS_BLKSIZE  12
609*d8b80295SApple OSS Distributions #endif
610*d8b80295SApple OSS Distributions 
611*d8b80295SApple OSS Distributions /* scope */
612*d8b80295SApple OSS Distributions #define IOPOL_SCOPE_PROCESS   0
613*d8b80295SApple OSS Distributions #define IOPOL_SCOPE_THREAD    1
614*d8b80295SApple OSS Distributions #define IOPOL_SCOPE_DARWIN_BG 2
615*d8b80295SApple OSS Distributions 
616*d8b80295SApple OSS Distributions /* I/O Priority */
617*d8b80295SApple OSS Distributions #define IOPOL_DEFAULT           0
618*d8b80295SApple OSS Distributions #define IOPOL_IMPORTANT         1
619*d8b80295SApple OSS Distributions #define IOPOL_PASSIVE           2
620*d8b80295SApple OSS Distributions #define IOPOL_THROTTLE          3
621*d8b80295SApple OSS Distributions #define IOPOL_UTILITY           4
622*d8b80295SApple OSS Distributions #define IOPOL_STANDARD          5
623*d8b80295SApple OSS Distributions 
624*d8b80295SApple OSS Distributions /* compatibility with older names */
625*d8b80295SApple OSS Distributions #define IOPOL_APPLICATION       IOPOL_STANDARD
626*d8b80295SApple OSS Distributions #define IOPOL_NORMAL            IOPOL_IMPORTANT
627*d8b80295SApple OSS Distributions 
628*d8b80295SApple OSS Distributions #if PRIVATE
629*d8b80295SApple OSS Distributions #define IOPOL_VFS_HFS_CASE_SENSITIVITY_DEFAULT  0
630*d8b80295SApple OSS Distributions #define IOPOL_VFS_HFS_CASE_SENSITIVITY_FORCE_CASE_SENSITIVE     1
631*d8b80295SApple OSS Distributions 
632*d8b80295SApple OSS Distributions #define IOPOL_VFS_ALTLINK_DISABLED 0
633*d8b80295SApple OSS Distributions #define IOPOL_VFS_ALTLINK_ENABLED  1
634*d8b80295SApple OSS Distributions #endif
635*d8b80295SApple OSS Distributions 
636*d8b80295SApple OSS Distributions #define IOPOL_ATIME_UPDATES_DEFAULT     0
637*d8b80295SApple OSS Distributions #define IOPOL_ATIME_UPDATES_OFF         1
638*d8b80295SApple OSS Distributions 
639*d8b80295SApple OSS Distributions #define IOPOL_MATERIALIZE_DATALESS_FILES_DEFAULT 0
640*d8b80295SApple OSS Distributions #define IOPOL_MATERIALIZE_DATALESS_FILES_OFF     1
641*d8b80295SApple OSS Distributions #define IOPOL_MATERIALIZE_DATALESS_FILES_ON      2
642*d8b80295SApple OSS Distributions 
643*d8b80295SApple OSS Distributions #define IOPOL_VFS_STATFS_NO_DATA_VOLUME_DEFAULT 0
644*d8b80295SApple OSS Distributions #define IOPOL_VFS_STATFS_FORCE_NO_DATA_VOLUME   1
645*d8b80295SApple OSS Distributions 
646*d8b80295SApple OSS Distributions #define IOPOL_VFS_TRIGGER_RESOLVE_DEFAULT 0
647*d8b80295SApple OSS Distributions #define IOPOL_VFS_TRIGGER_RESOLVE_OFF     1
648*d8b80295SApple OSS Distributions 
649*d8b80295SApple OSS Distributions #define IOPOL_VFS_CONTENT_PROTECTION_DEFAULT 0
650*d8b80295SApple OSS Distributions #define IOPOL_VFS_CONTENT_PROTECTION_IGNORE  1
651*d8b80295SApple OSS Distributions 
652*d8b80295SApple OSS Distributions #define IOPOL_VFS_IGNORE_PERMISSIONS_OFF 0
653*d8b80295SApple OSS Distributions #define IOPOL_VFS_IGNORE_PERMISSIONS_ON  1
654*d8b80295SApple OSS Distributions 
655*d8b80295SApple OSS Distributions #define IOPOL_VFS_SKIP_MTIME_UPDATE_OFF 0
656*d8b80295SApple OSS Distributions #define IOPOL_VFS_SKIP_MTIME_UPDATE_ON 1
657*d8b80295SApple OSS Distributions 
658*d8b80295SApple OSS Distributions #define IOPOL_VFS_ALLOW_LOW_SPACE_WRITES_OFF 0
659*d8b80295SApple OSS Distributions #define IOPOL_VFS_ALLOW_LOW_SPACE_WRITES_ON 1
660*d8b80295SApple OSS Distributions 
661*d8b80295SApple OSS Distributions #define IOPOL_VFS_DISALLOW_RW_FOR_O_EVTONLY_DEFAULT 0
662*d8b80295SApple OSS Distributions #define IOPOL_VFS_DISALLOW_RW_FOR_O_EVTONLY_ON 1
663*d8b80295SApple OSS Distributions 
664*d8b80295SApple OSS Distributions #define IOPOL_VFS_NOCACHE_WRITE_FS_BLKSIZE_DEFAULT 0
665*d8b80295SApple OSS Distributions #define IOPOL_VFS_NOCACHE_WRITE_FS_BLKSIZE_ON 1
666*d8b80295SApple OSS Distributions 
667*d8b80295SApple OSS Distributions #ifdef PRIVATE
668*d8b80295SApple OSS Distributions /*
669*d8b80295SApple OSS Distributions  * Structures for use in communicating via iopolicysys() between Libc and the
670*d8b80295SApple OSS Distributions  * kernel.  Not to be used by user programs directly.
671*d8b80295SApple OSS Distributions  */
672*d8b80295SApple OSS Distributions 
673*d8b80295SApple OSS Distributions /*
674*d8b80295SApple OSS Distributions  * the command to iopolicysys()
675*d8b80295SApple OSS Distributions  */
676*d8b80295SApple OSS Distributions #define IOPOL_CMD_GET           0x00000001      /* Get I/O policy */
677*d8b80295SApple OSS Distributions #define IOPOL_CMD_SET           0x00000002      /* Set I/O policy */
678*d8b80295SApple OSS Distributions 
679*d8b80295SApple OSS Distributions /*
680*d8b80295SApple OSS Distributions  * Second parameter to iopolicysys()
681*d8b80295SApple OSS Distributions  */
682*d8b80295SApple OSS Distributions struct _iopol_param_t {
683*d8b80295SApple OSS Distributions 	int iop_scope;  /* current process or a thread */
684*d8b80295SApple OSS Distributions 	int iop_iotype;
685*d8b80295SApple OSS Distributions 	int iop_policy;
686*d8b80295SApple OSS Distributions };
687*d8b80295SApple OSS Distributions 
688*d8b80295SApple OSS Distributions #endif  /* PRIVATE */
689*d8b80295SApple OSS Distributions #endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
690*d8b80295SApple OSS Distributions 
691*d8b80295SApple OSS Distributions #ifndef KERNEL
692*d8b80295SApple OSS Distributions 
693*d8b80295SApple OSS Distributions __BEGIN_DECLS
694*d8b80295SApple OSS Distributions int     getpriority(int, id_t);
695*d8b80295SApple OSS Distributions #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
696*d8b80295SApple OSS Distributions int     getiopolicy_np(int, int) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0);
697*d8b80295SApple OSS Distributions #endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
698*d8b80295SApple OSS Distributions int     getrlimit(int, struct rlimit *) __DARWIN_ALIAS(getrlimit);
699*d8b80295SApple OSS Distributions int     getrusage(int, struct rusage *);
700*d8b80295SApple OSS Distributions int     setpriority(int, id_t, int);
701*d8b80295SApple OSS Distributions #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
702*d8b80295SApple OSS Distributions int     setiopolicy_np(int, int, int) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0);
703*d8b80295SApple OSS Distributions #endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
704*d8b80295SApple OSS Distributions int     setrlimit(int, const struct rlimit *) __DARWIN_ALIAS(setrlimit);
705*d8b80295SApple OSS Distributions __END_DECLS
706*d8b80295SApple OSS Distributions 
707*d8b80295SApple OSS Distributions #endif  /* !KERNEL */
708*d8b80295SApple OSS Distributions #endif  /* !_SYS_RESOURCE_H_ */
709