summaryrefslogtreecommitdiff
path: root/StdLib/Include/sys/unistd.h
blob: a63d88df55ea8756d199a03b70ce1e301ad32428 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
/*  $NetBSD: unistd.h,v 1.35 2006/08/14 18:17:48 rpaulo Exp $ */

/*
 * Copyright (c) 1989, 1993
 *  The Regents of the University of California.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *  @(#)unistd.h  8.2 (Berkeley) 1/7/94
 */

#ifndef _SYS_UNISTD_H_
#define _SYS_UNISTD_H_

#include <sys/featuretest.h>

/* compile-time symbolic constants */
//#define _POSIX_JOB_CONTROL  /* implementation supports job control */

/*
 * According to POSIX 1003.1:
 * "The saved set-user-ID capability allows a program to regain the
 * effective user ID established at the last exec call."
 * However, the setuid/setgid function as specified by POSIX 1003.1 does
 * not allow changing the effective ID from the super-user without also
 * changed the saved ID, so it is impossible to get super-user privileges
 * back later.  Instead we provide this feature independent of the current
 * effective ID through the seteuid/setegid function.  In addition, we do
 * not use the saved ID as specified by POSIX 1003.1 in setuid/setgid,
 * because this would make it impossible for a set-user-ID executable
 * owned by a user other than the super-user to permanently revoke its
 * extra privileges.
 */
#ifdef  _NOT_AVAILABLE
#define _POSIX_SAVED_IDS  /* saved set-user-ID and set-group-ID */
#endif

#define _POSIX_VERSION    199009L
#define _POSIX2_VERSION   199212L

/* execution-time symbolic constants */
        /* chown requires appropriate privileges */
//#define _POSIX_CHOWN_RESTRICTED 1
//        /* clock selection */
//#define _POSIX_CLOCK_SELECTION  -1
//        /* too-long path components generate errors */
//#define _POSIX_NO_TRUNC   1
//        /* may disable terminal special characters */
//#define _POSIX_VDISABLE   ((unsigned char)'\377')
//        /* file synchronization is available */
//#define _POSIX_FSYNC    1
//        /* synchronized I/O is available */
//#define _POSIX_SYNCHRONIZED_IO  1
//        /* memory mapped files */
//#define _POSIX_MAPPED_FILES 1
//        /* memory locking of whole address space */
//#define _POSIX_MEMLOCK    1
//        /* memory locking address ranges */
//#define _POSIX_MEMLOCK_RANGE  1
//        /* memory access protections */
//#define _POSIX_MEMORY_PROTECTION 1
//        /* monotonic clock */
//#define _POSIX_MONOTONIC_CLOCK  200112L
//        /* threads */
//#define _POSIX_THREADS    200112L
//        /* semaphores */
//#define _POSIX_SEMAPHORES 0
//        /* barriers */
//#define _POSIX_BARRIERS   200112L
        /* timers */
#define _POSIX_TIMERS   200112L
        /* spin locks */
//#define _POSIX_SPIN_LOCKS 200112L
//        /* read/write locks */
//#define _POSIX_READER_WRITER_LOCKS  200112L
//        /* XPG4.2 shared memory */
//#define _XOPEN_SHM    0

/* whence values for lseek(2); renamed by POSIX 1003.1 */
#define L_SET   SEEK_SET
#define L_INCR    SEEK_CUR
#define L_XTND    SEEK_END

/*
 * fsync_range values.
 *
 * Note the following flag values were chosen to not overlap
 * values for SEEK_XXX flags.  While not currently implemented,
 * it is possible to extend this call to respect SEEK_CUR and
 * SEEK_END offset addressing modes.
 */
#define FDATASYNC 0x0010  /* sync data and minimal metadata */
#define FFILESYNC 0x0020  /* sync data and metadata */
#define FDISKSYNC 0x0040  /* flush disk caches after sync */

/* configurable pathname variables; use as argument to pathconf(3) */
#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_CHOWN_RESTRICTED   7
#define _PC_NO_TRUNC     8
#define _PC_VDISABLE     9
#define _PC_SYNC_IO   10
#define _PC_FILESIZEBITS  11

/* configurable system variables; use as argument to sysconf(3) */
/*
 * XXX The value of _SC_CLK_TCK is embedded in <time.h>.
 * XXX The value of _SC_PAGESIZE is embedded in <sys/shm.h>.
 */
#define _SC_ARG_MAX    1
#define _SC_CHILD_MAX    2
#define _O_SC_CLK_TCK    3 /* Old version, always 100 */
#define _SC_NGROUPS_MAX    4
#define _SC_OPEN_MAX     5
#define _SC_JOB_CONTROL    6
#define _SC_SAVED_IDS    7
#define _SC_VERSION    8
#define _SC_BC_BASE_MAX    9
#define _SC_BC_DIM_MAX    10
#define _SC_BC_SCALE_MAX  11
#define _SC_BC_STRING_MAX 12
#define _SC_COLL_WEIGHTS_MAX  13
#define _SC_EXPR_NEST_MAX 14
#define _SC_LINE_MAX    15
#define _SC_RE_DUP_MAX    16
#define _SC_2_VERSION   17
#define _SC_2_C_BIND    18
#define _SC_2_C_DEV   19
#define _SC_2_CHAR_TERM   20
#define _SC_2_FORT_DEV    21
#define _SC_2_FORT_RUN    22
#define _SC_2_LOCALEDEF   23
#define _SC_2_SW_DEV    24
#define _SC_2_UPE   25
#define _SC_STREAM_MAX    26
#define _SC_TZNAME_MAX    27
#define _SC_PAGESIZE    28
#define _SC_PAGE_SIZE   _SC_PAGESIZE  /* 1170 compatibility */
#define _SC_FSYNC   29
#define _SC_XOPEN_SHM   30
#define _SC_SYNCHRONIZED_IO 31
#define _SC_IOV_MAX   32
#define _SC_MAPPED_FILES  33
#define _SC_MEMLOCK   34
#define _SC_MEMLOCK_RANGE 35
#define _SC_MEMORY_PROTECTION 36
#define _SC_LOGIN_NAME_MAX  37
#define _SC_MONOTONIC_CLOCK 38
#define _SC_CLK_TCK   39 /* New, variable version */
#define _SC_ATEXIT_MAX    40
#define _SC_THREADS   41
#define _SC_SEMAPHORES    42
#define _SC_BARRIERS    43
#define _SC_TIMERS    44
#define _SC_SPIN_LOCKS    45
#define _SC_READER_WRITER_LOCKS 46
#define _SC_GETGR_R_SIZE_MAX  47
#define _SC_GETPW_R_SIZE_MAX  48
#define _SC_CLOCK_SELECTION 49

/* configurable system strings */
#define _CS_PATH     1

#endif /* !_SYS_UNISTD_H_ */