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