unistd.h revision 4321:a8930ec16e52
1/*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21/*
22 *	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T
23 *	  All Rights Reserved
24 *
25 */
26
27/*
28 * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
29 * Use is subject to license terms.
30 */
31
32/*
33 * WARNING: This is an implementation-specific header,
34 * its contents are not guaranteed. Applications
35 * should include <unistd.h> and not this header.
36 */
37
38#ifndef _SYS_UNISTD_H
39#define	_SYS_UNISTD_H
40
41#pragma ident	"%Z%%M%	%I%	%E% SMI"	/* From SVR4.0 1.3 */
42
43#include <sys/feature_tests.h>
44
45#ifdef	__cplusplus
46extern "C" {
47#endif
48
49/* command names for confstr */
50
51#define	_CS_PATH			65
52
53/*
54 * command names for large file configuration information
55 */
56/* large file compilation environment configuration */
57#define	_CS_LFS_CFLAGS			68
58#define	_CS_LFS_LDFLAGS			69
59#define	_CS_LFS_LIBS			70
60#define	_CS_LFS_LINTFLAGS		71
61/* transitional large file interface configuration */
62#define	_CS_LFS64_CFLAGS		72
63#define	_CS_LFS64_LDFLAGS		73
64#define	_CS_LFS64_LIBS			74
65#define	_CS_LFS64_LINTFLAGS		75
66
67/* UNIX 98 */
68#define	_CS_XBS5_ILP32_OFF32_CFLAGS	700
69#define	_CS_XBS5_ILP32_OFF32_LDFLAGS	701
70#define	_CS_XBS5_ILP32_OFF32_LIBS	702
71#define	_CS_XBS5_ILP32_OFF32_LINTFLAGS	703
72#define	_CS_XBS5_ILP32_OFFBIG_CFLAGS	705
73#define	_CS_XBS5_ILP32_OFFBIG_LDFLAGS	706
74#define	_CS_XBS5_ILP32_OFFBIG_LIBS	707
75#define	_CS_XBS5_ILP32_OFFBIG_LINTFLAGS	708
76#define	_CS_XBS5_LP64_OFF64_CFLAGS	709
77#define	_CS_XBS5_LP64_OFF64_LDFLAGS	710
78#define	_CS_XBS5_LP64_OFF64_LIBS	711
79#define	_CS_XBS5_LP64_OFF64_LINTFLAGS	712
80#define	_CS_XBS5_LPBIG_OFFBIG_CFLAGS	713
81#define	_CS_XBS5_LPBIG_OFFBIG_LDFLAGS	714
82#define	_CS_XBS5_LPBIG_OFFBIG_LIBS	715
83#define	_CS_XBS5_LPBIG_OFFBIG_LINTFLAGS	716
84
85/* UNIX 03 */
86#define	_CS_POSIX_V6_ILP32_OFF32_CFLAGS		800
87#define	_CS_POSIX_V6_ILP32_OFF32_LDFLAGS	801
88#define	_CS_POSIX_V6_ILP32_OFF32_LIBS		802
89#define	_CS_POSIX_V6_ILP32_OFF32_LINTFLAGS	803
90#define	_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS	804
91#define	_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS	805
92#define	_CS_POSIX_V6_ILP32_OFFBIG_LIBS		806
93#define	_CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS	807
94#define	_CS_POSIX_V6_LP64_OFF64_CFLAGS		808
95#define	_CS_POSIX_V6_LP64_OFF64_LDFLAGS		809
96#define	_CS_POSIX_V6_LP64_OFF64_LIBS		810
97#define	_CS_POSIX_V6_LP64_OFF64_LINTFLAGS	811
98#define	_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS	812
99#define	_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS	813
100#define	_CS_POSIX_V6_LPBIG_OFFBIG_LIBS		814
101#define	_CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS	815
102#define	_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS	816
103
104/* command names for POSIX sysconf */
105
106/* POSIX.1 names */
107#define	_SC_ARG_MAX			1
108#define	_SC_CHILD_MAX			2
109#define	_SC_CLK_TCK			3
110#define	_SC_NGROUPS_MAX 		4
111#define	_SC_OPEN_MAX			5
112#define	_SC_JOB_CONTROL 		6
113#define	_SC_SAVED_IDS			7
114#define	_SC_VERSION			8
115/* SVR4 names */
116#define	_SC_PASS_MAX			9
117#define	_SC_LOGNAME_MAX			10
118#define	_SC_PAGESIZE			11
119#define	_SC_XOPEN_VERSION		12
120/* 13 reserved for SVr4-ES/MP _SC_NACLS_MAX */
121#define	_SC_NPROCESSORS_CONF		14
122#define	_SC_NPROCESSORS_ONLN		15
123#define	_SC_STREAM_MAX			16
124#define	_SC_TZNAME_MAX			17
125/* POSIX.4 names */
126#define	_SC_AIO_LISTIO_MAX		18
127#define	_SC_AIO_MAX			19
128#define	_SC_AIO_PRIO_DELTA_MAX		20
129#define	_SC_ASYNCHRONOUS_IO		21
130#define	_SC_DELAYTIMER_MAX		22
131#define	_SC_FSYNC			23
132#define	_SC_MAPPED_FILES		24
133#define	_SC_MEMLOCK			25
134#define	_SC_MEMLOCK_RANGE		26
135#define	_SC_MEMORY_PROTECTION		27
136#define	_SC_MESSAGE_PASSING		28
137#define	_SC_MQ_OPEN_MAX			29
138#define	_SC_MQ_PRIO_MAX			30
139#define	_SC_PRIORITIZED_IO		31
140#define	_SC_PRIORITY_SCHEDULING		32
141#define	_SC_REALTIME_SIGNALS		33
142#define	_SC_RTSIG_MAX			34
143#define	_SC_SEMAPHORES			35
144#define	_SC_SEM_NSEMS_MAX		36
145#define	_SC_SEM_VALUE_MAX		37
146#define	_SC_SHARED_MEMORY_OBJECTS	38
147#define	_SC_SIGQUEUE_MAX		39
148#define	_SC_SIGRT_MIN			40
149#define	_SC_SIGRT_MAX			41
150#define	_SC_SYNCHRONIZED_IO		42
151#define	_SC_TIMERS			43
152#define	_SC_TIMER_MAX			44
153/* XPG4 names */
154#define	_SC_2_C_BIND			45
155#define	_SC_2_C_DEV    			46
156#define	_SC_2_C_VERSION			47
157#define	_SC_2_FORT_DEV 			48
158#define	_SC_2_FORT_RUN 			49
159#define	_SC_2_LOCALEDEF			50
160#define	_SC_2_SW_DEV   			51
161#define	_SC_2_UPE			52
162#define	_SC_2_VERSION			53
163#define	_SC_BC_BASE_MAX			54
164#define	_SC_BC_DIM_MAX 			55
165#define	_SC_BC_SCALE_MAX		56
166#define	_SC_BC_STRING_MAX		57
167#define	_SC_COLL_WEIGHTS_MAX		58
168#define	_SC_EXPR_NEST_MAX		59
169#define	_SC_LINE_MAX 			60
170#define	_SC_RE_DUP_MAX			61
171#define	_SC_XOPEN_CRYPT			62
172#define	_SC_XOPEN_ENH_I18N		63
173#define	_SC_XOPEN_SHM			64
174
175/* additional XSH4/XCU4 command names for sysconf */
176#define	_SC_2_CHAR_TERM			66
177#define	_SC_XOPEN_XCU_VERSION		67
178
179/* additional XPG4v2 (UNIX 95) command names */
180#define	_SC_ATEXIT_MAX			76
181#define	_SC_IOV_MAX			77
182#define	_SC_XOPEN_UNIX			78
183#define	_SC_PAGE_SIZE			_SC_PAGESIZE
184
185/* defined for XTI (XNS Issue 5) */
186#ifndef _SC_T_IOV_MAX
187#define	_SC_T_IOV_MAX			79 /* Must be same in <xti.h> */
188#endif					   /* T_IOV_MAX must be <= IOV_MAX */
189
190#define	_SC_PHYS_PAGES			500
191#define	_SC_AVPHYS_PAGES		501
192
193/*
194 * Hardware specific items
195 * Note that not all items are supported on all architectures
196 */
197#define	_SC_COHER_BLKSZ		503	/* Coherence block size */
198#define	_SC_SPLIT_CACHE		504	/* != 0 iff a split cache */
199#define	_SC_ICACHE_SZ		505	/* Instruction cache size (bytes) */
200#define	_SC_DCACHE_SZ		506	/* Data cache size (bytes) */
201#define	_SC_ICACHE_LINESZ	507	/* Instruction cache line size */
202#define	_SC_DCACHE_LINESZ	508	/* Data cache line size */
203#define	_SC_ICACHE_BLKSZ	509	/* Block size invalidated for icache */
204#define	_SC_DCACHE_BLKSZ	510	/* Block size for dcache */
205#define	_SC_DCACHE_TBLKSZ	511	/* Block size for dcache prefetch */
206#define	_SC_ICACHE_ASSOC	512	/* Icache associativity 1, 2, 3 etc */
207#define	_SC_DCACHE_ASSOC	513	/* Dcache associativity 1, 2, 3 etc */
208
209#define	_SC_MAXPID		514	/* maximum pid value */
210#define	_SC_STACK_PROT		515	/* default stack protection */
211#define	_SC_NPROCESSORS_MAX	516	/* maximum # of processors */
212#define	_SC_CPUID_MAX		517	/* maximum CPU id */
213#define	_SC_EPHID_MAX		518	/* maximum ephemeral id */
214
215/*
216 * POSIX.1c (pthreads) names. These values are defined above
217 * the sub-500 range. See psarc case 1995/257.
218 */
219#define	_SC_THREAD_DESTRUCTOR_ITERATIONS 568
220#define	_SC_GETGR_R_SIZE_MAX		569
221#define	_SC_GETPW_R_SIZE_MAX		570
222#define	_SC_LOGIN_NAME_MAX		571
223#define	_SC_THREAD_KEYS_MAX		572
224#define	_SC_THREAD_STACK_MIN		573
225#define	_SC_THREAD_THREADS_MAX		574
226#define	_SC_TTY_NAME_MAX		575
227#define	_SC_THREADS			576
228#define	_SC_THREAD_ATTR_STACKADDR	577
229#define	_SC_THREAD_ATTR_STACKSIZE	578
230#define	_SC_THREAD_PRIORITY_SCHEDULING	579
231#define	_SC_THREAD_PRIO_INHERIT		580
232#define	_SC_THREAD_PRIO_PROTECT		581
233#define	_SC_THREAD_PROCESS_SHARED	582
234#define	_SC_THREAD_SAFE_FUNCTIONS	583
235
236/* UNIX 98 */
237#define	_SC_XOPEN_LEGACY		717
238#define	_SC_XOPEN_REALTIME		718
239#define	_SC_XOPEN_REALTIME_THREADS	719
240#define	_SC_XBS5_ILP32_OFF32		720
241#define	_SC_XBS5_ILP32_OFFBIG		721
242#define	_SC_XBS5_LP64_OFF64		722
243#define	_SC_XBS5_LPBIG_OFFBIG		723
244
245/* UNIX 03 */
246#define	_SC_2_PBS			724
247#define	_SC_2_PBS_ACCOUNTING		725
248#define	_SC_2_PBS_CHECKPOINT		726
249#define	_SC_2_PBS_LOCATE		728
250#define	_SC_2_PBS_MESSAGE		729
251#define	_SC_2_PBS_TRACK			730
252#define	_SC_ADVISORY_INFO		731
253#define	_SC_BARRIERS			732
254#define	_SC_CLOCK_SELECTION		733
255#define	_SC_CPUTIME			734
256#define	_SC_HOST_NAME_MAX		735
257#define	_SC_MONOTONIC_CLOCK		736
258#define	_SC_READER_WRITER_LOCKS		737
259#define	_SC_REGEXP			738
260#define	_SC_SHELL			739
261#define	_SC_SPAWN			740
262#define	_SC_SPIN_LOCKS			741
263#define	_SC_SPORADIC_SERVER		742
264#define	_SC_SS_REPL_MAX			743
265#define	_SC_SYMLOOP_MAX			744
266#define	_SC_THREAD_CPUTIME		745
267#define	_SC_THREAD_SPORADIC_SERVER	746
268#define	_SC_TIMEOUTS			747
269#define	_SC_TRACE			748
270#define	_SC_TRACE_EVENT_FILTER		749
271#define	_SC_TRACE_EVENT_NAME_MAX	750
272#define	_SC_TRACE_INHERIT		751
273#define	_SC_TRACE_LOG			752
274#define	_SC_TRACE_NAME_MAX		753
275#define	_SC_TRACE_SYS_MAX		754
276#define	_SC_TRACE_USER_EVENT_MAX	755
277#define	_SC_TYPED_MEMORY_OBJECTS	756
278#define	_SC_V6_ILP32_OFF32		757
279#define	_SC_V6_ILP32_OFFBIG		758
280#define	_SC_V6_LP64_OFF64		759
281#define	_SC_V6_LPBIG_OFFBIG		760
282#define	_SC_XOPEN_STREAMS		761
283#define	_SC_IPV6			762
284#define	_SC_RAW_SOCKETS			763
285
286/* command names for POSIX pathconf */
287
288/* POSIX.1 names */
289#define	_PC_LINK_MAX		1
290#define	_PC_MAX_CANON		2
291#define	_PC_MAX_INPUT		3
292#define	_PC_NAME_MAX		4
293#define	_PC_PATH_MAX		5
294#define	_PC_PIPE_BUF		6
295#define	_PC_NO_TRUNC		7
296#define	_PC_VDISABLE		8
297#define	_PC_CHOWN_RESTRICTED	9
298/* POSIX.4 names */
299#define	_PC_ASYNC_IO		10
300#define	_PC_PRIO_IO		11
301#define	_PC_SYNC_IO		12
302/* UNIX 03 names */
303#define	_PC_ALLOC_SIZE_MIN	13
304#define	_PC_REC_INCR_XFER_SIZE	14
305#define	_PC_REC_MAX_XFER_SIZE	15
306#define	_PC_REC_MIN_XFER_SIZE	16
307#define	_PC_REC_XFER_ALIGN	17
308#define	_PC_SYMLINK_MAX		18
309#define	_PC_2_SYMLINKS		19
310#define	_PC_ACL_ENABLED		20
311#define	_PC_MIN_HOLE_SIZE	21
312/*
313 * Large File Summit names
314 *
315 * This value matches the MIPS ABI choice, but leaves a large gap in the
316 * value space.
317 */
318#define	_PC_FILESIZEBITS	67
319#define	_PC_LAST		67
320
321/*
322 * Extended attributes
323 */
324#define	_PC_XATTR_ENABLED	100
325#define	_PC_XATTR_EXISTS	101
326
327/*
328 * The value of 0 is returned when
329 * ACL's are not supported
330 */
331#define	_ACL_ACLENT_ENABLED	0x1
332#define	_ACL_ACE_ENABLED	0x2
333
334#ifndef	_POSIX_VERSION
335#ifdef	_XPG6
336#define	_POSIX_VERSION		200112L	/* Supports IEEE Std 1003.1-2001 */
337#else
338#define	_POSIX_VERSION		199506L /* Supports POSIX-1c DIS */
339#endif
340#endif /* _POSIX_VERSION */
341
342#ifndef	_POSIX2_VERSION
343#ifdef	_XPG6
344#define	_POSIX2_VERSION		200112L	/* Supports IEEE Std 1003.1-2001 */
345#else
346#define	_POSIX2_VERSION		199209L /* Supports ISO POSIX-2 DIS */
347#endif
348#endif /* _POSIX2_VERSION */
349
350/*
351 * Marked LEGACY in SUSv2 and removed in SUSv3. Though SUSv3 applications
352 * should not rely on this value, it has been aligned with the current
353 * standard to avoid confusion if used.
354 */
355#ifndef	_POSIX2_C_VERSION
356#ifdef	_XPG6
357#define	_POSIX2_C_VERSION	200112L	/* Supports IEEE Std 1003.1-2001 */
358#else
359#define	_POSIX2_C_VERSION	199209L	/* Supports ISO POSIX-2 DIS */
360#endif
361#endif /* _POSIX2_C_VERSION */
362
363#define	_XOPEN_XPG3			/* Supports XPG, Issue 3 */
364#define	_XOPEN_XPG4			/* Supports XPG, Issue 4 */
365#define	_XOPEN_UNIX			/* Supports XPG, Issue 4, Version 2 */
366
367#ifndef	_XOPEN_XCU_VERSION
368#define	_XOPEN_XCU_VERSION	4	/* Supports XCU4 */
369#endif
370
371#define	_XOPEN_REALTIME		1	/* Supports Realtime */
372#define	_XOPEN_ENH_I18N		1	/* Supports Enhanced International */
373#define	_XOPEN_SHM		1	/* Supports Shared Memory Feature */
374#define	_POSIX2_C_BIND	  200112L	/* Supports C Language Bindings */
375#define	_POSIX2_C_DEV		1	/* Supports C language dev utility */
376#define	_POSIX2_CHAR_TERM	1	/* Supports at least 1 terminal type */
377#define	_POSIX2_FORT_RUN  200112L	/* Supports FORTRAN runtime */
378#define	_POSIX2_LOCALEDEF	1	/* Supports creation of locales */
379#define	_POSIX2_SW_DEV		1 	/* Supports S/W Devlopement Utility */
380#define	_POSIX2_UPE		1 	/* Supports User Portability Utility */
381
382/* UNIX 03 names */
383#define	_POSIX_REGEXP		1	/* Supports POSIX Regular Expressions */
384#define	_POSIX_SHELL		1	/* Supports POSIX shell */
385#define	_XOPEN_STREAMS		1	/* Supports XSI Streams Option Group */
386
387#ifdef	__cplusplus
388}
389#endif
390
391#endif	/* _SYS_UNISTD_H */
392