]> git.proxmox.com Git - rustc.git/blob - src/liblibc/src/unix/notbsd/android/mod.rs
Imported Upstream version 1.6.0+dfsg1
[rustc.git] / src / liblibc / src / unix / notbsd / android / mod.rs
1 //! Android-specific definitions for linux-like values
2
3 pub type c_char = u8;
4 pub type c_long = i32;
5 pub type c_ulong = u32;
6 pub type clock_t = i32;
7 pub type time_t = i32;
8 pub type suseconds_t = i32;
9 pub type wchar_t = u32;
10 pub type off_t = i32;
11 pub type ino_t = u32;
12 pub type blkcnt_t = u32;
13 pub type blksize_t = u32;
14 pub type dev_t = u32;
15 pub type mode_t = u16;
16 pub type nlink_t = u16;
17 pub type useconds_t = i32;
18 pub type socklen_t = i32;
19 pub type pthread_t = c_long;
20 pub type pthread_mutexattr_t = ::c_long;
21 pub type sigset_t = c_ulong;
22 pub type time64_t = i64;
23
24 s! {
25 pub struct stat {
26 pub st_dev: ::c_ulonglong,
27 __pad0: [::c_uchar; 4],
28 __st_ino: ::ino_t,
29 pub st_mode: ::c_uint,
30 pub st_nlink: ::c_uint,
31 pub st_uid: ::c_ulong,
32 pub st_gid: ::c_ulong,
33 pub st_rdev: ::c_ulonglong,
34 __pad3: [::c_uchar; 4],
35 pub st_size: ::c_longlong,
36 pub st_blksize: blksize_t,
37 pub st_blocks: ::c_ulonglong,
38 pub st_atime: ::c_ulong,
39 pub st_atime_nsec: ::c_ulong,
40 pub st_mtime: ::c_ulong,
41 pub st_mtime_nsec: ::c_ulong,
42 pub st_ctime: ::c_ulong,
43 pub st_ctime_nsec: ::c_ulong,
44 pub st_ino: ::c_ulonglong,
45 }
46
47 pub struct dirent {
48 pub d_ino: u64,
49 pub d_off: i64,
50 pub d_reclen: ::c_ushort,
51 pub d_type: ::c_uchar,
52 pub d_name: [::c_char; 256],
53 }
54
55 pub struct pthread_attr_t {
56 pub flags: ::uint32_t,
57 pub stack_base: *mut ::c_void,
58 pub stack_size: ::size_t,
59 pub guard_size: ::size_t,
60 pub sched_policy: ::int32_t,
61 pub sched_priority: ::int32_t,
62 }
63
64 pub struct pthread_mutex_t { value: ::c_int }
65
66 pub struct pthread_cond_t { value: ::c_int }
67
68 pub struct pthread_rwlock_t {
69 lock: pthread_mutex_t,
70 cond: pthread_cond_t,
71 numLocks: ::c_int,
72 writerThreadId: ::c_int,
73 pendingReaders: ::c_int,
74 pendingWriters: ::c_int,
75 reserved: [*mut ::c_void; 4],
76 }
77
78 pub struct passwd {
79 pub pw_name: *mut ::c_char,
80 pub pw_passwd: *mut ::c_char,
81 pub pw_uid: ::uid_t,
82 pub pw_gid: ::gid_t,
83 pub pw_dir: *mut ::c_char,
84 pub pw_shell: *mut ::c_char,
85 }
86
87 pub struct stack_t {
88 pub ss_sp: *mut ::c_void,
89 pub ss_flags: ::c_int,
90 pub ss_size: ::size_t
91 }
92
93 pub struct siginfo_t {
94 pub si_signo: ::c_int,
95 pub si_errno: ::c_int,
96 pub si_code: ::c_int,
97 pub _pad: [::c_int; 29],
98 }
99 }
100
101 pub const BUFSIZ: ::c_uint = 1024;
102 pub const FILENAME_MAX: ::c_uint = 1024;
103 pub const FOPEN_MAX: ::c_uint = 20;
104 pub const L_tmpnam: ::c_uint = 1024;
105 pub const TMP_MAX: ::c_uint = 308915776;
106 pub const _PC_NAME_MAX: ::c_int = 4;
107
108 pub const FIONBIO: ::c_int = 0x5421;
109
110 pub const _SC_ARG_MAX: ::c_int = 0;
111 pub const _SC_BC_BASE_MAX: ::c_int = 1;
112 pub const _SC_BC_DIM_MAX: ::c_int = 2;
113 pub const _SC_BC_SCALE_MAX: ::c_int = 3;
114 pub const _SC_BC_STRING_MAX: ::c_int = 4;
115 pub const _SC_CHILD_MAX: ::c_int = 5;
116 pub const _SC_CLK_TCK: ::c_int = 6;
117 pub const _SC_COLL_WEIGHTS_MAX: ::c_int = 7;
118 pub const _SC_EXPR_NEST_MAX: ::c_int = 8;
119 pub const _SC_LINE_MAX: ::c_int = 9;
120 pub const _SC_NGROUPS_MAX: ::c_int = 10;
121 pub const _SC_OPEN_MAX: ::c_int = 11;
122 pub const _SC_2_C_BIND: ::c_int = 13;
123 pub const _SC_2_C_DEV: ::c_int = 14;
124 pub const _SC_2_C_VERSION: ::c_int = 15;
125 pub const _SC_2_CHAR_TERM: ::c_int = 16;
126 pub const _SC_2_FORT_DEV: ::c_int = 17;
127 pub const _SC_2_FORT_RUN: ::c_int = 18;
128 pub const _SC_2_LOCALEDEF: ::c_int = 19;
129 pub const _SC_2_SW_DEV: ::c_int = 20;
130 pub const _SC_2_UPE: ::c_int = 21;
131 pub const _SC_2_VERSION: ::c_int = 22;
132 pub const _SC_JOB_CONTROL: ::c_int = 23;
133 pub const _SC_SAVED_IDS: ::c_int = 24;
134 pub const _SC_VERSION: ::c_int = 25;
135 pub const _SC_RE_DUP_MAX: ::c_int = 26;
136 pub const _SC_STREAM_MAX: ::c_int = 27;
137 pub const _SC_TZNAME_MAX: ::c_int = 28;
138 pub const _SC_XOPEN_CRYPT: ::c_int = 29;
139 pub const _SC_XOPEN_ENH_I18N: ::c_int = 30;
140 pub const _SC_XOPEN_SHM: ::c_int = 31;
141 pub const _SC_XOPEN_VERSION: ::c_int = 32;
142 pub const _SC_XOPEN_XCU_VERSION: ::c_int = 33;
143 pub const _SC_XOPEN_REALTIME: ::c_int = 34;
144 pub const _SC_XOPEN_REALTIME_THREADS: ::c_int = 35;
145 pub const _SC_XOPEN_LEGACY: ::c_int = 36;
146 pub const _SC_ATEXIT_MAX: ::c_int = 37;
147 pub const _SC_IOV_MAX: ::c_int = 38;
148 pub const _SC_PAGESIZE: ::c_int = 39;
149 pub const _SC_XOPEN_UNIX: ::c_int = 41;
150 pub const _SC_MQ_PRIO_MAX: ::c_int = 51;
151 pub const _SC_GETGR_R_SIZE_MAX: ::c_int = 71;
152 pub const _SC_GETPW_R_SIZE_MAX: ::c_int = 72;
153 pub const _SC_LOGIN_NAME_MAX: ::c_int = 73;
154 pub const _SC_THREAD_DESTRUCTOR_ITERATIONS: ::c_int = 74;
155 pub const _SC_THREAD_KEYS_MAX: ::c_int = 75;
156 pub const _SC_THREAD_STACK_MIN: ::c_int = 76;
157 pub const _SC_THREAD_THREADS_MAX: ::c_int = 77;
158 pub const _SC_TTY_NAME_MAX: ::c_int = 78;
159 pub const _SC_THREADS: ::c_int = 79;
160 pub const _SC_THREAD_ATTR_STACKADDR: ::c_int = 80;
161 pub const _SC_THREAD_ATTR_STACKSIZE: ::c_int = 81;
162 pub const _SC_THREAD_PRIORITY_SCHEDULING: ::c_int = 82;
163 pub const _SC_THREAD_PRIO_INHERIT: ::c_int = 83;
164 pub const _SC_THREAD_PRIO_PROTECT: ::c_int = 84;
165 pub const _SC_THREAD_SAFE_FUNCTIONS: ::c_int = 85;
166
167 pub const PTHREAD_STACK_MIN: ::size_t = 8192;
168 pub const PTHREAD_MUTEX_INITIALIZER: pthread_mutex_t = pthread_mutex_t {
169 value: 0,
170 };
171 pub const PTHREAD_COND_INITIALIZER: pthread_cond_t = pthread_cond_t {
172 value: 0,
173 };
174 pub const PTHREAD_RWLOCK_INITIALIZER: pthread_rwlock_t = pthread_rwlock_t {
175 lock: PTHREAD_MUTEX_INITIALIZER,
176 cond: PTHREAD_COND_INITIALIZER,
177 numLocks: 0,
178 writerThreadId: 0,
179 pendingReaders: 0,
180 pendingWriters: 0,
181 reserved: [0 as *mut _; 4],
182 };
183 pub const PTHREAD_MUTEX_RECURSIVE: ::c_int = 1;
184
185 pub const FIOCLEX: ::c_int = 0x5451;
186
187 pub const SA_ONSTACK: ::c_ulong = 0x08000000;
188 pub const SA_SIGINFO: ::c_ulong = 0x00000004;
189 pub const SA_NOCLDWAIT: ::c_ulong = 0x00000002;
190
191 pub const SIGCHLD: ::c_int = 17;
192 pub const SIGBUS: ::c_int = 7;
193 pub const SIG_SETMASK: ::c_int = 2;
194
195 pub const RUSAGE_CHILDREN: ::c_int = -1;
196
197 pub const MAP_ANON: ::c_int = 0x0020;
198 pub const MAP_ANONYMOUS: ::c_int = 0x0020;
199 pub const MAP_GROWSDOWN: ::c_int = 0x0100;
200 pub const MAP_DENYWRITE: ::c_int = 0x0800;
201 pub const MAP_EXECUTABLE: ::c_int = 0x01000;
202 pub const MAP_LOCKED: ::c_int = 0x02000;
203 pub const MAP_NORESERVE: ::c_int = 0x04000;
204 pub const MAP_POPULATE: ::c_int = 0x08000;
205 pub const MAP_NONBLOCK: ::c_int = 0x010000;
206 pub const MAP_STACK: ::c_int = 0x020000;
207
208 pub const EDEADLK: ::c_int = 35;
209 pub const ENAMETOOLONG: ::c_int = 36;
210 pub const ENOLCK: ::c_int = 37;
211 pub const ENOSYS: ::c_int = 38;
212 pub const ENOTEMPTY: ::c_int = 39;
213 pub const ELOOP: ::c_int = 40;
214 pub const ENOMSG: ::c_int = 42;
215 pub const EIDRM: ::c_int = 43;
216 pub const ECHRNG: ::c_int = 44;
217 pub const EL2NSYNC: ::c_int = 45;
218 pub const EL3HLT: ::c_int = 46;
219 pub const EL3RST: ::c_int = 47;
220 pub const ELNRNG: ::c_int = 48;
221 pub const EUNATCH: ::c_int = 49;
222 pub const ENOCSI: ::c_int = 50;
223 pub const EL2HLT: ::c_int = 51;
224 pub const EBADE: ::c_int = 52;
225 pub const EBADR: ::c_int = 53;
226 pub const EXFULL: ::c_int = 54;
227 pub const ENOANO: ::c_int = 55;
228 pub const EBADRQC: ::c_int = 56;
229 pub const EBADSLT: ::c_int = 57;
230
231 pub const EMULTIHOP: ::c_int = 72;
232 pub const EBADMSG: ::c_int = 74;
233 pub const EOVERFLOW: ::c_int = 75;
234 pub const ENOTUNIQ: ::c_int = 76;
235 pub const EBADFD: ::c_int = 77;
236 pub const EREMCHG: ::c_int = 78;
237 pub const ELIBACC: ::c_int = 79;
238 pub const ELIBBAD: ::c_int = 80;
239 pub const ELIBSCN: ::c_int = 81;
240 pub const ELIBMAX: ::c_int = 82;
241 pub const ELIBEXEC: ::c_int = 83;
242 pub const EILSEQ: ::c_int = 84;
243 pub const ERESTART: ::c_int = 85;
244 pub const ESTRPIPE: ::c_int = 86;
245 pub const EUSERS: ::c_int = 87;
246 pub const ENOTSOCK: ::c_int = 88;
247 pub const EDESTADDRREQ: ::c_int = 89;
248 pub const EMSGSIZE: ::c_int = 90;
249 pub const EPROTOTYPE: ::c_int = 91;
250 pub const ENOPROTOOPT: ::c_int = 92;
251 pub const EPROTONOSUPPORT: ::c_int = 93;
252 pub const ESOCKTNOSUPPORT: ::c_int = 94;
253 pub const EOPNOTSUPP: ::c_int = 95;
254 pub const EPFNOSUPPORT: ::c_int = 96;
255 pub const EAFNOSUPPORT: ::c_int = 97;
256 pub const EADDRINUSE: ::c_int = 98;
257 pub const EADDRNOTAVAIL: ::c_int = 99;
258 pub const ENETDOWN: ::c_int = 100;
259 pub const ENETUNREACH: ::c_int = 101;
260 pub const ENETRESET: ::c_int = 102;
261 pub const ECONNABORTED: ::c_int = 103;
262 pub const ECONNRESET: ::c_int = 104;
263 pub const ENOBUFS: ::c_int = 105;
264 pub const EISCONN: ::c_int = 106;
265 pub const ENOTCONN: ::c_int = 107;
266 pub const ESHUTDOWN: ::c_int = 108;
267 pub const ETOOMANYREFS: ::c_int = 109;
268 pub const ETIMEDOUT: ::c_int = 110;
269 pub const ECONNREFUSED: ::c_int = 111;
270 pub const EHOSTDOWN: ::c_int = 112;
271 pub const EHOSTUNREACH: ::c_int = 113;
272 pub const EALREADY: ::c_int = 114;
273 pub const EINPROGRESS: ::c_int = 115;
274 pub const ESTALE: ::c_int = 116;
275 pub const EUCLEAN: ::c_int = 117;
276 pub const ENOTNAM: ::c_int = 118;
277 pub const ENAVAIL: ::c_int = 119;
278 pub const EISNAM: ::c_int = 120;
279 pub const EREMOTEIO: ::c_int = 121;
280 pub const EDQUOT: ::c_int = 122;
281 pub const ENOMEDIUM: ::c_int = 123;
282 pub const EMEDIUMTYPE: ::c_int = 124;
283 pub const ECANCELED: ::c_int = 125;
284 pub const ENOKEY: ::c_int = 126;
285 pub const EKEYEXPIRED: ::c_int = 127;
286 pub const EKEYREVOKED: ::c_int = 128;
287 pub const EKEYREJECTED: ::c_int = 129;
288 pub const EOWNERDEAD: ::c_int = 130;
289 pub const ENOTRECOVERABLE: ::c_int = 131;
290
291 pub const SOCK_STREAM: ::c_int = 1;
292 pub const SOCK_DGRAM: ::c_int = 2;
293
294 pub const SOL_SOCKET: ::c_int = 1;
295
296 pub const SO_REUSEADDR: ::c_int = 2;
297 pub const SO_TYPE: ::c_int = 3;
298 pub const SO_ERROR: ::c_int = 4;
299 pub const SO_DONTROUTE: ::c_int = 5;
300 pub const SO_BROADCAST: ::c_int = 6;
301 pub const SO_SNDBUF: ::c_int = 7;
302 pub const SO_RCVBUF: ::c_int = 8;
303 pub const SO_KEEPALIVE: ::c_int = 9;
304 pub const SO_OOBINLINE: ::c_int = 10;
305 pub const SO_LINGER: ::c_int = 13;
306 pub const SO_RCVLOWAT: ::c_int = 18;
307 pub const SO_SNDLOWAT: ::c_int = 19;
308 pub const SO_RCVTIMEO: ::c_int = 20;
309 pub const SO_SNDTIMEO: ::c_int = 21;
310 pub const SO_ACCEPTCONN: ::c_int = 30;
311
312 pub const O_ACCMODE: ::c_int = 3;
313 pub const O_APPEND: ::c_int = 1024;
314 pub const O_CREAT: ::c_int = 64;
315 pub const O_EXCL: ::c_int = 128;
316 pub const O_NOCTTY: ::c_int = 256;
317 pub const O_NONBLOCK: ::c_int = 2048;
318 pub const O_SYNC: ::c_int = 0x1000;
319
320 pub const NI_MAXHOST: ::size_t = 1025;
321
322 f! {
323 pub fn sigemptyset(set: *mut sigset_t) -> ::c_int {
324 *set = 0;
325 return 0
326 }
327 pub fn sigaddset(set: *mut sigset_t, signum: ::c_int) -> ::c_int {
328 *set |= signum as sigset_t;
329 return 0
330 }
331 pub fn sigfillset(set: *mut sigset_t) -> ::c_int {
332 *set = !0;
333 return 0
334 }
335 pub fn sigdelset(set: *mut sigset_t, signum: ::c_int) -> ::c_int {
336 *set &= !(signum as sigset_t);
337 return 0
338 }
339 pub fn sigismember(set: *const sigset_t, signum: ::c_int) -> ::c_int {
340 (*set & (signum as sigset_t)) as ::c_int
341 }
342 }
343
344 extern {
345 pub fn madvise(addr: *const ::c_void, len: ::size_t, advice: ::c_int)
346 -> ::c_int;
347 pub fn ioctl(fd: ::c_int, request: ::c_int, ...) -> ::c_int;
348 pub fn putenv(string: *const ::c_char) -> ::c_int;
349 pub fn readlink(path: *const ::c_char,
350 buf: *mut ::c_char,
351 bufsz: ::size_t)
352 -> ::c_int;
353 pub fn msync(addr: *const ::c_void, len: ::size_t,
354 flags: ::c_int) -> ::c_int;
355 pub fn mprotect(addr: *const ::c_void, len: ::size_t, prot: ::c_int)
356 -> ::c_int;
357 pub fn sysconf(name: ::c_int) -> ::c_long;
358 pub fn usleep(secs: ::c_ulong) -> ::c_int;
359 pub fn recvfrom(socket: ::c_int, buf: *mut ::c_void, len: ::size_t,
360 flags: ::c_uint, addr: *const ::sockaddr,
361 addrlen: *mut ::socklen_t) -> ::ssize_t;
362 pub fn send(socket: ::c_int, buf: *const ::c_void, len: ::size_t,
363 flags: ::c_uint) -> ::ssize_t;
364 pub fn recv(socket: ::c_int, buf: *mut ::c_void, len: ::size_t,
365 flags: ::c_uint) -> ::ssize_t;
366 pub fn getnameinfo(sa: *const ::sockaddr,
367 salen: ::socklen_t,
368 host: *mut ::c_char,
369 hostlen: ::size_t,
370 serv: *mut ::c_char,
371 sevlen: ::size_t,
372 flags: ::c_int) -> ::c_int;
373 pub fn timegm64(tm: *const ::tm) -> time64_t;
374 }
375
376 cfg_if! {
377 if #[cfg(target_pointer_width = "32")] {
378 mod b32;
379 pub use self::b32::*;
380 } else if #[cfg(target_pointer_width = "64")] {
381 mod b64;
382 pub use self::b64::*;
383 } else {
384 // ...
385 }
386 }
387
388