• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (C) 2017 The Android Open Source Project
2 // SPDX-License-Identifier: BSD-2-Clause
3 
4 #include <unistd.h>
5 
6 #include "header_checks.h"
7 
unistd_h()8 static 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);
29 #if !defined(ANDROID_HOST_MUSL)
30   MACRO(_POSIX_PRIORITIZED_IO);
31   MACRO(_POSIX_PRIORITY_SCHEDULING);
32 #endif
33   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);
43 #if !defined(ANDROID_HOST_MUSL)
44   MACRO(_POSIX_SPORADIC_SERVER);
45   MACRO(_POSIX_SYNCHRONIZED_IO);
46 #endif
47   MACRO(_POSIX_THREAD_ATTR_STACKADDR);
48   MACRO(_POSIX_THREAD_ATTR_STACKSIZE);
49   MACRO(_POSIX_THREAD_CPUTIME);
50 #if !defined(ANDROID_HOST_MUSL)
51   MACRO(_POSIX_THREAD_PRIO_INHERIT);
52   MACRO(_POSIX_THREAD_PRIO_PROTECT);
53 #endif
54   MACRO(_POSIX_THREAD_PRIORITY_SCHEDULING);
55   MACRO(_POSIX_THREAD_PROCESS_SHARED);
56 #if !defined(ANDROID_HOST_MUSL)
57   MACRO(_POSIX_THREAD_ROBUST_PRIO_INHERIT);
58   MACRO(_POSIX_THREAD_ROBUST_PRIO_PROTECT);
59 #endif
60   MACRO(_POSIX_THREAD_SAFE_FUNCTIONS);
61 #if !defined(ANDROID_HOST_MUSL)
62   MACRO(_POSIX_THREAD_SPORADIC_SERVER);
63 #endif
64   MACRO(_POSIX_THREADS);
65   MACRO(_POSIX_TIMEOUTS);
66   MACRO(_POSIX_TIMERS);
67 #if !defined(ANDROID_HOST_MUSL)
68   MACRO(_POSIX_TYPED_MEMORY_OBJECTS);
69 #endif
70   MACRO(_POSIX2_C_BIND);
71 #if !defined(ANDROID_HOST_MUSL)
72   MACRO(_POSIX2_CHAR_TERM);
73   MACRO(_POSIX2_LOCALEDEF);
74   MACRO(_POSIX2_SW_DEV);
75 #endif
76 #if 0 // No libc I can find actually has this.
77   MACRO(_POSIX2_UPE);
78 #endif
79 #if !defined(ANDROID_HOST_MUSL)
80   MACRO(_XOPEN_CRYPT);
81 #endif
82   MACRO(_XOPEN_ENH_I18N);
83 #if !defined(ANDROID_HOST_MUSL)
84   MACRO(_XOPEN_REALTIME);
85   MACRO(_XOPEN_REALTIME_THREADS);
86   MACRO(_XOPEN_SHM);
87 #endif
88   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);
199 #if defined(__BIONIC__) // New in POSIX 2024.
200   MACRO(_SC_NSIG);
201 #endif
202   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));
312 #if !defined(__GLIBC__) // Our glibc is too old.
313   FUNCTION(_Fork, pid_t (*f)(void));
314 #endif
315   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));
320 #if !defined(__GLIBC__) // Our glibc is too old.
321   FUNCTION(getentropy, int (*f)(void*, size_t));
322 #endif
323   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 }
386