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