1 /*
2  * Copyright (c) 2000, 2002-2006, 2008-2010, 2012 Apple Inc. All rights reserved.
3  *
4  * @APPLE_LICENSE_HEADER_START@
5  *
6  * This file contains Original Code and/or Modifications of Original Code
7  * as defined in and that are subject to the Apple Public Source License
8  * Version 2.0 (the 'License'). You may not use this file except in
9  * compliance with the License. Please obtain a copy of the License at
10  * http://www.opensource.apple.com/apsl/ and read it before using this
11  * file.
12  *
13  * The Original Code and all software distributed under the License are
14  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18  * Please see the License for the specific language governing rights and
19  * limitations under the License.
20  *
21  * @APPLE_LICENSE_HEADER_END@
22  */
23 /*-
24  * Copyright (c) 1998-1999 Apple Computer, Inc. All Rights Reserved
25  * Copyright (c) 1991, 1993, 1994
26  *	The Regents of the University of California.  All rights reserved.
27  *
28  * Redistribution and use in source and binary forms, with or without
29  * modification, are permitted provided that the following conditions
30  * are met:
31  * 1. Redistributions of source code must retain the above copyright
32  *    notice, this list of conditions and the following disclaimer.
33  * 2. Redistributions in binary form must reproduce the above copyright
34  *    notice, this list of conditions and the following disclaimer in the
35  *    documentation and/or other materials provided with the distribution.
36  * 3. All advertising materials mentioning features or use of this software
37  *    must display the following acknowledgement:
38  *	This product includes software developed by the University of
39  *	California, Berkeley and its contributors.
40  * 4. Neither the name of the University nor the names of its contributors
41  *    may be used to endorse or promote products derived from this software
42  *    without specific prior written permission.
43  *
44  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
45  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
46  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
47  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
48  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
49  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
50  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
51  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
52  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
53  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
54  * SUCH DAMAGE.
55  *
56  *	@(#)unistd.h	8.12 (Berkeley) 4/27/95
57  *
58  *  Copyright (c)  1998 Apple Compter, Inc.
59  *  All Rights Reserved
60  */
61 
62 /* History:
63         7/14/99 EKN at Apple fixed getdirentriesattr from getdirentryattr
64         3/26/98 CHW at Apple added real interface to searchfs call
65   	3/5/98  CHW at Apple added hfs semantic system calls headers
66 */
67 
68 #ifndef _UNISTD_H_
69 #define	_UNISTD_H_
70 
71 #include <_types.h>
72 #include <sys/unistd.h>
73 #include <Availability.h>
74 #include <sys/_types/_gid_t.h>
75 #include <sys/_types/_intptr_t.h>
76 #include <sys/_types/_off_t.h>
77 #include <sys/_types/_pid_t.h>
78 /* DO NOT REMOVE THIS COMMENT: fixincludes needs to see:
79  * _GCC_SIZE_T */
80 #include <sys/_types/_size_t.h>
81 #include <sys/_types/_ssize_t.h>
82 #include <sys/_types/_uid_t.h>
83 #include <sys/_types/_useconds_t.h>
84 #include <sys/_types/_null.h>
85 
86 #define	 STDIN_FILENO	0	/* standard input file descriptor */
87 #define	STDOUT_FILENO	1	/* standard output file descriptor */
88 #define	STDERR_FILENO	2	/* standard error file descriptor */
89 
90 
91 /* Version test macros */
92 /* _POSIX_VERSION and _POSIX2_VERSION from sys/unistd.h */
93 #define	_XOPEN_VERSION			600		/* [XSI] */
94 #define	_XOPEN_XCU_VERSION		4		/* Older standard */
95 
96 
97 /* Please keep this list in the same order as the applicable standard */
98 #define	_POSIX_ADVISORY_INFO		(-1)		/* [ADV] */
99 #define	_POSIX_ASYNCHRONOUS_IO		(-1)		/* [AIO] */
100 #define	_POSIX_BARRIERS			(-1)		/* [BAR] */
101 #define	_POSIX_CHOWN_RESTRICTED		200112L
102 #define	_POSIX_CLOCK_SELECTION		(-1)		/* [CS] */
103 #define	_POSIX_CPUTIME			(-1)		/* [CPT] */
104 #define	_POSIX_FSYNC			200112L		/* [FSC] */
105 #define	_POSIX_IPV6			200112L
106 #define	_POSIX_JOB_CONTROL		200112L
107 #define	_POSIX_MAPPED_FILES		200112L		/* [MF] */
108 #define	_POSIX_MEMLOCK			(-1)		/* [ML] */
109 #define	_POSIX_MEMLOCK_RANGE		(-1)		/* [MR] */
110 #define	_POSIX_MEMORY_PROTECTION	200112L		/* [MPR] */
111 #define	_POSIX_MESSAGE_PASSING		(-1)		/* [MSG] */
112 #define	_POSIX_MONOTONIC_CLOCK		(-1)		/* [MON] */
113 #define	_POSIX_NO_TRUNC			200112L
114 #define	_POSIX_PRIORITIZED_IO		(-1)		/* [PIO] */
115 #define	_POSIX_PRIORITY_SCHEDULING	(-1)		/* [PS] */
116 #define	_POSIX_RAW_SOCKETS		(-1)		/* [RS] */
117 #define	_POSIX_READER_WRITER_LOCKS	200112L		/* [THR] */
118 #define	_POSIX_REALTIME_SIGNALS		(-1)		/* [RTS] */
119 #define	_POSIX_REGEXP			200112L
120 #define	_POSIX_SAVED_IDS		200112L		/* XXX required */
121 #define	_POSIX_SEMAPHORES		(-1)		/* [SEM] */
122 #define	_POSIX_SHARED_MEMORY_OBJECTS	(-1)		/* [SHM] */
123 #define	_POSIX_SHELL			200112L
124 #define	_POSIX_SPAWN			(-1)		/* [SPN] */
125 #define	_POSIX_SPIN_LOCKS		(-1)		/* [SPI] */
126 #define	_POSIX_SPORADIC_SERVER		(-1)		/* [SS] */
127 #define	_POSIX_SYNCHRONIZED_IO		(-1)		/* [SIO] */
128 #define	_POSIX_THREAD_ATTR_STACKADDR	200112L		/* [TSA] */
129 #define	_POSIX_THREAD_ATTR_STACKSIZE	200112L		/* [TSS] */
130 #define	_POSIX_THREAD_CPUTIME		(-1)		/* [TCT] */
131 #define	_POSIX_THREAD_PRIO_INHERIT	(-1)		/* [TPI] */
132 #define	_POSIX_THREAD_PRIO_PROTECT	(-1)		/* [TPP] */
133 #define	_POSIX_THREAD_PRIORITY_SCHEDULING	(-1)	/* [TPS] */
134 #define	_POSIX_THREAD_PROCESS_SHARED	200112L		/* [TSH] */
135 #define	_POSIX_THREAD_SAFE_FUNCTIONS	200112L		/* [TSF] */
136 #define	_POSIX_THREAD_SPORADIC_SERVER	(-1)		/* [TSP] */
137 #define	_POSIX_THREADS			200112L		/* [THR] */
138 #define	_POSIX_TIMEOUTS			(-1)		/* [TMO] */
139 #define	_POSIX_TIMERS			(-1)		/* [TMR] */
140 #define	_POSIX_TRACE			(-1)		/* [TRC] */
141 #define	_POSIX_TRACE_EVENT_FILTER	(-1)		/* [TEF] */
142 #define	_POSIX_TRACE_INHERIT		(-1)		/* [TRI] */
143 #define	_POSIX_TRACE_LOG		(-1)		/* [TRL] */
144 #define	_POSIX_TYPED_MEMORY_OBJECTS	(-1)		/* [TYM] */
145 #ifndef _POSIX_VDISABLE
146 #define	_POSIX_VDISABLE			0xff		/* same as sys/termios.h */
147 #endif /* _POSIX_VDISABLE */
148 
149 #if __DARWIN_C_LEVEL >= 199209L
150 #define	_POSIX2_C_BIND			200112L
151 #define	_POSIX2_C_DEV			200112L		/* c99 command */
152 #define	_POSIX2_CHAR_TERM		200112L
153 #define	_POSIX2_FORT_DEV		(-1)		/* fort77 command */
154 #define	_POSIX2_FORT_RUN		200112L
155 #define	_POSIX2_LOCALEDEF		200112L		/* localedef command */
156 #define	_POSIX2_PBS			(-1)
157 #define	_POSIX2_PBS_ACCOUNTING		(-1)
158 #define	_POSIX2_PBS_CHECKPOINT		(-1)
159 #define	_POSIX2_PBS_LOCATE		(-1)
160 #define	_POSIX2_PBS_MESSAGE		(-1)
161 #define	_POSIX2_PBS_TRACK		(-1)
162 #define	_POSIX2_SW_DEV			200112L
163 #define	_POSIX2_UPE			200112L	/* XXXX no fc, newgrp, tabs */
164 #endif /* __DARWIN_C_LEVEL */
165 
166 #define	__ILP32_OFF32          (-1)
167 #define	__ILP32_OFFBIG         (-1)
168 
169 #define	__LP64_OFF64           (1)
170 #define	__LPBIG_OFFBIG         (1)
171 
172 #if __DARWIN_C_LEVEL >= 200112L
173 #define	_POSIX_V6_ILP32_OFF32		__ILP32_OFF32
174 #define	_POSIX_V6_ILP32_OFFBIG		__ILP32_OFFBIG
175 #define	_POSIX_V6_LP64_OFF64		__LP64_OFF64
176 #define	_POSIX_V6_LPBIG_OFFBIG		__LPBIG_OFFBIG
177 #endif /* __DARWIN_C_LEVEL >= 200112L */
178 
179 #if __DARWIN_C_LEVEL >= 200809L
180 #define	_POSIX_V7_ILP32_OFF32		__ILP32_OFF32
181 #define	_POSIX_V7_ILP32_OFFBIG		__ILP32_OFFBIG
182 #define	_POSIX_V7_LP64_OFF64		__LP64_OFF64
183 #define	_POSIX_V7_LPBIG_OFFBIG		__LPBIG_OFFBIG
184 #endif /* __DARWIN_C_LEVEL >= 200809L */
185 
186 #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
187 #define	_V6_ILP32_OFF32             __ILP32_OFF32
188 #define	_V6_ILP32_OFFBIG            __ILP32_OFFBIG
189 #define	_V6_LP64_OFF64              __LP64_OFF64
190 #define	_V6_LPBIG_OFFBIG            __LPBIG_OFFBIG
191 #endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
192 
193 #if (__DARWIN_C_LEVEL >= 199506L && __DARWIN_C_LEVEL < 200809L) || __DARWIN_C_LEVEL >= __DARWIN_C_FULL
194 /* Removed in Issue 7 */
195 #define	_XBS5_ILP32_OFF32		    __ILP32_OFF32
196 #define	_XBS5_ILP32_OFFBIG		    __ILP32_OFFBIG
197 #define	_XBS5_LP64_OFF64		    __LP64_OFF64
198 #define	_XBS5_LPBIG_OFFBIG		    __LPBIG_OFFBIG
199 #endif /* __DARWIN_C_LEVEL < 200809L */
200 
201 #if __DARWIN_C_LEVEL >= 199506L /* This really should be XSI */
202 #define	_XOPEN_CRYPT			(1)
203 #define	_XOPEN_ENH_I18N			(1)		/* XXX required */
204 #define	_XOPEN_LEGACY			(-1)	/* no ftime gcvt, wcswcs */
205 #define	_XOPEN_REALTIME			(-1)	/* no q'ed signals, mq_* */
206 #define	_XOPEN_REALTIME_THREADS		(-1)	/* no posix_spawn, et. al. */
207 #define	_XOPEN_SHM			(1)
208 #define	_XOPEN_STREAMS			(-1)   /* Issue 6 */
209 #define	_XOPEN_UNIX			(1)
210 #endif /* XSI */
211 
212 /* configurable system variables */
213 #define	_SC_ARG_MAX			 1
214 #define	_SC_CHILD_MAX			 2
215 #define	_SC_CLK_TCK			 3
216 #define	_SC_NGROUPS_MAX			 4
217 #define	_SC_OPEN_MAX			 5
218 #define	_SC_JOB_CONTROL			 6
219 #define	_SC_SAVED_IDS			 7
220 #define	_SC_VERSION			 8
221 #define	_SC_BC_BASE_MAX			 9
222 #define	_SC_BC_DIM_MAX			10
223 #define	_SC_BC_SCALE_MAX		11
224 #define	_SC_BC_STRING_MAX		12
225 #define	_SC_COLL_WEIGHTS_MAX		13
226 #define	_SC_EXPR_NEST_MAX		14
227 #define	_SC_LINE_MAX			15
228 #define	_SC_RE_DUP_MAX			16
229 #define	_SC_2_VERSION			17
230 #define	_SC_2_C_BIND			18
231 #define	_SC_2_C_DEV			19
232 #define	_SC_2_CHAR_TERM			20
233 #define	_SC_2_FORT_DEV			21
234 #define	_SC_2_FORT_RUN			22
235 #define	_SC_2_LOCALEDEF			23
236 #define	_SC_2_SW_DEV			24
237 #define	_SC_2_UPE			25
238 #define	_SC_STREAM_MAX			26
239 #define	_SC_TZNAME_MAX			27
240 
241 #if __DARWIN_C_LEVEL >= 199309L
242 #define	_SC_ASYNCHRONOUS_IO		28
243 #define	_SC_PAGESIZE			29
244 #define	_SC_MEMLOCK			30
245 #define	_SC_MEMLOCK_RANGE		31
246 #define	_SC_MEMORY_PROTECTION		32
247 #define	_SC_MESSAGE_PASSING		33
248 #define	_SC_PRIORITIZED_IO		34
249 #define	_SC_PRIORITY_SCHEDULING		35
250 #define	_SC_REALTIME_SIGNALS		36
251 #define	_SC_SEMAPHORES			37
252 #define	_SC_FSYNC			38
253 #define	_SC_SHARED_MEMORY_OBJECTS 	39
254 #define	_SC_SYNCHRONIZED_IO		40
255 #define	_SC_TIMERS			41
256 #define	_SC_AIO_LISTIO_MAX		42
257 #define	_SC_AIO_MAX			43
258 #define	_SC_AIO_PRIO_DELTA_MAX		44
259 #define	_SC_DELAYTIMER_MAX		45
260 #define	_SC_MQ_OPEN_MAX			46
261 #define	_SC_MAPPED_FILES		47	/* swap _SC_PAGESIZE vs. BSD */
262 #define	_SC_RTSIG_MAX			48
263 #define	_SC_SEM_NSEMS_MAX		49
264 #define	_SC_SEM_VALUE_MAX		50
265 #define	_SC_SIGQUEUE_MAX		51
266 #define	_SC_TIMER_MAX			52
267 #endif /* __DARWIN_C_LEVEL >= 199309L */
268 
269 #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
270 #define	_SC_NPROCESSORS_CONF		57
271 #define	_SC_NPROCESSORS_ONLN		58
272 #endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
273 
274 #if __DARWIN_C_LEVEL >= 200112L
275 #define	_SC_2_PBS			59
276 #define	_SC_2_PBS_ACCOUNTING		60
277 #define	_SC_2_PBS_CHECKPOINT		61
278 #define	_SC_2_PBS_LOCATE		62
279 #define	_SC_2_PBS_MESSAGE		63
280 #define	_SC_2_PBS_TRACK			64
281 #define	_SC_ADVISORY_INFO		65
282 #define	_SC_BARRIERS			66
283 #define	_SC_CLOCK_SELECTION		67
284 #define	_SC_CPUTIME			68
285 #define	_SC_FILE_LOCKING		69
286 #define	_SC_GETGR_R_SIZE_MAX		70
287 #define	_SC_GETPW_R_SIZE_MAX		71
288 #define	_SC_HOST_NAME_MAX		72
289 #define	_SC_LOGIN_NAME_MAX		73
290 #define	_SC_MONOTONIC_CLOCK		74
291 #define	_SC_MQ_PRIO_MAX			75
292 #define	_SC_READER_WRITER_LOCKS		76
293 #define	_SC_REGEXP			77
294 #define	_SC_SHELL			78
295 #define	_SC_SPAWN			79
296 #define	_SC_SPIN_LOCKS			80
297 #define	_SC_SPORADIC_SERVER		81
298 #define	_SC_THREAD_ATTR_STACKADDR	82
299 #define	_SC_THREAD_ATTR_STACKSIZE	83
300 #define	_SC_THREAD_CPUTIME		84
301 #define	_SC_THREAD_DESTRUCTOR_ITERATIONS 85
302 #define	_SC_THREAD_KEYS_MAX		86
303 #define	_SC_THREAD_PRIO_INHERIT		87
304 #define	_SC_THREAD_PRIO_PROTECT		88
305 #define	_SC_THREAD_PRIORITY_SCHEDULING	89
306 #define	_SC_THREAD_PROCESS_SHARED	90
307 #define	_SC_THREAD_SAFE_FUNCTIONS	91
308 #define	_SC_THREAD_SPORADIC_SERVER	92
309 #define	_SC_THREAD_STACK_MIN		93
310 #define	_SC_THREAD_THREADS_MAX		94
311 #define	_SC_TIMEOUTS			95
312 #define	_SC_THREADS			96
313 #define	_SC_TRACE			97
314 #define	_SC_TRACE_EVENT_FILTER		98
315 #define	_SC_TRACE_INHERIT		99
316 #define	_SC_TRACE_LOG			100
317 #define	_SC_TTY_NAME_MAX		101
318 #define	_SC_TYPED_MEMORY_OBJECTS	102
319 #define	_SC_V6_ILP32_OFF32		103
320 #define	_SC_V6_ILP32_OFFBIG		104
321 #define	_SC_V6_LP64_OFF64		105
322 #define	_SC_V6_LPBIG_OFFBIG		106
323 #define	_SC_IPV6			118
324 #define	_SC_RAW_SOCKETS			119
325 #define	_SC_SYMLOOP_MAX			120
326 #endif /* __DARWIN_C_LEVEL >= 200112L */
327 
328 #if __DARWIN_C_LEVEL >= 199506L /* Really XSI */
329 #define	_SC_ATEXIT_MAX			107
330 #define	_SC_IOV_MAX			56
331 #define	_SC_PAGE_SIZE			_SC_PAGESIZE
332 #define	_SC_XOPEN_CRYPT			108
333 #define	_SC_XOPEN_ENH_I18N		109
334 #define	_SC_XOPEN_LEGACY		110      /* Issue 6 */
335 #define	_SC_XOPEN_REALTIME		111      /* Issue 6 */
336 #define	_SC_XOPEN_REALTIME_THREADS	112  /* Issue 6 */
337 #define	_SC_XOPEN_SHM			113
338 #define	_SC_XOPEN_STREAMS		114      /* Issue 6 */
339 #define	_SC_XOPEN_UNIX			115
340 #define	_SC_XOPEN_VERSION		116
341 #define	_SC_XOPEN_XCU_VERSION		121
342 #endif /* XSI */
343 
344 #if (__DARWIN_C_LEVEL >= 199506L && __DARWIN_C_LEVEL < 200809L) || __DARWIN_C_LEVEL >= __DARWIN_C_FULL
345 /* Removed in Issue 7 */
346 #define	_SC_XBS5_ILP32_OFF32		122
347 #define	_SC_XBS5_ILP32_OFFBIG		123
348 #define	_SC_XBS5_LP64_OFF64		124
349 #define	_SC_XBS5_LPBIG_OFFBIG		125
350 #endif /* __DARWIN_C_LEVEL <= 200809L */
351 
352 #if __DARWIN_C_LEVEL >= 200112L
353 #define	_SC_SS_REPL_MAX			126
354 #define	_SC_TRACE_EVENT_NAME_MAX	127
355 #define	_SC_TRACE_NAME_MAX		128
356 #define	_SC_TRACE_SYS_MAX		129
357 #define	_SC_TRACE_USER_EVENT_MAX	130
358 #endif
359 
360 #if __DARWIN_C_LEVEL < 200112L || __DARWIN_C_LEVEL >= __DARWIN_C_FULL
361 /* Removed in Issue 6 */
362 #define	_SC_PASS_MAX			131
363 #endif
364 
365 /* 132-199 available for future use */
366 #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
367 #define	_SC_PHYS_PAGES			200
368 #endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
369 
370 #if __DARWIN_C_LEVEL >= 199209L
371 #ifndef _CS_PATH /* Defined in <sys/unistd.h> */
372 #define	_CS_PATH				1
373 #endif
374 #endif
375 
376 #if __DARWIN_C_LEVEL >= 200112
377 #define	_CS_POSIX_V6_ILP32_OFF32_CFLAGS		2
378 #define	_CS_POSIX_V6_ILP32_OFF32_LDFLAGS	3
379 #define	_CS_POSIX_V6_ILP32_OFF32_LIBS		4
380 #define	_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS	5
381 #define	_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS	6
382 #define	_CS_POSIX_V6_ILP32_OFFBIG_LIBS		7
383 #define	_CS_POSIX_V6_LP64_OFF64_CFLAGS		8
384 #define	_CS_POSIX_V6_LP64_OFF64_LDFLAGS		9
385 #define	_CS_POSIX_V6_LP64_OFF64_LIBS		10
386 #define	_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS	11
387 #define	_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS	12
388 #define	_CS_POSIX_V6_LPBIG_OFFBIG_LIBS		13
389 #define	_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS	14
390 #endif
391 
392 #if (__DARWIN_C_LEVEL >= 199506L && __DARWIN_C_LEVEL < 200809L) || __DARWIN_C_LEVEL >= __DARWIN_C_FULL
393 /* Removed in Issue 7 */
394 #define	_CS_XBS5_ILP32_OFF32_CFLAGS		20
395 #define	_CS_XBS5_ILP32_OFF32_LDFLAGS		21
396 #define	_CS_XBS5_ILP32_OFF32_LIBS		22
397 #define	_CS_XBS5_ILP32_OFF32_LINTFLAGS		23
398 #define	_CS_XBS5_ILP32_OFFBIG_CFLAGS		24
399 #define	_CS_XBS5_ILP32_OFFBIG_LDFLAGS		25
400 #define	_CS_XBS5_ILP32_OFFBIG_LIBS		26
401 #define	_CS_XBS5_ILP32_OFFBIG_LINTFLAGS		27
402 #define	_CS_XBS5_LP64_OFF64_CFLAGS		28
403 #define	_CS_XBS5_LP64_OFF64_LDFLAGS		29
404 #define	_CS_XBS5_LP64_OFF64_LIBS		30
405 #define	_CS_XBS5_LP64_OFF64_LINTFLAGS		31
406 #define	_CS_XBS5_LPBIG_OFFBIG_CFLAGS		32
407 #define	_CS_XBS5_LPBIG_OFFBIG_LDFLAGS		33
408 #define	_CS_XBS5_LPBIG_OFFBIG_LIBS		34
409 #define	_CS_XBS5_LPBIG_OFFBIG_LINTFLAGS		35
410 #endif
411 
412 #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
413 #define	_CS_DARWIN_USER_DIR			65536
414 #define	_CS_DARWIN_USER_TEMP_DIR		65537
415 #define	_CS_DARWIN_USER_CACHE_DIR		65538
416 #endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
417 
418 
419 #ifdef _DARWIN_UNLIMITED_GETGROUPS
420 #if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_3_2
421 #error "_DARWIN_UNLIMITED_GETGROUPS specified, but -miphoneos-version-min version does not support it."
422 #elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_6
423 #error "_DARWIN_UNLIMITED_GETGROUPS specified, but -mmacosx-version-min version does not support it."
424 #endif
425 #endif
426 
427 /* POSIX.1-1990 */
428 
429 __BEGIN_DECLS
430 void	 _exit(int) __dead2;
431 int	 access(const char *, int);
432 unsigned int
433 	 alarm(unsigned int);
434 int	 chdir(const char *);
435 int	 chown(const char *, uid_t, gid_t);
436 
437 int	 close(int) __DARWIN_ALIAS_C(close);
438 
439 int	 dup(int);
440 int	 dup2(int, int);
441 int	 execl(const char * __path, const char * __arg0, ...) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
442 int	 execle(const char * __path, const char * __arg0, ...) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
443 int	 execlp(const char * __file, const char * __arg0, ...) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
444 int	 execv(const char * __path, char * const * __argv) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
445 int	 execve(const char * __file, char * const * __argv, char * const * __envp) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
446 int	 execvp(const char * __file, char * const * __argv) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
447 pid_t	 fork(void) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
448 long	 fpathconf(int, int);
449 char	*getcwd(char *, size_t);
450 gid_t	 getegid(void);
451 uid_t	 geteuid(void);
452 gid_t	 getgid(void);
453 #if defined(_DARWIN_UNLIMITED_GETGROUPS) || defined(_DARWIN_C_SOURCE)
454 int	 getgroups(int, gid_t []) __DARWIN_ALIAS_STARTING(__MAC_10_6, __IPHONE_3_2, __DARWIN_EXTSN(getgroups));
455 #else /* !_DARWIN_UNLIMITED_GETGROUPS && !_DARWIN_C_SOURCE */
456 int	 getgroups(int, gid_t []);
457 #endif /* _DARWIN_UNLIMITED_GETGROUPS || _DARWIN_C_SOURCE */
458 char	*getlogin(void);
459 pid_t	 getpgrp(void);
460 pid_t	 getpid(void);
461 pid_t	 getppid(void);
462 uid_t	 getuid(void);
463 int	 isatty(int);
464 int	 link(const char *, const char *);
465 off_t	 lseek(int, off_t, int);
466 long	 pathconf(const char *, int);
467 
468 int	 pause(void) __DARWIN_ALIAS_C(pause);
469 
470 int	 pipe(int [2]);
471 
472 ssize_t	 read(int, void *, size_t) __DARWIN_ALIAS_C(read);
473 
474 int	 rmdir(const char *);
475 int	 setgid(gid_t);
476 int	 setpgid(pid_t, pid_t);
477 pid_t	 setsid(void);
478 int	 setuid(uid_t);
479 
480 unsigned int
481 	 sleep(unsigned int) __DARWIN_ALIAS_C(sleep);
482 
483 long	 sysconf(int);
484 pid_t	 tcgetpgrp(int);
485 int	 tcsetpgrp(int, pid_t);
486 char	*ttyname(int);
487 
488 #if __DARWIN_UNIX03
489 int	 ttyname_r(int, char *, size_t) __DARWIN_ALIAS(ttyname_r);
490 #else /* !__DARWIN_UNIX03 */
491 char	*ttyname_r(int, char *, size_t);
492 #endif /* __DARWIN_UNIX03 */
493 
494 int	 unlink(const char *);
495 
496 ssize_t	 write(int __fd, const void * __buf, size_t __nbyte) __DARWIN_ALIAS_C(write);
497 __END_DECLS
498 
499 
500 
501 /* Additional functionality provided by:
502  * POSIX.2-1992 C Language Binding Option
503  */
504 
505 #if __DARWIN_C_LEVEL >= 199209L
506 __BEGIN_DECLS
507 size_t	 confstr(int, char *, size_t) __DARWIN_ALIAS(confstr);
508 
509 int	 getopt(int, char * const [], const char *) __DARWIN_ALIAS(getopt);
510 
511 extern char *optarg;			/* getopt(3) external variables */
512 extern int optind, opterr, optopt;
513 __END_DECLS
514 #endif /* __DARWIN_C_LEVEL >= 199209L */
515 
516 
517 
518 /* Additional functionality provided by:
519  * POSIX.1c-1995,
520  * POSIX.1i-1995,
521  * and the omnibus ISO/IEC 9945-1: 1996
522  */
523 
524 #if __DARWIN_C_LEVEL >= 199506L
525 #include <_ctermid.h>
526                                /* These F_* are really XSI or Issue 6 */
527 #define F_ULOCK         0      /* unlock locked section */
528 #define	F_LOCK          1      /* lock a section for exclusive use */
529 #define	F_TLOCK         2      /* test and lock a section for exclusive use */
530 #define	F_TEST          3      /* test a section for locks by other procs */
531 
532  __BEGIN_DECLS
533 
534 /* Begin XSI */
535 /* Removed in Issue 6 */
536 #if !defined(_POSIX_C_SOURCE) || _POSIX_C_SOURCE < 200112L
537 #if !defined(_POSIX_C_SOURCE)
538 __deprecated __WATCHOS_PROHIBITED __TVOS_PROHIBITED
539 #endif
540 void	*brk(const void *);
541 int	 chroot(const char *) __POSIX_C_DEPRECATED(199506L);
542 #endif
543 
544 char	*crypt(const char *, const char *);
545 #if __DARWIN_UNIX03
546 void	 encrypt(char *, int) __DARWIN_ALIAS(encrypt);
547 #else /* !__DARWIN_UNIX03 */
548 int	 encrypt(char *, int);
549 #endif /* __DARWIN_UNIX03 */
550 int	 fchdir(int);
551 long	 gethostid(void);
552 pid_t	 getpgid(pid_t);
553 pid_t	 getsid(pid_t);
554 
555 /* Removed in Issue 6 */
556 #if !defined(_POSIX_C_SOURCE) || _POSIX_C_SOURCE < 200112L
557 int	 getdtablesize(void) __POSIX_C_DEPRECATED(199506L);
558 int	 getpagesize(void) __pure2 __POSIX_C_DEPRECATED(199506L);
559 char	*getpass(const char *) __POSIX_C_DEPRECATED(199506L);
560 #endif
561 
562 /* Removed in Issue 7 */
563 #if !defined(_POSIX_C_SOURCE) || _POSIX_C_SOURCE < 200809L
564 char	*getwd(char *) __POSIX_C_DEPRECATED(200112L); /* obsoleted by getcwd() */
565 #endif
566 
567 int	 lchown(const char *, uid_t, gid_t) __DARWIN_ALIAS(lchown);
568 
569 int	 lockf(int, int, off_t) __DARWIN_ALIAS_C(lockf);
570 
571 int	 nice(int) __DARWIN_ALIAS(nice);
572 
573 ssize_t	 pread(int __fd, void * __buf, size_t __nbyte, off_t __offset) __DARWIN_ALIAS_C(pread);
574 
575 ssize_t	 pwrite(int __fd, const void * __buf, size_t __nbyte, off_t __offset) __DARWIN_ALIAS_C(pwrite);
576 
577 /* Removed in Issue 6 */
578 #if !defined(_POSIX_C_SOURCE) || _POSIX_C_SOURCE < 200112L
579 /* Note that Issue 5 changed the argument as intprt_t,
580  * but we keep it as int for binary compatability. */
581 #if !defined(_POSIX_C_SOURCE)
582 __deprecated __WATCHOS_PROHIBITED __TVOS_PROHIBITED
583 #endif
584 void	*sbrk(int);
585 #endif
586 
587 #if __DARWIN_UNIX03
588 pid_t	 setpgrp(void) __DARWIN_ALIAS(setpgrp);
589 #else /* !__DARWIN_UNIX03 */
590 int	 setpgrp(pid_t pid, pid_t pgrp);	/* obsoleted by setpgid() */
591 #endif /* __DARWIN_UNIX03 */
592 
593 int	 setregid(gid_t, gid_t) __DARWIN_ALIAS(setregid);
594 
595 int	 setreuid(uid_t, uid_t) __DARWIN_ALIAS(setreuid);
596 
597 void     swab(const void * __restrict, void * __restrict, ssize_t);
598 void	 sync(void);
599 int	 truncate(const char *, off_t);
600 useconds_t	 ualarm(useconds_t, useconds_t);
601 int	 usleep(useconds_t) __DARWIN_ALIAS_C(usleep);
602 pid_t	 vfork(void) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
603 /* End XSI */
604 
605 int	 fsync(int) __DARWIN_ALIAS_C(fsync);
606 
607 int	 ftruncate(int, off_t);
608 int	 getlogin_r(char *, size_t);
609 __END_DECLS
610 #endif /* __DARWIN_C_LEVEL >= 199506L */
611 
612 
613 
614 /* Additional functionality provided by:
615  * POSIX.1-2001
616  * ISO C99
617  */
618 
619 #if __DARWIN_C_LEVEL >= 200112L
620 __BEGIN_DECLS
621 int	 fchown(int, uid_t, gid_t);
622 int	 gethostname(char *, size_t);
623 ssize_t  readlink(const char * __restrict, char * __restrict, size_t);
624 int	 setegid(gid_t);
625 int	 seteuid(uid_t);
626 int	 symlink(const char *, const char *);
627 __END_DECLS
628 #endif /* __DARWIN_C_LEVEL >= 200112L */
629 
630 
631 
632 /* Darwin extensions */
633 
634 #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
635 #include <sys/select.h>
636 
637 #include <sys/_types/_dev_t.h>
638 #include <sys/_types/_mode_t.h>
639 #include <sys/_types/_uuid_t.h>
640 
641 __BEGIN_DECLS
642 void	 _Exit(int) __dead2;
643 int	 accessx_np(const struct accessx_descriptor *, size_t, int *, uid_t);
644 int	 acct(const char *);
645 int	 add_profil(char *, size_t, unsigned long, unsigned int) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
646 void	 endusershell(void);
647 int	 execvP(const char * __file, const char * __searchpath, char * const * __argv)  __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
648 char	*fflagstostr(unsigned long);
649 int	 getdomainname(char *, int);
650 int	 getgrouplist(const char *, int, int *, int *);
651 #if defined(__has_include)
652 #if __has_include(<gethostuuid_private.h>)
653 #include <gethostuuid_private.h>
654 #else
655 #include <gethostuuid.h>
656 #endif
657 #else
658 #include <gethostuuid.h>
659 #endif
660 mode_t	 getmode(const void *, mode_t);
661 int	 getpeereid(int, uid_t *, gid_t *);
662 int	 getsgroups_np(int *, uuid_t);
663 char	*getusershell(void);
664 int	 getwgroups_np(int *, uuid_t);
665 int	 initgroups(const char *, int);
666 int	 issetugid(void);
667 char	*mkdtemp(char *);
668 int	 mknod(const char *, mode_t, dev_t);
669 int	 mkpath_np(const char *path, mode_t omode) __OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_5_0); /* returns errno */
670 int	 mkpathat_np(int dfd, const char *path, mode_t omode) /* returns errno */
671 		__OSX_AVAILABLE(10.12) __IOS_AVAILABLE(10.0)
672 		__TVOS_AVAILABLE(10.0) __WATCHOS_AVAILABLE(3.0);
673 int	 mkstemp(char *);
674 int	 mkstemps(char *, int);
675 char	*mktemp(char *);
676 int	 mkostemp(char *path, int oflags)
677 		__OSX_AVAILABLE(10.12) __IOS_AVAILABLE(10.0)
678 		__TVOS_AVAILABLE(10.0) __WATCHOS_AVAILABLE(3.0);
679 int	 mkostemps(char *path, int slen, int oflags)
680 		__OSX_AVAILABLE(10.12) __IOS_AVAILABLE(10.0)
681 		__TVOS_AVAILABLE(10.0) __WATCHOS_AVAILABLE(3.0);
682 /* Non-portable mkstemp that uses open_dprotected_np */
683 int	 mkstemp_dprotected_np(char *path, int dpclass, int dpflags)
684 		__OSX_UNAVAILABLE __IOS_AVAILABLE(10.0)
685 		__TVOS_AVAILABLE(10.0) __WATCHOS_AVAILABLE(3.0);
686 char   *mkdtempat_np(int dfd, char *path)
687 		__OSX_AVAILABLE(10.13) __IOS_AVAILABLE(11.0)
688 		__TVOS_AVAILABLE(11.0) __WATCHOS_AVAILABLE(4.0);
689 int     mkstempsat_np(int dfd, char *path, int slen)
690 		__OSX_AVAILABLE(10.13) __IOS_AVAILABLE(11.0)
691 		__TVOS_AVAILABLE(11.0) __WATCHOS_AVAILABLE(4.0);
692 int     mkostempsat_np(int dfd, char *path, int slen, int oflags)
693 		__OSX_AVAILABLE(10.13) __IOS_AVAILABLE(11.0)
694 		__TVOS_AVAILABLE(11.0) __WATCHOS_AVAILABLE(4.0);
695 int	 nfssvc(int, void *);
696 int	 profil(char *, size_t, unsigned long, unsigned int);
697 
698 __deprecated_msg("Use of per-thread security contexts is error-prone and discouraged.")
699 int	 pthread_setugid_np(uid_t, gid_t);
700 int	 pthread_getugid_np( uid_t *, gid_t *);
701 
702 int	 reboot(int);
703 int	 revoke(const char *);
704 
705 __deprecated int	 rcmd(char **, int, const char *, const char *, const char *, int *);
706 __deprecated int	 rcmd_af(char **, int, const char *, const char *, const char *, int *,
707 		int);
708 __deprecated int	 rresvport(int *);
709 __deprecated int	 rresvport_af(int *, int);
710 __deprecated int	 iruserok(unsigned long, int, const char *, const char *);
711 __deprecated int	 iruserok_sa(const void *, int, int, const char *, const char *);
712 __deprecated int	 ruserok(const char *, int, const char *, const char *);
713 
714 int	 setdomainname(const char *, int);
715 int	 setgroups(int, const gid_t *);
716 void	 sethostid(long);
717 int	 sethostname(const char *, int);
718 #if __DARWIN_UNIX03
719 void	 setkey(const char *) __DARWIN_ALIAS(setkey);
720 #else /* !__DARWIN_UNIX03 */
721 int	 setkey(const char *);
722 #endif /* __DARWIN_UNIX03 */
723 int	 setlogin(const char *);
724 void	*setmode(const char *) __DARWIN_ALIAS_STARTING(__MAC_10_6, __IPHONE_2_0, __DARWIN_ALIAS(setmode));
725 int	 setrgid(gid_t);
726 int	 setruid(uid_t);
727 int	 setsgroups_np(int, const uuid_t);
728 void	 setusershell(void);
729 int	 setwgroups_np(int, const uuid_t);
730 int	 strtofflags(char **, unsigned long *, unsigned long *);
731 int	 swapon(const char *);
732 int	 ttyslot(void);
733 int	 undelete(const char *);
734 int	 unwhiteout(const char *);
735 void	*valloc(size_t);
736 
737 __WATCHOS_PROHIBITED __TVOS_PROHIBITED
738 __OS_AVAILABILITY_MSG(ios,deprecated=10.0,"syscall(2) is unsupported; "
739     "please switch to a supported interface. For SYS_kdebug_trace use kdebug_signpost().")
740 __OS_AVAILABILITY_MSG(macosx,deprecated=10.12,"syscall(2) is unsupported; "
741     "please switch to a supported interface. For SYS_kdebug_trace use kdebug_signpost().")
742 int	 syscall(int, ...);
743 
744 extern char *suboptarg;			/* getsubopt(3) external variable */
745 int	 getsubopt(char **, char * const *, char **);
746 
747 /*  HFS & HFS Plus semantics system calls go here */
748 #ifdef __LP64__
749 int    fgetattrlist(int,void*,void*,size_t,unsigned int) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_0);
750 int    fsetattrlist(int,void*,void*,size_t,unsigned int) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_0);
751 int    getattrlist(const char*,void*,void*,size_t,unsigned int) __DARWIN_ALIAS(getattrlist);
752 int    setattrlist(const char*,void*,void*,size_t,unsigned int) __DARWIN_ALIAS(setattrlist);
753 int exchangedata(const char*,const char*,unsigned int) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
754 int    getdirentriesattr(int,void*,void*,size_t,unsigned int*,unsigned int*,unsigned int*,unsigned int) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
755 
756 #else /* __LP64__ */
757 int	fgetattrlist(int,void*,void*,size_t,unsigned long) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_0);
758 int	fsetattrlist(int,void*,void*,size_t,unsigned long) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_0);
759 int	getattrlist(const char*,void*,void*,size_t,unsigned long) __DARWIN_ALIAS(getattrlist);
760 int	setattrlist(const char*,void*,void*,size_t,unsigned long) __DARWIN_ALIAS(setattrlist);
761 int exchangedata(const char*,const char*,unsigned long)
762 		__OSX_DEPRECATED(10.0, 10.13, "use renamex_np with the RENAME_SWAP flag")
763 		__IOS_DEPRECATED(2.0, 11.0, "use renamex_np with the RENAME_SWAP flag")
764 		__WATCHOS_PROHIBITED __TVOS_PROHIBITED;
765 int	getdirentriesattr(int,void*,void*,size_t,unsigned long*,unsigned long*,unsigned long*,unsigned long) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
766 
767 #endif /* __LP64__ */
768 
769 struct fssearchblock;
770 struct searchstate;
771 
772 int	 searchfs(const char *, struct fssearchblock *, unsigned long *, unsigned int, unsigned int, struct searchstate *) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
773 int	 fsctl(const char *,unsigned long,void*,unsigned int);
774 int	 ffsctl(int,unsigned long,void*,unsigned int) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_0);
775 
776 #define	SYNC_VOLUME_FULLSYNC	0x01	/* Flush data and metadata to platter, not just to disk cache */
777 #define SYNC_VOLUME_WAIT	0x02	/* Wait for sync to complete */
778 
779 int	fsync_volume_np(int, int) __OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_6_0);
780 int	sync_volume_np(const char *, int) __OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_6_0);
781 
782 extern int optreset;
783 
784 __END_DECLS
785 #endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
786 
787 #endif /* _UNISTD_H_ */