blob: d2262b37642cba4da69a38b04c5e559252d02fa0 [file] [log] [blame]
Elliott Hughes13da6002025-02-03 10:42:13 -08001// Copyright (C) 2017 The Android Open Source Project
2// SPDX-License-Identifier: BSD-2-Clause
Elliott Hughes21b56eb2017-10-20 17:57:17 -07003
4#include <unistd.h>
5
6#include "header_checks.h"
7
8static void unistd_h() {
9 MACRO(_POSIX_VERSION);
10 MACRO(_POSIX2_VERSION);
11 MACRO(_XOPEN_VERSION);
12
13 MACRO(_POSIX_ADVISORY_INFO);
14 MACRO(_POSIX_ASYNCHRONOUS_IO);
15 MACRO(_POSIX_BARRIERS);
16 MACRO(_POSIX_CHOWN_RESTRICTED);
17 MACRO(_POSIX_CLOCK_SELECTION);
18 MACRO(_POSIX_CPUTIME);
19 MACRO(_POSIX_FSYNC);
20 MACRO(_POSIX_IPV6);
21 MACRO(_POSIX_JOB_CONTROL);
22 MACRO(_POSIX_MAPPED_FILES);
23 MACRO(_POSIX_MEMLOCK);
24 MACRO(_POSIX_MEMLOCK_RANGE);
25 MACRO(_POSIX_MEMORY_PROTECTION);
26 MACRO(_POSIX_MESSAGE_PASSING);
27 MACRO(_POSIX_MONOTONIC_CLOCK);
28 MACRO(_POSIX_NO_TRUNC);
Colin Crossb6830ca2023-01-18 15:55:48 -080029#if !defined(ANDROID_HOST_MUSL)
Elliott Hughes21b56eb2017-10-20 17:57:17 -070030 MACRO(_POSIX_PRIORITIZED_IO);
31 MACRO(_POSIX_PRIORITY_SCHEDULING);
Colin Crossb6830ca2023-01-18 15:55:48 -080032#endif
Elliott Hughes21b56eb2017-10-20 17:57:17 -070033 MACRO(_POSIX_RAW_SOCKETS);
34 MACRO(_POSIX_READER_WRITER_LOCKS);
35 MACRO(_POSIX_REALTIME_SIGNALS);
36 MACRO(_POSIX_REGEXP);
37 MACRO(_POSIX_SAVED_IDS);
38 MACRO(_POSIX_SEMAPHORES);
39 MACRO(_POSIX_SHARED_MEMORY_OBJECTS);
40 MACRO(_POSIX_SHELL);
41 MACRO(_POSIX_SPAWN);
42 MACRO(_POSIX_SPIN_LOCKS);
Colin Crossb6830ca2023-01-18 15:55:48 -080043#if !defined(ANDROID_HOST_MUSL)
Elliott Hughes21b56eb2017-10-20 17:57:17 -070044 MACRO(_POSIX_SPORADIC_SERVER);
45 MACRO(_POSIX_SYNCHRONIZED_IO);
Colin Crossb6830ca2023-01-18 15:55:48 -080046#endif
Elliott Hughes21b56eb2017-10-20 17:57:17 -070047 MACRO(_POSIX_THREAD_ATTR_STACKADDR);
48 MACRO(_POSIX_THREAD_ATTR_STACKSIZE);
49 MACRO(_POSIX_THREAD_CPUTIME);
Colin Crossb6830ca2023-01-18 15:55:48 -080050#if !defined(ANDROID_HOST_MUSL)
Elliott Hughes21b56eb2017-10-20 17:57:17 -070051 MACRO(_POSIX_THREAD_PRIO_INHERIT);
52 MACRO(_POSIX_THREAD_PRIO_PROTECT);
Colin Crossb6830ca2023-01-18 15:55:48 -080053#endif
Elliott Hughes21b56eb2017-10-20 17:57:17 -070054 MACRO(_POSIX_THREAD_PRIORITY_SCHEDULING);
55 MACRO(_POSIX_THREAD_PROCESS_SHARED);
Colin Crossb6830ca2023-01-18 15:55:48 -080056#if !defined(ANDROID_HOST_MUSL)
Elliott Hughes21b56eb2017-10-20 17:57:17 -070057 MACRO(_POSIX_THREAD_ROBUST_PRIO_INHERIT);
58 MACRO(_POSIX_THREAD_ROBUST_PRIO_PROTECT);
Colin Crossb6830ca2023-01-18 15:55:48 -080059#endif
Elliott Hughes21b56eb2017-10-20 17:57:17 -070060 MACRO(_POSIX_THREAD_SAFE_FUNCTIONS);
Colin Crossb6830ca2023-01-18 15:55:48 -080061#if !defined(ANDROID_HOST_MUSL)
Elliott Hughes21b56eb2017-10-20 17:57:17 -070062 MACRO(_POSIX_THREAD_SPORADIC_SERVER);
Colin Crossb6830ca2023-01-18 15:55:48 -080063#endif
Elliott Hughes21b56eb2017-10-20 17:57:17 -070064 MACRO(_POSIX_THREADS);
65 MACRO(_POSIX_TIMEOUTS);
66 MACRO(_POSIX_TIMERS);
Colin Crossb6830ca2023-01-18 15:55:48 -080067#if !defined(ANDROID_HOST_MUSL)
Elliott Hughes21b56eb2017-10-20 17:57:17 -070068 MACRO(_POSIX_TYPED_MEMORY_OBJECTS);
Colin Crossb6830ca2023-01-18 15:55:48 -080069#endif
Elliott Hughes21b56eb2017-10-20 17:57:17 -070070 MACRO(_POSIX2_C_BIND);
Colin Crossb6830ca2023-01-18 15:55:48 -080071#if !defined(ANDROID_HOST_MUSL)
Elliott Hughes21b56eb2017-10-20 17:57:17 -070072 MACRO(_POSIX2_CHAR_TERM);
73 MACRO(_POSIX2_LOCALEDEF);
74 MACRO(_POSIX2_SW_DEV);
Colin Crossb6830ca2023-01-18 15:55:48 -080075#endif
Elliott Hughes21b56eb2017-10-20 17:57:17 -070076#if 0 // No libc I can find actually has this.
77 MACRO(_POSIX2_UPE);
78#endif
Colin Crossb6830ca2023-01-18 15:55:48 -080079#if !defined(ANDROID_HOST_MUSL)
Elliott Hughes21b56eb2017-10-20 17:57:17 -070080 MACRO(_XOPEN_CRYPT);
Colin Crossb6830ca2023-01-18 15:55:48 -080081#endif
Elliott Hughes21b56eb2017-10-20 17:57:17 -070082 MACRO(_XOPEN_ENH_I18N);
Colin Crossb6830ca2023-01-18 15:55:48 -080083#if !defined(ANDROID_HOST_MUSL)
Elliott Hughes21b56eb2017-10-20 17:57:17 -070084 MACRO(_XOPEN_REALTIME);
85 MACRO(_XOPEN_REALTIME_THREADS);
86 MACRO(_XOPEN_SHM);
Colin Crossb6830ca2023-01-18 15:55:48 -080087#endif
Elliott Hughes21b56eb2017-10-20 17:57:17 -070088 MACRO(_XOPEN_UNIX);
89#if defined(_XOPEN_UUCP)
90#if _XOPEN_UUCP != -1 && _XOPEN_UUCP != 0 && _XOPEN_UUCP != 200809L
91#error _XOPEN_UUCP
92#endif
93#endif
94
95 MACRO(NULL);
96
97 MACRO(F_OK);
98 MACRO(R_OK);
99 MACRO(W_OK);
100 MACRO(X_OK);
101
102#if !defined(__BIONIC__) // No confstr on Android.
103 MACRO(_CS_PATH);
104 MACRO(_CS_POSIX_V7_ILP32_OFF32_CFLAGS);
105 MACRO(_CS_POSIX_V7_ILP32_OFF32_LDFLAGS);
106 MACRO(_CS_POSIX_V7_ILP32_OFF32_LIBS);
107 MACRO(_CS_POSIX_V7_ILP32_OFFBIG_CFLAGS);
108 MACRO(_CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS);
109 MACRO(_CS_POSIX_V7_ILP32_OFFBIG_LIBS);
110 MACRO(_CS_POSIX_V7_LP64_OFF64_CFLAGS);
111 MACRO(_CS_POSIX_V7_LP64_OFF64_LDFLAGS);
112 MACRO(_CS_POSIX_V7_LP64_OFF64_LIBS);
113 MACRO(_CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS);
114 MACRO(_CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS);
115 MACRO(_CS_POSIX_V7_LPBIG_OFFBIG_LIBS);
116 MACRO(_CS_POSIX_V7_WIDTH_RESTRICTED_ENVS);
117 MACRO(_CS_V7_ENV);
118#endif
119
120 MACRO(SEEK_CUR);
121 MACRO(SEEK_END);
122 MACRO(SEEK_SET);
123
124 MACRO(F_LOCK);
125 MACRO(F_TEST);
126 MACRO(F_TLOCK);
127 MACRO(F_ULOCK);
128
129 MACRO(_PC_2_SYMLINKS);
130 MACRO(_PC_ALLOC_SIZE_MIN);
131 MACRO(_PC_ASYNC_IO);
132 MACRO(_PC_CHOWN_RESTRICTED);
133 MACRO(_PC_FILESIZEBITS);
134 MACRO(_PC_LINK_MAX);
135 MACRO(_PC_MAX_CANON);
136 MACRO(_PC_MAX_INPUT);
137 MACRO(_PC_NAME_MAX);
138 MACRO(_PC_NO_TRUNC);
139 MACRO(_PC_PATH_MAX);
140 MACRO(_PC_PIPE_BUF);
141 MACRO(_PC_PRIO_IO);
142 MACRO(_PC_REC_INCR_XFER_SIZE);
143 MACRO(_PC_REC_MAX_XFER_SIZE);
144 MACRO(_PC_REC_MIN_XFER_SIZE);
145 MACRO(_PC_REC_XFER_ALIGN);
146 MACRO(_PC_SYMLINK_MAX);
147 MACRO(_PC_SYNC_IO);
148#if 0 // No libc I can find actually has this.
149 MACRO(_PC_TIMESTAMP_RESOLUTION);
150#endif
151 MACRO(_PC_VDISABLE);
152
153 MACRO(_SC_2_C_BIND);
154 MACRO(_SC_2_C_DEV);
155 MACRO(_SC_2_CHAR_TERM);
156 MACRO(_SC_2_FORT_DEV);
157 MACRO(_SC_2_FORT_RUN);
158 MACRO(_SC_2_LOCALEDEF);
159 MACRO(_SC_2_SW_DEV);
160 MACRO(_SC_2_UPE);
161 MACRO(_SC_2_VERSION);
162 MACRO(_SC_ADVISORY_INFO);
163 MACRO(_SC_AIO_LISTIO_MAX);
164 MACRO(_SC_AIO_MAX);
165 MACRO(_SC_AIO_PRIO_DELTA_MAX);
166 MACRO(_SC_ARG_MAX);
167 MACRO(_SC_ASYNCHRONOUS_IO);
168 MACRO(_SC_ATEXIT_MAX);
169 MACRO(_SC_BARRIERS);
170 MACRO(_SC_BC_BASE_MAX);
171 MACRO(_SC_BC_DIM_MAX);
172 MACRO(_SC_BC_SCALE_MAX);
173 MACRO(_SC_BC_STRING_MAX);
174 MACRO(_SC_CHILD_MAX);
175 MACRO(_SC_CLK_TCK);
176 MACRO(_SC_CLOCK_SELECTION);
177 MACRO(_SC_COLL_WEIGHTS_MAX);
178 MACRO(_SC_CPUTIME);
179 MACRO(_SC_DELAYTIMER_MAX);
180 MACRO(_SC_EXPR_NEST_MAX);
181 MACRO(_SC_FSYNC);
182 MACRO(_SC_GETGR_R_SIZE_MAX);
183 MACRO(_SC_GETPW_R_SIZE_MAX);
184 MACRO(_SC_HOST_NAME_MAX);
185 MACRO(_SC_IOV_MAX);
186 MACRO(_SC_IPV6);
187 MACRO(_SC_JOB_CONTROL);
188 MACRO(_SC_LINE_MAX);
189 MACRO(_SC_LOGIN_NAME_MAX);
190 MACRO(_SC_MAPPED_FILES);
191 MACRO(_SC_MEMLOCK);
192 MACRO(_SC_MEMLOCK_RANGE);
193 MACRO(_SC_MEMORY_PROTECTION);
194 MACRO(_SC_MESSAGE_PASSING);
195 MACRO(_SC_MONOTONIC_CLOCK);
196 MACRO(_SC_MQ_OPEN_MAX);
197 MACRO(_SC_MQ_PRIO_MAX);
198 MACRO(_SC_NGROUPS_MAX);
Elliott Hughesaa7ea412025-01-24 11:38:05 -0800199#if defined(__BIONIC__) // New in POSIX 2024.
200 MACRO(_SC_NSIG);
201#endif
Elliott Hughes21b56eb2017-10-20 17:57:17 -0700202 MACRO(_SC_OPEN_MAX);
203 MACRO(_SC_PAGE_SIZE);
204 MACRO(_SC_PAGESIZE);
205 MACRO(_SC_PRIORITIZED_IO);
206 MACRO(_SC_PRIORITY_SCHEDULING);
207 MACRO(_SC_RAW_SOCKETS);
208 MACRO(_SC_RE_DUP_MAX);
209 MACRO(_SC_READER_WRITER_LOCKS);
210 MACRO(_SC_REALTIME_SIGNALS);
211 MACRO(_SC_REGEXP);
212 MACRO(_SC_RTSIG_MAX);
213 MACRO(_SC_SAVED_IDS);
214 MACRO(_SC_SEM_NSEMS_MAX);
215 MACRO(_SC_SEM_VALUE_MAX);
216 MACRO(_SC_SEMAPHORES);
217 MACRO(_SC_SHARED_MEMORY_OBJECTS);
218 MACRO(_SC_SHELL);
219 MACRO(_SC_SIGQUEUE_MAX);
220 MACRO(_SC_SPAWN);
221 MACRO(_SC_SPIN_LOCKS);
222 MACRO(_SC_SPORADIC_SERVER);
223 MACRO(_SC_SS_REPL_MAX);
224 MACRO(_SC_STREAM_MAX);
225 MACRO(_SC_SYMLOOP_MAX);
226 MACRO(_SC_SYNCHRONIZED_IO);
227 MACRO(_SC_THREAD_ATTR_STACKADDR);
228 MACRO(_SC_THREAD_ATTR_STACKSIZE);
229 MACRO(_SC_THREAD_CPUTIME);
230 MACRO(_SC_THREAD_DESTRUCTOR_ITERATIONS);
231 MACRO(_SC_THREAD_KEYS_MAX);
232 MACRO(_SC_THREAD_PRIO_INHERIT);
233 MACRO(_SC_THREAD_PRIO_PROTECT);
234 MACRO(_SC_THREAD_PRIORITY_SCHEDULING);
235 MACRO(_SC_THREAD_PROCESS_SHARED);
236 MACRO(_SC_THREAD_ROBUST_PRIO_INHERIT);
237 MACRO(_SC_THREAD_ROBUST_PRIO_PROTECT);
238 MACRO(_SC_THREAD_SAFE_FUNCTIONS);
239 MACRO(_SC_THREAD_SPORADIC_SERVER);
240 MACRO(_SC_THREAD_STACK_MIN);
241 MACRO(_SC_THREAD_THREADS_MAX);
242 MACRO(_SC_THREADS);
243 MACRO(_SC_TIMEOUTS);
244 MACRO(_SC_TIMER_MAX);
245 MACRO(_SC_TIMERS);
246 MACRO(_SC_TRACE);
247 MACRO(_SC_TRACE_EVENT_FILTER);
248 MACRO(_SC_TRACE_EVENT_NAME_MAX);
249 MACRO(_SC_TRACE_INHERIT);
250 MACRO(_SC_TRACE_LOG);
251 MACRO(_SC_TRACE_NAME_MAX);
252 MACRO(_SC_TRACE_SYS_MAX);
253 MACRO(_SC_TRACE_USER_EVENT_MAX);
254 MACRO(_SC_TYPED_MEMORY_OBJECTS);
255 MACRO(_SC_TZNAME_MAX);
256 MACRO(_SC_V7_ILP32_OFF32);
257 MACRO(_SC_VERSION);
258 MACRO(_SC_XOPEN_CRYPT);
259 MACRO(_SC_XOPEN_ENH_I18N);
260 MACRO(_SC_XOPEN_REALTIME);
261 MACRO(_SC_XOPEN_REALTIME_THREADS);
262 MACRO(_SC_XOPEN_SHM);
263 MACRO(_SC_XOPEN_STREAMS);
264 MACRO(_SC_XOPEN_UNIX);
265#if 0 // No libc I can find actually has this.
266 MACRO(_SC_XOPEN_UUCP);
267#endif
268 MACRO(_SC_XOPEN_VERSION);
269
270 MACRO_VALUE(STDERR_FILENO, 2);
271 MACRO_VALUE(STDIN_FILENO, 0);
272 MACRO_VALUE(STDOUT_FILENO, 1);
273
274 MACRO(_POSIX_VDISABLE);
275
276 TYPE(size_t);
277 TYPE(ssize_t);
278 TYPE(uid_t);
279 TYPE(gid_t);
280 TYPE(off_t);
281 TYPE(pid_t);
282 TYPE(intptr_t);
283
284 FUNCTION(access, int (*f)(const char*, int));
285 FUNCTION(alarm, unsigned (*f)(unsigned));
286 FUNCTION(chdir, int (*f)(const char*));
287 FUNCTION(chown, int (*f)(const char*, uid_t, gid_t));
288 FUNCTION(close, int (*f)(int));
289#if !defined(__BIONIC__)
290 FUNCTION(confstr, size_t (*f)(int, char*, size_t));
291 FUNCTION(crypt, char* (*f)(const char*, const char*));
292#endif
293 FUNCTION(dup, int (*f)(int));
294 FUNCTION(dup2, int (*f)(int, int));
295 FUNCTION(_exit, void (*f)(int));
296#if !defined(__BIONIC__)
297 FUNCTION(encrypt, void (*f)(char[64], int));
298#endif
299 FUNCTION(execl, int (*f)(const char*, const char*, ...));
300 FUNCTION(execle, int (*f)(const char*, const char*, ...));
301 FUNCTION(execlp, int (*f)(const char*, const char*, ...));
302 FUNCTION(execv, int (*f)(const char*, char* const[]));
303 FUNCTION(execve, int (*f)(const char*, char* const[], char* const[]));
304 FUNCTION(execvp, int (*f)(const char*, char* const[]));
305 FUNCTION(faccessat, int (*f)(int, const char*, int, int));
306 FUNCTION(fchdir, int (*f)(int));
307 FUNCTION(fchown, int (*f)(int, uid_t, gid_t));
308 FUNCTION(fchownat, int (*f)(int, const char*, uid_t, gid_t, int));
309 FUNCTION(fdatasync, int (*f)(int));
310 FUNCTION(fexecve, int (*f)(int, char* const[], char* const[]));
311 FUNCTION(fork, pid_t (*f)(void));
Elliott Hughes9d3d38c2024-08-05 18:10:29 +0000312#if !defined(__GLIBC__) // Our glibc is too old.
313 FUNCTION(_Fork, pid_t (*f)(void));
314#endif
Elliott Hughes21b56eb2017-10-20 17:57:17 -0700315 FUNCTION(fpathconf, long (*f)(int, int));
316 FUNCTION(fsync, int (*f)(int));
317 FUNCTION(ftruncate, int (*f)(int, off_t));
318 FUNCTION(getcwd, char* (*f)(char*, size_t));
319 FUNCTION(getegid, gid_t (*f)(void));
Elliott Hughesf4d57ac2025-01-28 14:22:12 -0800320#if !defined(__GLIBC__) // Our glibc is too old.
321 FUNCTION(getentropy, int (*f)(void*, size_t));
322#endif
Elliott Hughes21b56eb2017-10-20 17:57:17 -0700323 FUNCTION(geteuid, uid_t (*f)(void));
324 FUNCTION(getgid, gid_t (*f)(void));
325 FUNCTION(getgroups, int (*f)(int, gid_t[]));
326#if !defined(__BIONIC__)
327 FUNCTION(gethostid, long (*f)(void));
328#endif
329 FUNCTION(gethostname, int (*f)(char*, size_t));
330 FUNCTION(getlogin, char* (*f)(void));
331 FUNCTION(getlogin_r, int (*f)(char*, size_t));
332 FUNCTION(getopt, int (*f)(int, char* const[], const char*));
333 FUNCTION(getpgid, pid_t (*f)(pid_t));
334 FUNCTION(getpgrp, pid_t (*f)(void));
335 FUNCTION(getpid, pid_t (*f)(void));
336 FUNCTION(getppid, pid_t (*f)(void));
337 FUNCTION(getsid, pid_t (*f)(pid_t));
338 FUNCTION(getuid, uid_t (*f)(void));
339 FUNCTION(isatty, int (*f)(int));
340 FUNCTION(lchown, int (*f)(const char*, uid_t, gid_t));
341 FUNCTION(link, int (*f)(const char*, const char*));
342 FUNCTION(linkat, int (*f)(int, const char*, int, const char*, int));
343 FUNCTION(lockf, int (*f)(int, int, off_t));
344 FUNCTION(lseek, off_t (*f)(int, off_t, int));
345 FUNCTION(nice, int (*f)(int));
346 FUNCTION(pathconf, long (*f)(const char*, int));
347 FUNCTION(pause, int (*f)(void));
348 FUNCTION(pipe, int (*f)(int[2]));
349 FUNCTION(pread, ssize_t (*f)(int, void*, size_t, off_t));
350 FUNCTION(pwrite, ssize_t (*f)(int, const void*, size_t, off_t));
351 FUNCTION(read, ssize_t (*f)(int, void*, size_t));
352 FUNCTION(readlink, ssize_t (*f)(const char*, char*, size_t));
353 FUNCTION(readlinkat, ssize_t (*f)(int, const char*, char*, size_t));
354 FUNCTION(rmdir, int (*f)(const char*));
355 FUNCTION(setegid, int (*f)(gid_t));
356 FUNCTION(seteuid, int (*f)(uid_t));
357 FUNCTION(setgid, int (*f)(gid_t));
358 FUNCTION(setpgid, int (*f)(pid_t, pid_t));
359 FUNCTION(setpgrp, pid_t (*f)(void));
360 FUNCTION(setregid, int (*f)(gid_t, gid_t));
361 FUNCTION(setreuid, int (*f)(uid_t, uid_t));
362 FUNCTION(setsid, pid_t (*f)(void));
363 FUNCTION(setuid, int (*f)(uid_t));
364 FUNCTION(sleep, unsigned (*f)(unsigned));
365 FUNCTION(swab, void (*f)(const void*, void*, ssize_t));
366 FUNCTION(symlink, int (*f)(const char*, const char*));
367 FUNCTION(symlinkat, int (*f)(const char*, int, const char*));
368 FUNCTION(sync, void (*f)(void));
369 FUNCTION(sysconf, long (*f)(int));
370 FUNCTION(tcgetpgrp, pid_t (*f)(int));
371 FUNCTION(tcsetpgrp, int (*f)(int, pid_t));
372 FUNCTION(truncate, int (*f)(const char*, off_t));
373 FUNCTION(ttyname, char* (*f)(int));
374 FUNCTION(ttyname_r, int (*f)(int, char*, size_t));
375 FUNCTION(unlink, int (*f)(const char*));
376 FUNCTION(unlinkat, int (*f)(int, const char*, int));
377 FUNCTION(write, ssize_t (*f)(int, const void*, size_t));
378
379 char* cp;
380 cp = optarg;
381 int i;
382 i = opterr;
383 i = optind;
384 i = optopt;
385}