/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License (the "License").
 * You may not use this file except in compliance with the License.
 *
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
 * or http://www.opensolaris.org/os/licensing.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
 * If applicable, add the following below this CDDL HEADER, with the
 * fields enclosed by brackets "[]" replaced with your own identifying
 * information: Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 */

/*
 *	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T
 *	  All Rights Reserved
 *
 */

/*
 * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 * Use is subject to license terms.
 */

/*
 * WARNING: This is an implementation-specific header,
 * its contents are not guaranteed. Applications
 * should include <unistd.h> and not this header.
 */

#ifndef _SYS_UNISTD_H
#define	_SYS_UNISTD_H

#include <sys/feature_tests.h>

#ifdef	__cplusplus
extern "C" {
#endif

/* command names for confstr */

#define	_CS_PATH			65

/*
 * command names for large file configuration information
 */
/* large file compilation environment configuration */
#define	_CS_LFS_CFLAGS			68
#define	_CS_LFS_LDFLAGS			69
#define	_CS_LFS_LIBS			70
#define	_CS_LFS_LINTFLAGS		71
/* transitional large file interface configuration */
#define	_CS_LFS64_CFLAGS		72
#define	_CS_LFS64_LDFLAGS		73
#define	_CS_LFS64_LIBS			74
#define	_CS_LFS64_LINTFLAGS		75

/* UNIX 98 */
#define	_CS_XBS5_ILP32_OFF32_CFLAGS	700
#define	_CS_XBS5_ILP32_OFF32_LDFLAGS	701
#define	_CS_XBS5_ILP32_OFF32_LIBS	702
#define	_CS_XBS5_ILP32_OFF32_LINTFLAGS	703
#define	_CS_XBS5_ILP32_OFFBIG_CFLAGS	705
#define	_CS_XBS5_ILP32_OFFBIG_LDFLAGS	706
#define	_CS_XBS5_ILP32_OFFBIG_LIBS	707
#define	_CS_XBS5_ILP32_OFFBIG_LINTFLAGS	708
#define	_CS_XBS5_LP64_OFF64_CFLAGS	709
#define	_CS_XBS5_LP64_OFF64_LDFLAGS	710
#define	_CS_XBS5_LP64_OFF64_LIBS	711
#define	_CS_XBS5_LP64_OFF64_LINTFLAGS	712
#define	_CS_XBS5_LPBIG_OFFBIG_CFLAGS	713
#define	_CS_XBS5_LPBIG_OFFBIG_LDFLAGS	714
#define	_CS_XBS5_LPBIG_OFFBIG_LIBS	715
#define	_CS_XBS5_LPBIG_OFFBIG_LINTFLAGS	716

/* UNIX 03 */
#define	_CS_POSIX_V6_ILP32_OFF32_CFLAGS		800
#define	_CS_POSIX_V6_ILP32_OFF32_LDFLAGS	801
#define	_CS_POSIX_V6_ILP32_OFF32_LIBS		802
#define	_CS_POSIX_V6_ILP32_OFF32_LINTFLAGS	803
#define	_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS	804
#define	_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS	805
#define	_CS_POSIX_V6_ILP32_OFFBIG_LIBS		806
#define	_CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS	807
#define	_CS_POSIX_V6_LP64_OFF64_CFLAGS		808
#define	_CS_POSIX_V6_LP64_OFF64_LDFLAGS		809
#define	_CS_POSIX_V6_LP64_OFF64_LIBS		810
#define	_CS_POSIX_V6_LP64_OFF64_LINTFLAGS	811
#define	_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS	812
#define	_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS	813
#define	_CS_POSIX_V6_LPBIG_OFFBIG_LIBS		814
#define	_CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS	815
#define	_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS	816

/* command names for POSIX sysconf */

/* POSIX.1 names */
#define	_SC_ARG_MAX			1
#define	_SC_CHILD_MAX			2
#define	_SC_CLK_TCK			3
#define	_SC_NGROUPS_MAX			4
#define	_SC_OPEN_MAX			5
#define	_SC_JOB_CONTROL			6
#define	_SC_SAVED_IDS			7
#define	_SC_VERSION			8
/* SVR4 names */
#define	_SC_PASS_MAX			9
#define	_SC_LOGNAME_MAX			10
#define	_SC_PAGESIZE			11
#define	_SC_XOPEN_VERSION		12
/* 13 reserved for SVr4-ES/MP _SC_NACLS_MAX */
#define	_SC_NPROCESSORS_CONF		14
#define	_SC_NPROCESSORS_ONLN		15
#define	_SC_STREAM_MAX			16
#define	_SC_TZNAME_MAX			17
/* POSIX.4 names */
#define	_SC_AIO_LISTIO_MAX		18
#define	_SC_AIO_MAX			19
#define	_SC_AIO_PRIO_DELTA_MAX		20
#define	_SC_ASYNCHRONOUS_IO		21
#define	_SC_DELAYTIMER_MAX		22
#define	_SC_FSYNC			23
#define	_SC_MAPPED_FILES		24
#define	_SC_MEMLOCK			25
#define	_SC_MEMLOCK_RANGE		26
#define	_SC_MEMORY_PROTECTION		27
#define	_SC_MESSAGE_PASSING		28
#define	_SC_MQ_OPEN_MAX			29
#define	_SC_MQ_PRIO_MAX			30
#define	_SC_PRIORITIZED_IO		31
#define	_SC_PRIORITY_SCHEDULING		32
#define	_SC_REALTIME_SIGNALS		33
#define	_SC_RTSIG_MAX			34
#define	_SC_SEMAPHORES			35
#define	_SC_SEM_NSEMS_MAX		36
#define	_SC_SEM_VALUE_MAX		37
#define	_SC_SHARED_MEMORY_OBJECTS	38
#define	_SC_SIGQUEUE_MAX		39
#define	_SC_SIGRT_MIN			40
#define	_SC_SIGRT_MAX			41
#define	_SC_SYNCHRONIZED_IO		42
#define	_SC_TIMERS			43
#define	_SC_TIMER_MAX			44
/* XPG4 names */
#define	_SC_2_C_BIND			45
#define	_SC_2_C_DEV			46
#define	_SC_2_C_VERSION			47
#define	_SC_2_FORT_DEV			48
#define	_SC_2_FORT_RUN			49
#define	_SC_2_LOCALEDEF			50
#define	_SC_2_SW_DEV			51
#define	_SC_2_UPE			52
#define	_SC_2_VERSION			53
#define	_SC_BC_BASE_MAX			54
#define	_SC_BC_DIM_MAX			55
#define	_SC_BC_SCALE_MAX		56
#define	_SC_BC_STRING_MAX		57
#define	_SC_COLL_WEIGHTS_MAX		58
#define	_SC_EXPR_NEST_MAX		59
#define	_SC_LINE_MAX			60
#define	_SC_RE_DUP_MAX			61
#define	_SC_XOPEN_CRYPT			62
#define	_SC_XOPEN_ENH_I18N		63
#define	_SC_XOPEN_SHM			64

/* additional XSH4/XCU4 command names for sysconf */
#define	_SC_2_CHAR_TERM			66
#define	_SC_XOPEN_XCU_VERSION		67

/* additional XPG4v2 (UNIX 95) command names */
#define	_SC_ATEXIT_MAX			76
#define	_SC_IOV_MAX			77
#define	_SC_XOPEN_UNIX			78
#define	_SC_PAGE_SIZE			_SC_PAGESIZE

/* defined for XTI (XNS Issue 5) */
#ifndef _SC_T_IOV_MAX
#define	_SC_T_IOV_MAX			79 /* Must be same in <xti.h> */
#endif					   /* T_IOV_MAX must be <= IOV_MAX */

#define	_SC_PHYS_PAGES			500
#define	_SC_AVPHYS_PAGES		501

/*
 * Hardware specific items
 * Note that not all items are supported on all architectures
 */
#define	_SC_COHER_BLKSZ		503	/* Coherence block size */
#define	_SC_SPLIT_CACHE		504	/* != 0 iff a split cache */
#define	_SC_ICACHE_SZ		505	/* Instruction cache size (bytes) */
#define	_SC_DCACHE_SZ		506	/* Data cache size (bytes) */
#define	_SC_ICACHE_LINESZ	507	/* Instruction cache line size */
#define	_SC_DCACHE_LINESZ	508	/* Data cache line size */
#define	_SC_ICACHE_BLKSZ	509	/* Block size invalidated for icache */
#define	_SC_DCACHE_BLKSZ	510	/* Block size for dcache */
#define	_SC_DCACHE_TBLKSZ	511	/* Block size for dcache prefetch */
#define	_SC_ICACHE_ASSOC	512	/* Icache associativity 1, 2, 3 etc */
#define	_SC_DCACHE_ASSOC	513	/* Dcache associativity 1, 2, 3 etc */

#define	_SC_MAXPID		514	/* maximum pid value */
#define	_SC_STACK_PROT		515	/* default stack protection */
#define	_SC_NPROCESSORS_MAX	516	/* maximum # of processors */
#define	_SC_CPUID_MAX		517	/* maximum CPU id */
#define	_SC_EPHID_MAX		518	/* maximum ephemeral id */
#define	_SC_UADDR_MAX		519	/* maximum user address */

/*
 * POSIX.1c (pthreads) names. These values are defined above
 * the sub-500 range. See psarc case 1995/257.
 */
#define	_SC_THREAD_DESTRUCTOR_ITERATIONS 568
#define	_SC_GETGR_R_SIZE_MAX		569
#define	_SC_GETPW_R_SIZE_MAX		570
#define	_SC_LOGIN_NAME_MAX		571
#define	_SC_THREAD_KEYS_MAX		572
#define	_SC_THREAD_STACK_MIN		573
#define	_SC_THREAD_THREADS_MAX		574
#define	_SC_TTY_NAME_MAX		575
#define	_SC_THREADS			576
#define	_SC_THREAD_ATTR_STACKADDR	577
#define	_SC_THREAD_ATTR_STACKSIZE	578
#define	_SC_THREAD_PRIORITY_SCHEDULING	579
#define	_SC_THREAD_PRIO_INHERIT		580
#define	_SC_THREAD_PRIO_PROTECT		581
#define	_SC_THREAD_PROCESS_SHARED	582
#define	_SC_THREAD_SAFE_FUNCTIONS	583

/* UNIX 98 */
#define	_SC_XOPEN_LEGACY		717
#define	_SC_XOPEN_REALTIME		718
#define	_SC_XOPEN_REALTIME_THREADS	719
#define	_SC_XBS5_ILP32_OFF32		720
#define	_SC_XBS5_ILP32_OFFBIG		721
#define	_SC_XBS5_LP64_OFF64		722
#define	_SC_XBS5_LPBIG_OFFBIG		723

/* UNIX 03 */
#define	_SC_2_PBS			724
#define	_SC_2_PBS_ACCOUNTING		725
#define	_SC_2_PBS_CHECKPOINT		726
#define	_SC_2_PBS_LOCATE		728
#define	_SC_2_PBS_MESSAGE		729
#define	_SC_2_PBS_TRACK			730
#define	_SC_ADVISORY_INFO		731
#define	_SC_BARRIERS			732
#define	_SC_CLOCK_SELECTION		733
#define	_SC_CPUTIME			734
#define	_SC_HOST_NAME_MAX		735
#define	_SC_MONOTONIC_CLOCK		736
#define	_SC_READER_WRITER_LOCKS		737
#define	_SC_REGEXP			738
#define	_SC_SHELL			739
#define	_SC_SPAWN			740
#define	_SC_SPIN_LOCKS			741
#define	_SC_SPORADIC_SERVER		742
#define	_SC_SS_REPL_MAX			743
#define	_SC_SYMLOOP_MAX			744
#define	_SC_THREAD_CPUTIME		745
#define	_SC_THREAD_SPORADIC_SERVER	746
#define	_SC_TIMEOUTS			747
#define	_SC_TRACE			748
#define	_SC_TRACE_EVENT_FILTER		749
#define	_SC_TRACE_EVENT_NAME_MAX	750
#define	_SC_TRACE_INHERIT		751
#define	_SC_TRACE_LOG			752
#define	_SC_TRACE_NAME_MAX		753
#define	_SC_TRACE_SYS_MAX		754
#define	_SC_TRACE_USER_EVENT_MAX	755
#define	_SC_TYPED_MEMORY_OBJECTS	756
#define	_SC_V6_ILP32_OFF32		757
#define	_SC_V6_ILP32_OFFBIG		758
#define	_SC_V6_LP64_OFF64		759
#define	_SC_V6_LPBIG_OFFBIG		760
#define	_SC_XOPEN_STREAMS		761
#define	_SC_IPV6			762
#define	_SC_RAW_SOCKETS			763

/* command names for POSIX pathconf */

/* POSIX.1 names */
#define	_PC_LINK_MAX		1
#define	_PC_MAX_CANON		2
#define	_PC_MAX_INPUT		3
#define	_PC_NAME_MAX		4
#define	_PC_PATH_MAX		5
#define	_PC_PIPE_BUF		6
#define	_PC_NO_TRUNC		7
#define	_PC_VDISABLE		8
#define	_PC_CHOWN_RESTRICTED	9
/* POSIX.4 names */
#define	_PC_ASYNC_IO		10
#define	_PC_PRIO_IO		11
#define	_PC_SYNC_IO		12
/* UNIX 03 names */
#define	_PC_ALLOC_SIZE_MIN	13
#define	_PC_REC_INCR_XFER_SIZE	14
#define	_PC_REC_MAX_XFER_SIZE	15
#define	_PC_REC_MIN_XFER_SIZE	16
#define	_PC_REC_XFER_ALIGN	17
#define	_PC_SYMLINK_MAX		18
#define	_PC_2_SYMLINKS		19
#define	_PC_ACL_ENABLED		20
#define	_PC_MIN_HOLE_SIZE	21
#define	_PC_CASE_BEHAVIOR	22
#define	_PC_SATTR_ENABLED	23
#define	_PC_SATTR_EXISTS	24
#define	_PC_ACCESS_FILTERING	25
/* UNIX 08 names */
#define	_PC_TIMESTAMP_RESOLUTION 26

/*
 * Large File Summit names
 *
 * This value matches the MIPS ABI choice, but leaves a large gap in the
 * value space.
 */
#define	_PC_FILESIZEBITS	67

/*
 * Extended attributes
 */
#define	_PC_XATTR_ENABLED	100
#define	_PC_XATTR_EXISTS	101

/*
 * If you add a _PC define above 101, you must change _PC_LAST (and truss).
 */
#define	_PC_LAST		101

/*
 * Case sensitivity values (related to _PC_CASE_BEHAVIOR)
 */
#define	_CASE_SENSITIVE		0x1
#define	_CASE_INSENSITIVE	0x2

/*
 * The value of 0 is returned when
 * ACL's are not supported
 */
#define	_ACL_ACLENT_ENABLED	0x1
#define	_ACL_ACE_ENABLED	0x2

#ifndef	_POSIX_VERSION
#ifdef	_XPG6
#define	_POSIX_VERSION		200112L	/* Supports IEEE Std 1003.1-2001 */
#else
#define	_POSIX_VERSION		199506L	/* Supports POSIX-1c DIS */
#endif
#endif /* _POSIX_VERSION */

#ifndef	_POSIX2_VERSION
#ifdef	_XPG6
#define	_POSIX2_VERSION		200112L	/* Supports IEEE Std 1003.1-2001 */
#else
#define	_POSIX2_VERSION		199209L	/* Supports ISO POSIX-2 DIS */
#endif
#endif /* _POSIX2_VERSION */

/*
 * Marked LEGACY in SUSv2 and removed in SUSv3. Though SUSv3 applications
 * should not rely on this value, it has been aligned with the current
 * standard to avoid confusion if used.
 */
#ifndef	_POSIX2_C_VERSION
#ifdef	_XPG6
#define	_POSIX2_C_VERSION	200112L	/* Supports IEEE Std 1003.1-2001 */
#else
#define	_POSIX2_C_VERSION	199209L	/* Supports ISO POSIX-2 DIS */
#endif
#endif /* _POSIX2_C_VERSION */

#define	_XOPEN_XPG3			/* Supports XPG, Issue 3 */
#define	_XOPEN_XPG4			/* Supports XPG, Issue 4 */
#define	_XOPEN_UNIX		0	/* Supports X/Open System Interfaces */

#ifndef	_XOPEN_XCU_VERSION
#define	_XOPEN_XCU_VERSION	4	/* Supports XCU4 */
#endif

#define	_XOPEN_REALTIME		1	/* Supports Realtime */
#define	_XOPEN_ENH_I18N		1	/* Supports Enhanced International */
#define	_XOPEN_SHM		1	/* Supports Shared Memory Feature */
#define	_POSIX2_CHAR_TERM	1	/* Supports at least 1 terminal type */

#ifdef _XPG6
#define	_POSIX2_C_BIND	  200112L	/* Supports C Language Bindings */
#define	_POSIX2_C_DEV	  200112L	/* Supports C language dev utility */
#define	_POSIX2_FORT_RUN  200112L	/* Supports FORTRAN runtime */
#define	_POSIX2_LOCALEDEF 200112L	/* Supports creation of locales */
#define	_POSIX2_SW_DEV	  200112L	/* Supports S/W Development Utility */
#define	_POSIX2_UPE	  200112L	/* Supports User Portability Utility */
#else
#define	_POSIX2_C_BIND		1	/* Supports C Language Bindings */
#define	_POSIX2_C_DEV		1	/* Supports C language dev utility */
#define	_POSIX2_FORT_RUN	1	/* Supports FORTRAN runtime */
#define	_POSIX2_LOCALEDEF	1	/* Supports creation of locales */
#define	_POSIX2_SW_DEV		1	/* Supports S/W Development Utility */
#define	_POSIX2_UPE		1	/* Supports User Portability Utility */
#endif /* _XPG6 */

/* UNIX 03 names */
#define	_POSIX_REGEXP		1	/* Supports POSIX Regular Expressions */
#define	_POSIX_SHELL		1	/* Supports POSIX shell */
#define	_XOPEN_STREAMS		1	/* Supports XSI Streams Option Group */

#ifdef	__cplusplus
}
#endif

#endif	/* _SYS_UNISTD_H */