]> git.proxmox.com Git - cargo.git/blob - vendor/libc/src/unix/uclibc/mod.rs
New upstream version 0.35.0
[cargo.git] / vendor / libc / src / unix / uclibc / mod.rs
1 pub type sa_family_t = u16;
2 pub type pthread_key_t = ::c_uint;
3 pub type speed_t = ::c_uint;
4 pub type tcflag_t = ::c_uint;
5 pub type loff_t = ::c_longlong;
6 pub type clockid_t = ::c_int;
7 pub type key_t = ::c_int;
8 pub type id_t = ::c_uint;
9 pub type useconds_t = u32;
10 pub type dev_t = u64;
11 pub type socklen_t = u32;
12 pub type mode_t = u32;
13 pub type ino64_t = u64;
14 pub type off64_t = i64;
15 pub type blkcnt64_t = i64;
16 pub type rlim64_t = u64;
17 pub type shmatt_t = ::c_ulong;
18 pub type mqd_t = ::c_int;
19 pub type msgqnum_t = ::c_ulong;
20 pub type msglen_t = ::c_ulong;
21 pub type nfds_t = ::c_ulong;
22 pub type nl_item = ::c_int;
23 pub type idtype_t = ::c_uint;
24
25 #[cfg_attr(feature = "extra_traits", derive(Debug))]
26 pub enum fpos64_t {} // TODO: fill this out with a struct
27 impl ::Copy for fpos64_t {}
28 impl ::Clone for fpos64_t {
29 fn clone(&self) -> fpos64_t { *self }
30 }
31
32 #[cfg_attr(feature = "extra_traits", derive(Debug))]
33 pub enum timezone {}
34 impl ::Copy for timezone {}
35 impl ::Clone for timezone {
36 fn clone(&self) -> timezone { *self }
37 }
38
39 s! {
40 pub struct in_addr {
41 pub s_addr: ::in_addr_t,
42 }
43
44 pub struct ip_mreq {
45 pub imr_multiaddr: in_addr,
46 pub imr_interface: in_addr,
47 }
48
49 pub struct sockaddr {
50 pub sa_family: sa_family_t,
51 pub sa_data: [::c_char; 14],
52 }
53
54 pub struct sockaddr_in {
55 pub sin_family: sa_family_t,
56 pub sin_port: ::in_port_t,
57 pub sin_addr: ::in_addr,
58 pub sin_zero: [u8; 8],
59 }
60
61 pub struct sockaddr_in6 {
62 pub sin6_family: sa_family_t,
63 pub sin6_port: ::in_port_t,
64 pub sin6_flowinfo: u32,
65 pub sin6_addr: ::in6_addr,
66 pub sin6_scope_id: u32,
67 }
68
69 pub struct addrinfo {
70 pub ai_flags: ::c_int,
71 pub ai_family: ::c_int,
72 pub ai_socktype: ::c_int,
73 pub ai_protocol: ::c_int,
74 pub ai_addrlen: socklen_t,
75
76 pub ai_addr: *mut ::sockaddr,
77
78 pub ai_canonname: *mut c_char,
79
80 pub ai_next: *mut addrinfo,
81 }
82
83 pub struct sockaddr_nl {
84 pub nl_family: ::sa_family_t,
85 nl_pad: ::c_ushort,
86 pub nl_pid: u32,
87 pub nl_groups: u32
88 }
89
90 pub struct sockaddr_ll {
91 pub sll_family: ::c_ushort,
92 pub sll_protocol: ::c_ushort,
93 pub sll_ifindex: ::c_int,
94 pub sll_hatype: ::c_ushort,
95 pub sll_pkttype: ::c_uchar,
96 pub sll_halen: ::c_uchar,
97 pub sll_addr: [::c_uchar; 8]
98 }
99
100 pub struct fd_set {
101 fds_bits: [::c_ulong; FD_SETSIZE / ULONG_SIZE],
102 }
103
104 pub struct tm {
105 pub tm_sec: ::c_int,
106 pub tm_min: ::c_int,
107 pub tm_hour: ::c_int,
108 pub tm_mday: ::c_int,
109 pub tm_mon: ::c_int,
110 pub tm_year: ::c_int,
111 pub tm_wday: ::c_int,
112 pub tm_yday: ::c_int,
113 pub tm_isdst: ::c_int,
114 pub tm_gmtoff: ::c_long,
115 pub tm_zone: *const ::c_char,
116 }
117
118 pub struct sched_param {
119 pub sched_priority: ::c_int,
120 }
121
122 pub struct Dl_info {
123 pub dli_fname: *const ::c_char,
124 pub dli_fbase: *mut ::c_void,
125 pub dli_sname: *const ::c_char,
126 pub dli_saddr: *mut ::c_void,
127 }
128
129 pub struct lconv {
130 pub decimal_point: *mut ::c_char,
131 pub thousands_sep: *mut ::c_char,
132 pub grouping: *mut ::c_char,
133 pub int_curr_symbol: *mut ::c_char,
134 pub currency_symbol: *mut ::c_char,
135 pub mon_decimal_point: *mut ::c_char,
136 pub mon_thousands_sep: *mut ::c_char,
137 pub mon_grouping: *mut ::c_char,
138 pub positive_sign: *mut ::c_char,
139 pub negative_sign: *mut ::c_char,
140 pub int_frac_digits: ::c_char,
141 pub frac_digits: ::c_char,
142 pub p_cs_precedes: ::c_char,
143 pub p_sep_by_space: ::c_char,
144 pub n_cs_precedes: ::c_char,
145 pub n_sep_by_space: ::c_char,
146 pub p_sign_posn: ::c_char,
147 pub n_sign_posn: ::c_char,
148 pub int_p_cs_precedes: ::c_char,
149 pub int_p_sep_by_space: ::c_char,
150 pub int_n_cs_precedes: ::c_char,
151 pub int_n_sep_by_space: ::c_char,
152 pub int_p_sign_posn: ::c_char,
153 pub int_n_sign_posn: ::c_char,
154 }
155
156 pub struct sigevent {
157 pub sigev_value: ::sigval,
158 pub sigev_signo: ::c_int,
159 pub sigev_notify: ::c_int,
160 // Actually a union. We only expose sigev_notify_thread_id because it's
161 // the most useful member
162 pub sigev_notify_thread_id: ::c_int,
163 #[cfg(target_pointer_width = "64")]
164 __unused1: [::c_int; 11],
165 #[cfg(target_pointer_width = "32")]
166 __unused1: [::c_int; 12]
167 }
168
169 pub struct rlimit64 {
170 pub rlim_cur: rlim64_t,
171 pub rlim_max: rlim64_t,
172 }
173
174 pub struct glob_t {
175 pub gl_pathc: ::size_t,
176 pub gl_pathv: *mut *mut c_char,
177 pub gl_offs: ::size_t,
178 pub gl_flags: ::c_int,
179
180 __unused1: *mut ::c_void,
181 __unused2: *mut ::c_void,
182 __unused3: *mut ::c_void,
183 __unused4: *mut ::c_void,
184 __unused5: *mut ::c_void,
185 }
186
187 pub struct ifaddrs {
188 pub ifa_next: *mut ifaddrs,
189 pub ifa_name: *mut c_char,
190 pub ifa_flags: ::c_uint,
191 pub ifa_addr: *mut ::sockaddr,
192 pub ifa_netmask: *mut ::sockaddr,
193 pub ifa_ifu: *mut ::sockaddr, // FIXME This should be a union
194 pub ifa_data: *mut ::c_void
195 }
196
197 pub struct pthread_rwlockattr_t {
198 __lockkind: ::c_int,
199 __pshared: ::c_int,
200 }
201
202 pub struct passwd {
203 pub pw_name: *mut ::c_char,
204 pub pw_passwd: *mut ::c_char,
205 pub pw_uid: ::uid_t,
206 pub pw_gid: ::gid_t,
207 pub pw_gecos: *mut ::c_char,
208 pub pw_dir: *mut ::c_char,
209 pub pw_shell: *mut ::c_char,
210 }
211
212 pub struct spwd {
213 pub sp_namp: *mut ::c_char,
214 pub sp_pwdp: *mut ::c_char,
215 pub sp_lstchg: ::c_long,
216 pub sp_min: ::c_long,
217 pub sp_max: ::c_long,
218 pub sp_warn: ::c_long,
219 pub sp_inact: ::c_long,
220 pub sp_expire: ::c_long,
221 pub sp_flag: ::c_ulong,
222 }
223
224 pub struct statvfs {
225 pub f_bsize: ::c_ulong,
226 pub f_frsize: ::c_ulong,
227 pub f_blocks: ::fsblkcnt_t,
228 pub f_bfree: ::fsblkcnt_t,
229 pub f_bavail: ::fsblkcnt_t,
230 pub f_files: ::fsfilcnt_t,
231 pub f_ffree: ::fsfilcnt_t,
232 pub f_favail: ::fsfilcnt_t,
233 #[cfg(target_endian = "little")]
234 pub f_fsid: ::c_ulong,
235 #[cfg(target_pointer_width = "32")]
236 __f_unused: ::c_int,
237 #[cfg(target_endian = "big")]
238 pub f_fsid: ::c_ulong,
239 pub f_flag: ::c_ulong,
240 pub f_namemax: ::c_ulong,
241 __f_spare: [::c_int; 6],
242 }
243
244 pub struct dqblk {
245 pub dqb_bhardlimit: ::uint32_t,
246 pub dqb_bsoftlimit: ::uint32_t,
247 pub dqb_curblocks: ::uint32_t,
248 pub dqb_ihardlimit: ::uint32_t,
249 pub dqb_isoftlimit: ::uint32_t,
250 pub dqb_curinodes: ::uint32_t,
251 pub dqb_btime: ::time_t,
252 pub dqb_itime: ::time_t,
253 }
254
255 pub struct signalfd_siginfo {
256 pub ssi_signo: ::uint32_t,
257 pub ssi_errno: ::int32_t,
258 pub ssi_code: ::int32_t,
259 pub ssi_pid: ::uint32_t,
260 pub ssi_uid: ::uint32_t,
261 pub ssi_fd: ::int32_t,
262 pub ssi_tid: ::uint32_t,
263 pub ssi_band: ::uint32_t,
264 pub ssi_overrun: ::uint32_t,
265 pub ssi_trapno: ::uint32_t,
266 pub ssi_status: ::int32_t,
267 pub ssi_int: ::int32_t,
268 pub ssi_ptr: ::uint64_t,
269 pub ssi_utime: ::uint64_t,
270 pub ssi_stime: ::uint64_t,
271 pub ssi_addr: ::uint64_t,
272 pub ssi_addr_lsb: ::uint16_t,
273 _pad2: ::uint16_t,
274 pub ssi_syscall: ::int32_t,
275 pub ssi_call_addr: ::uint64_t,
276 pub ssi_arch: ::uint32_t,
277 _pad: [::uint8_t; 28],
278 }
279
280 pub struct fsid_t {
281 __val: [::c_int; 2],
282 }
283
284 pub struct mq_attr {
285 pub mq_flags: ::c_long,
286 pub mq_maxmsg: ::c_long,
287 pub mq_msgsize: ::c_long,
288 pub mq_curmsgs: ::c_long,
289 pad: [::c_long; 4]
290 }
291
292 pub struct cpu_set_t {
293 #[cfg(target_pointer_width = "32")]
294 bits: [u32; 32],
295 #[cfg(target_pointer_width = "64")]
296 bits: [u64; 16],
297 }
298
299 pub struct if_nameindex {
300 pub if_index: ::c_uint,
301 pub if_name: *mut ::c_char,
302 }
303
304 // System V IPC
305 pub struct msginfo {
306 pub msgpool: ::c_int,
307 pub msgmap: ::c_int,
308 pub msgmax: ::c_int,
309 pub msgmnb: ::c_int,
310 pub msgmni: ::c_int,
311 pub msgssz: ::c_int,
312 pub msgtql: ::c_int,
313 pub msgseg: ::c_ushort,
314 }
315 }
316
317 s_no_extra_traits! {
318 #[cfg_attr(
319 any(target_arch = "x86", target_arch = "x86_64"),
320 repr(packed)
321 )]
322 #[allow(missing_debug_implementations)]
323 pub struct epoll_event {
324 pub events: ::uint32_t,
325 pub u64: ::uint64_t,
326 }
327
328 #[allow(missing_debug_implementations)]
329 pub struct sockaddr_un {
330 pub sun_family: sa_family_t,
331 pub sun_path: [::c_char; 108]
332 }
333
334 #[allow(missing_debug_implementations)]
335 pub struct sockaddr_storage {
336 pub ss_family: sa_family_t,
337 __ss_align: ::size_t,
338 #[cfg(target_pointer_width = "32")]
339 __ss_pad2: [u8; 128 - 2 * 4],
340 #[cfg(target_pointer_width = "64")]
341 __ss_pad2: [u8; 128 - 2 * 8],
342 }
343
344 #[allow(missing_debug_implementations)]
345 pub struct utsname {
346 pub sysname: [::c_char; 65],
347 pub nodename: [::c_char; 65],
348 pub release: [::c_char; 65],
349 pub version: [::c_char; 65],
350 pub machine: [::c_char; 65],
351 pub domainname: [::c_char; 65]
352 }
353
354 #[allow(missing_debug_implementations)]
355 pub struct dirent {
356 pub d_ino: ::ino_t,
357 pub d_off: ::off_t,
358 pub d_reclen: ::c_ushort,
359 pub d_type: ::c_uchar,
360 pub d_name: [::c_char; 256],
361 }
362
363 #[allow(missing_debug_implementations)]
364 pub struct dirent64 {
365 pub d_ino: ::ino64_t,
366 pub d_off: ::off64_t,
367 pub d_reclen: ::c_ushort,
368 pub d_type: ::c_uchar,
369 pub d_name: [::c_char; 256],
370 }
371 }
372
373 // intentionally not public, only used for fd_set
374 cfg_if! {
375 if #[cfg(target_pointer_width = "32")] {
376 const ULONG_SIZE: usize = 32;
377 } else if #[cfg(target_pointer_width = "64")] {
378 const ULONG_SIZE: usize = 64;
379 } else {
380 // Unknown target_pointer_width
381 }
382 }
383
384 pub const EXIT_FAILURE: ::c_int = 1;
385 pub const EXIT_SUCCESS: ::c_int = 0;
386 pub const RAND_MAX: ::c_int = 2147483647;
387 pub const EOF: ::c_int = -1;
388 pub const SEEK_SET: ::c_int = 0;
389 pub const SEEK_CUR: ::c_int = 1;
390 pub const SEEK_END: ::c_int = 2;
391 pub const _IOFBF: ::c_int = 0;
392 pub const _IONBF: ::c_int = 2;
393 pub const _IOLBF: ::c_int = 1;
394
395 pub const F_DUPFD: ::c_int = 0;
396 pub const F_GETFD: ::c_int = 1;
397 pub const F_SETFD: ::c_int = 2;
398 pub const F_GETFL: ::c_int = 3;
399 pub const F_SETFL: ::c_int = 4;
400
401 // Linux-specific fcntls
402 pub const F_SETLEASE: ::c_int = 1024;
403 pub const F_GETLEASE: ::c_int = 1025;
404 pub const F_NOTIFY: ::c_int = 1026;
405 pub const F_DUPFD_CLOEXEC: ::c_int = 1030;
406
407 // TODO(#235): Include file sealing fcntls once we have a way to verify them.
408
409 pub const SIGTRAP: ::c_int = 5;
410
411 pub const PTHREAD_CREATE_JOINABLE: ::c_int = 0;
412 pub const PTHREAD_CREATE_DETACHED: ::c_int = 1;
413
414 pub const CLOCK_REALTIME: ::clockid_t = 0;
415 pub const CLOCK_MONOTONIC: ::clockid_t = 1;
416 pub const CLOCK_PROCESS_CPUTIME_ID: ::clockid_t = 2;
417 pub const CLOCK_THREAD_CPUTIME_ID: ::clockid_t = 3;
418 // TODO(#247) Someday our Travis shall have glibc 2.21 (released in Sep
419 // 2014.) See also musl/mod.rs
420 // pub const CLOCK_SGI_CYCLE: ::clockid_t = 10;
421 // pub const CLOCK_TAI: ::clockid_t = 11;
422 pub const TIMER_ABSTIME: ::c_int = 1;
423
424 pub const RLIMIT_CPU: ::c_int = 0;
425 pub const RLIMIT_FSIZE: ::c_int = 1;
426 pub const RLIMIT_DATA: ::c_int = 2;
427 pub const RLIMIT_STACK: ::c_int = 3;
428 pub const RLIMIT_CORE: ::c_int = 4;
429 pub const RLIMIT_LOCKS: ::c_int = 10;
430 pub const RLIMIT_SIGPENDING: ::c_int = 11;
431 pub const RLIMIT_MSGQUEUE: ::c_int = 12;
432 pub const RLIMIT_NICE: ::c_int = 13;
433 pub const RLIMIT_RTPRIO: ::c_int = 14;
434
435 pub const RUSAGE_SELF: ::c_int = 0;
436
437 pub const O_RDONLY: ::c_int = 0;
438 pub const O_WRONLY: ::c_int = 1;
439 pub const O_RDWR: ::c_int = 2;
440
441 pub const SOCK_CLOEXEC: ::c_int = O_CLOEXEC;
442
443 pub const S_IFIFO: ::mode_t = 4096;
444 pub const S_IFCHR: ::mode_t = 8192;
445 pub const S_IFBLK: ::mode_t = 24576;
446 pub const S_IFDIR: ::mode_t = 16384;
447 pub const S_IFREG: ::mode_t = 32768;
448 pub const S_IFLNK: ::mode_t = 40960;
449 pub const S_IFSOCK: ::mode_t = 49152;
450 pub const S_IFMT: ::mode_t = 61440;
451 pub const S_IRWXU: ::mode_t = 448;
452 pub const S_IXUSR: ::mode_t = 64;
453 pub const S_IWUSR: ::mode_t = 128;
454 pub const S_IRUSR: ::mode_t = 256;
455 pub const S_IRWXG: ::mode_t = 56;
456 pub const S_IXGRP: ::mode_t = 8;
457 pub const S_IWGRP: ::mode_t = 16;
458 pub const S_IRGRP: ::mode_t = 32;
459 pub const S_IRWXO: ::mode_t = 7;
460 pub const S_IXOTH: ::mode_t = 1;
461 pub const S_IWOTH: ::mode_t = 2;
462 pub const S_IROTH: ::mode_t = 4;
463 pub const F_OK: ::c_int = 0;
464 pub const R_OK: ::c_int = 4;
465 pub const W_OK: ::c_int = 2;
466 pub const X_OK: ::c_int = 1;
467 pub const STDIN_FILENO: ::c_int = 0;
468 pub const STDOUT_FILENO: ::c_int = 1;
469 pub const STDERR_FILENO: ::c_int = 2;
470 pub const SIGHUP: ::c_int = 1;
471 pub const SIGINT: ::c_int = 2;
472 pub const SIGQUIT: ::c_int = 3;
473 pub const SIGILL: ::c_int = 4;
474 pub const SIGABRT: ::c_int = 6;
475 pub const SIGFPE: ::c_int = 8;
476 pub const SIGKILL: ::c_int = 9;
477 pub const SIGSEGV: ::c_int = 11;
478 pub const SIGPIPE: ::c_int = 13;
479 pub const SIGALRM: ::c_int = 14;
480 pub const SIGTERM: ::c_int = 15;
481
482 pub const PROT_NONE: ::c_int = 0;
483 pub const PROT_READ: ::c_int = 1;
484 pub const PROT_WRITE: ::c_int = 2;
485 pub const PROT_EXEC: ::c_int = 4;
486
487 pub const LC_CTYPE: ::c_int = 0;
488 pub const LC_NUMERIC: ::c_int = 1;
489 pub const LC_MONETARY: ::c_int = 2;
490 pub const LC_TIME: ::c_int = 3;
491 pub const LC_COLLATE: ::c_int = 4;
492 pub const LC_MESSAGES: ::c_int = 5;
493 pub const LC_ALL: ::c_int = 6;
494 pub const LC_CTYPE_MASK: ::c_int = (1 << LC_CTYPE);
495 pub const LC_NUMERIC_MASK: ::c_int = (1 << LC_NUMERIC);
496 pub const LC_TIME_MASK: ::c_int = (1 << LC_TIME);
497 pub const LC_COLLATE_MASK: ::c_int = (1 << LC_COLLATE);
498 pub const LC_MONETARY_MASK: ::c_int = (1 << LC_MONETARY);
499 pub const LC_MESSAGES_MASK: ::c_int = (1 << LC_MESSAGES);
500 // LC_ALL_MASK defined per platform
501
502 pub const MAP_FILE: ::c_int = 0x0000;
503 pub const MAP_SHARED: ::c_int = 0x0001;
504 pub const MAP_PRIVATE: ::c_int = 0x0002;
505 pub const MAP_FIXED: ::c_int = 0x0010;
506
507 pub const MAP_FAILED: *mut ::c_void = !0 as *mut ::c_void;
508
509 // MS_ flags for msync(2)
510 pub const MS_ASYNC: ::c_int = 0x0001;
511 pub const MS_INVALIDATE: ::c_int = 0x0002;
512 pub const MS_SYNC: ::c_int = 0x0004;
513
514 // MS_ flags for mount(2)
515 pub const MS_RDONLY: ::c_ulong = 0x01;
516 pub const MS_NOSUID: ::c_ulong = 0x02;
517 pub const MS_NODEV: ::c_ulong = 0x04;
518 pub const MS_NOEXEC: ::c_ulong = 0x08;
519 pub const MS_SYNCHRONOUS: ::c_ulong = 0x10;
520 pub const MS_REMOUNT: ::c_ulong = 0x20;
521 pub const MS_MANDLOCK: ::c_ulong = 0x40;
522 pub const MS_NOATIME: ::c_ulong = 0x0400;
523 pub const MS_NODIRATIME: ::c_ulong = 0x0800;
524 pub const MS_BIND: ::c_ulong = 0x1000;
525 pub const MS_NOUSER: ::c_ulong = 0x80000000;
526 pub const MS_MGC_VAL: ::c_ulong = 0xc0ed0000;
527 pub const MS_MGC_MSK: ::c_ulong = 0xffff0000;
528 pub const MS_RMT_MASK: ::c_ulong = 0x800051;
529
530 pub const EPERM: ::c_int = 1;
531 pub const ENOENT: ::c_int = 2;
532 pub const ESRCH: ::c_int = 3;
533 pub const EINTR: ::c_int = 4;
534 pub const EIO: ::c_int = 5;
535 pub const ENXIO: ::c_int = 6;
536 pub const E2BIG: ::c_int = 7;
537 pub const ENOEXEC: ::c_int = 8;
538 pub const EBADF: ::c_int = 9;
539 pub const ECHILD: ::c_int = 10;
540 pub const EAGAIN: ::c_int = 11;
541 pub const ENOMEM: ::c_int = 12;
542 pub const EACCES: ::c_int = 13;
543 pub const EFAULT: ::c_int = 14;
544 pub const ENOTBLK: ::c_int = 15;
545 pub const EBUSY: ::c_int = 16;
546 pub const EEXIST: ::c_int = 17;
547 pub const EXDEV: ::c_int = 18;
548 pub const ENODEV: ::c_int = 19;
549 pub const ENOTDIR: ::c_int = 20;
550 pub const EISDIR: ::c_int = 21;
551 pub const EINVAL: ::c_int = 22;
552 pub const ENFILE: ::c_int = 23;
553 pub const EMFILE: ::c_int = 24;
554 pub const ENOTTY: ::c_int = 25;
555 pub const ETXTBSY: ::c_int = 26;
556 pub const EFBIG: ::c_int = 27;
557 pub const ENOSPC: ::c_int = 28;
558 pub const ESPIPE: ::c_int = 29;
559 pub const EROFS: ::c_int = 30;
560 pub const EMLINK: ::c_int = 31;
561 pub const EPIPE: ::c_int = 32;
562 pub const EDOM: ::c_int = 33;
563 pub const ERANGE: ::c_int = 34;
564 pub const EWOULDBLOCK: ::c_int = EAGAIN;
565
566 pub const SCM_RIGHTS: ::c_int = 0x01;
567 pub const SCM_CREDENTIALS: ::c_int = 0x02;
568
569 // netinet/in.h
570 // NOTE: These are in addition to the constants defined in src/unix/mod.rs
571
572 // IPPROTO_IP defined in src/unix/mod.rs
573 /// Hop-by-hop option header
574 pub const IPPROTO_HOPOPTS: ::c_int = 0;
575 // IPPROTO_ICMP defined in src/unix/mod.rs
576 /// group mgmt protocol
577 pub const IPPROTO_IGMP: ::c_int = 2;
578 /// for compatibility
579 pub const IPPROTO_IPIP: ::c_int = 4;
580 // IPPROTO_TCP defined in src/unix/mod.rs
581 /// exterior gateway protocol
582 pub const IPPROTO_EGP: ::c_int = 8;
583 /// pup
584 pub const IPPROTO_PUP: ::c_int = 12;
585 // IPPROTO_UDP defined in src/unix/mod.rs
586 /// xns idp
587 pub const IPPROTO_IDP: ::c_int = 22;
588 /// tp-4 w/ class negotiation
589 pub const IPPROTO_TP: ::c_int = 29;
590 /// DCCP
591 pub const IPPROTO_DCCP: ::c_int = 33;
592 // IPPROTO_IPV6 defined in src/unix/mod.rs
593 /// IP6 routing header
594 pub const IPPROTO_ROUTING: ::c_int = 43;
595 /// IP6 fragmentation header
596 pub const IPPROTO_FRAGMENT: ::c_int = 44;
597 /// resource reservation
598 pub const IPPROTO_RSVP: ::c_int = 46;
599 /// General Routing Encap.
600 pub const IPPROTO_GRE: ::c_int = 47;
601 /// IP6 Encap Sec. Payload
602 pub const IPPROTO_ESP: ::c_int = 50;
603 /// IP6 Auth Header
604 pub const IPPROTO_AH: ::c_int = 51;
605 // IPPROTO_ICMPV6 defined in src/unix/mod.rs
606 /// IP6 no next header
607 pub const IPPROTO_NONE: ::c_int = 59;
608 /// IP6 destination option
609 pub const IPPROTO_DSTOPTS: ::c_int = 60;
610 pub const IPPROTO_MTP: ::c_int = 92;
611 pub const IPPROTO_BEETPH: ::c_int = 94;
612 /// encapsulation header
613 pub const IPPROTO_ENCAP: ::c_int = 98;
614 /// Protocol indep. multicast
615 pub const IPPROTO_PIM: ::c_int = 103;
616 /// IP Payload Comp. Protocol
617 pub const IPPROTO_COMP: ::c_int = 108;
618 /// SCTP
619 pub const IPPROTO_SCTP: ::c_int = 132;
620 pub const IPPROTO_MH: ::c_int = 135;
621 pub const IPPROTO_UDPLITE: ::c_int = 136;
622 pub const IPPROTO_MPLS: ::c_int = 137;
623 /// raw IP packet
624 pub const IPPROTO_RAW: ::c_int = 255;
625 pub const IPPROTO_MAX: ::c_int = 256;
626
627 pub const PROT_GROWSDOWN: ::c_int = 0x1000000;
628 pub const PROT_GROWSUP: ::c_int = 0x2000000;
629
630 pub const MAP_TYPE: ::c_int = 0x000f;
631
632 pub const MADV_NORMAL: ::c_int = 0;
633 pub const MADV_RANDOM: ::c_int = 1;
634 pub const MADV_SEQUENTIAL: ::c_int = 2;
635 pub const MADV_WILLNEED: ::c_int = 3;
636 pub const MADV_DONTNEED: ::c_int = 4;
637 pub const MADV_REMOVE: ::c_int = 9;
638 pub const MADV_DONTFORK: ::c_int = 10;
639 pub const MADV_DOFORK: ::c_int = 11;
640 pub const MADV_MERGEABLE: ::c_int = 12;
641 pub const MADV_UNMERGEABLE: ::c_int = 13;
642 pub const MADV_HWPOISON: ::c_int = 100;
643
644 // https://github.com/kraj/uClibc/blob/master/include/net/if.h#L44
645 pub const IFF_UP: ::c_int = 0x1; // Interface is up.
646 pub const IFF_BROADCAST: ::c_int = 0x2; // Broadcast address valid.
647 pub const IFF_DEBUG: ::c_int = 0x4; // Turn on debugging.
648 pub const IFF_LOOPBACK: ::c_int = 0x8; // Is a loopback net.
649 pub const IFF_POINTOPOINT: ::c_int = 0x10; // Interface is point-to-point link.
650 pub const IFF_NOTRAILERS: ::c_int = 0x20; // Avoid use of trailers.
651 pub const IFF_RUNNING: ::c_int = 0x40; // Resources allocated.
652 pub const IFF_NOARP: ::c_int = 0x80; // No address resolution protocol.
653 pub const IFF_PROMISC: ::c_int = 0x100; // Receive all packets.
654 // Not supported
655 pub const IFF_ALLMULTI: ::c_int = 0x200; // Receive all multicast packets.
656 pub const IFF_MASTER: ::c_int = 0x400; // Master of a load balancer.
657 pub const IFF_SLAVE: ::c_int = 0x800; // Slave of a load balancer.
658 pub const IFF_MULTICAST: ::c_int = 0x1000; // Supports multicast.
659 pub const IFF_PORTSEL: ::c_int = 0x2000; // Can set media type.
660 pub const IFF_AUTOMEDIA: ::c_int = 0x4000; // Auto media select active.
661 // Dialup device with changing addresses.
662 pub const IFF_DYNAMIC: ::c_int = 0x8000;
663
664 pub const SOL_IP: ::c_int = 0;
665 pub const SOL_TCP: ::c_int = 6;
666 pub const SOL_IPV6: ::c_int = 41;
667 pub const SOL_ICMPV6: ::c_int = 58;
668 pub const SOL_RAW: ::c_int = 255;
669 pub const SOL_DECNET: ::c_int = 261;
670 pub const SOL_X25: ::c_int = 262;
671 pub const SOL_PACKET: ::c_int = 263;
672 pub const SOL_ATM: ::c_int = 264;
673 pub const SOL_AAL: ::c_int = 265;
674 pub const SOL_IRDA: ::c_int = 266;
675
676 pub const AF_UNSPEC: ::c_int = 0;
677 pub const AF_UNIX: ::c_int = 1;
678 pub const AF_LOCAL: ::c_int = 1;
679 pub const AF_INET: ::c_int = 2;
680 pub const AF_AX25: ::c_int = 3;
681 pub const AF_IPX: ::c_int = 4;
682 pub const AF_APPLETALK: ::c_int = 5;
683 pub const AF_NETROM: ::c_int = 6;
684 pub const AF_BRIDGE: ::c_int = 7;
685 pub const AF_ATMPVC: ::c_int = 8;
686 pub const AF_X25: ::c_int = 9;
687 pub const AF_INET6: ::c_int = 10;
688 pub const AF_ROSE: ::c_int = 11;
689 pub const AF_DECnet: ::c_int = 12;
690 pub const AF_NETBEUI: ::c_int = 13;
691 pub const AF_SECURITY: ::c_int = 14;
692 pub const AF_KEY: ::c_int = 15;
693 pub const AF_NETLINK: ::c_int = 16;
694 pub const AF_ROUTE: ::c_int = AF_NETLINK;
695 pub const AF_PACKET: ::c_int = 17;
696 pub const AF_ASH: ::c_int = 18;
697 pub const AF_ECONET: ::c_int = 19;
698 pub const AF_ATMSVC: ::c_int = 20;
699 pub const AF_SNA: ::c_int = 22;
700 pub const AF_IRDA: ::c_int = 23;
701 pub const AF_PPPOX: ::c_int = 24;
702 pub const AF_WANPIPE: ::c_int = 25;
703 pub const AF_LLC: ::c_int = 26;
704 pub const AF_CAN: ::c_int = 29;
705 pub const AF_TIPC: ::c_int = 30;
706 pub const AF_BLUETOOTH: ::c_int = 31;
707 pub const AF_IUCV: ::c_int = 32;
708 pub const AF_RXRPC: ::c_int = 33;
709 pub const AF_ISDN: ::c_int = 34;
710 pub const AF_PHONET: ::c_int = 35;
711 pub const AF_IEEE802154: ::c_int = 36;
712 pub const AF_CAIF: ::c_int = 37;
713 pub const AF_ALG: ::c_int = 38;
714
715 pub const PF_UNSPEC: ::c_int = AF_UNSPEC;
716 pub const PF_UNIX: ::c_int = AF_UNIX;
717 pub const PF_LOCAL: ::c_int = AF_LOCAL;
718 pub const PF_INET: ::c_int = AF_INET;
719 pub const PF_AX25: ::c_int = AF_AX25;
720 pub const PF_IPX: ::c_int = AF_IPX;
721 pub const PF_APPLETALK: ::c_int = AF_APPLETALK;
722 pub const PF_NETROM: ::c_int = AF_NETROM;
723 pub const PF_BRIDGE: ::c_int = AF_BRIDGE;
724 pub const PF_ATMPVC: ::c_int = AF_ATMPVC;
725 pub const PF_X25: ::c_int = AF_X25;
726 pub const PF_INET6: ::c_int = AF_INET6;
727 pub const PF_ROSE: ::c_int = AF_ROSE;
728 pub const PF_DECnet: ::c_int = AF_DECnet;
729 pub const PF_NETBEUI: ::c_int = AF_NETBEUI;
730 pub const PF_SECURITY: ::c_int = AF_SECURITY;
731 pub const PF_KEY: ::c_int = AF_KEY;
732 pub const PF_NETLINK: ::c_int = AF_NETLINK;
733 pub const PF_ROUTE: ::c_int = AF_ROUTE;
734 pub const PF_PACKET: ::c_int = AF_PACKET;
735 pub const PF_ASH: ::c_int = AF_ASH;
736 pub const PF_ECONET: ::c_int = AF_ECONET;
737 pub const PF_ATMSVC: ::c_int = AF_ATMSVC;
738 pub const PF_SNA: ::c_int = AF_SNA;
739 pub const PF_IRDA: ::c_int = AF_IRDA;
740 pub const PF_PPPOX: ::c_int = AF_PPPOX;
741 pub const PF_WANPIPE: ::c_int = AF_WANPIPE;
742 pub const PF_LLC: ::c_int = AF_LLC;
743 pub const PF_CAN: ::c_int = AF_CAN;
744 pub const PF_TIPC: ::c_int = AF_TIPC;
745 pub const PF_BLUETOOTH: ::c_int = AF_BLUETOOTH;
746 pub const PF_IUCV: ::c_int = AF_IUCV;
747 pub const PF_RXRPC: ::c_int = AF_RXRPC;
748 pub const PF_ISDN: ::c_int = AF_ISDN;
749 pub const PF_PHONET: ::c_int = AF_PHONET;
750 pub const PF_IEEE802154: ::c_int = AF_IEEE802154;
751 pub const PF_CAIF: ::c_int = AF_CAIF;
752 pub const PF_ALG: ::c_int = AF_ALG;
753
754 pub const SOMAXCONN: ::c_int = 128;
755
756 pub const MSG_OOB: ::c_int = 1;
757 pub const MSG_PEEK: ::c_int = 2;
758 pub const MSG_DONTROUTE: ::c_int = 4;
759 pub const MSG_CTRUNC: ::c_int = 8;
760 pub const MSG_TRUNC: ::c_int = 0x20;
761 pub const MSG_DONTWAIT: ::c_int = 0x40;
762 pub const MSG_EOR: ::c_int = 0x80;
763 pub const MSG_WAITALL: ::c_int = 0x100;
764 pub const MSG_FIN: ::c_int = 0x200;
765 pub const MSG_SYN: ::c_int = 0x400;
766 pub const MSG_CONFIRM: ::c_int = 0x800;
767 pub const MSG_RST: ::c_int = 0x1000;
768 pub const MSG_ERRQUEUE: ::c_int = 0x2000;
769 pub const MSG_NOSIGNAL: ::c_int = 0x4000;
770 pub const MSG_MORE: ::c_int = 0x8000;
771 pub const MSG_WAITFORONE: ::c_int = 0x10000;
772 pub const MSG_CMSG_CLOEXEC: ::c_int = 0x40000000;
773
774 pub const SOCK_RAW: ::c_int = 3;
775 pub const IP_MULTICAST_TTL: ::c_int = 33;
776 pub const IP_MULTICAST_LOOP: ::c_int = 34;
777 pub const IP_TTL: ::c_int = 2;
778 pub const IP_HDRINCL: ::c_int = 3;
779 pub const IP_ADD_MEMBERSHIP: ::c_int = 35;
780 pub const IP_DROP_MEMBERSHIP: ::c_int = 36;
781 pub const IPV6_ADD_MEMBERSHIP: ::c_int = 20;
782 pub const IPV6_DROP_MEMBERSHIP: ::c_int = 21;
783
784 pub const IPV6_JOIN_GROUP: ::c_int = 20;
785 pub const IPV6_LEAVE_GROUP: ::c_int = 21;
786
787 pub const TCP_NODELAY: ::c_int = 1;
788 pub const TCP_MAXSEG: ::c_int = 2;
789 pub const TCP_CORK: ::c_int = 3;
790 pub const TCP_KEEPIDLE: ::c_int = 4;
791 pub const TCP_KEEPINTVL: ::c_int = 5;
792 pub const TCP_KEEPCNT: ::c_int = 6;
793 pub const TCP_SYNCNT: ::c_int = 7;
794 pub const TCP_LINGER2: ::c_int = 8;
795 pub const TCP_DEFER_ACCEPT: ::c_int = 9;
796 pub const TCP_WINDOW_CLAMP: ::c_int = 10;
797 pub const TCP_INFO: ::c_int = 11;
798 pub const TCP_QUICKACK: ::c_int = 12;
799 pub const TCP_CONGESTION: ::c_int = 13;
800
801 pub const IPV6_MULTICAST_LOOP: ::c_int = 19;
802 pub const IPV6_V6ONLY: ::c_int = 26;
803
804 pub const SO_DEBUG: ::c_int = 1;
805
806 pub const SHUT_RD: ::c_int = 0;
807 pub const SHUT_WR: ::c_int = 1;
808 pub const SHUT_RDWR: ::c_int = 2;
809
810 pub const LOCK_SH: ::c_int = 1;
811 pub const LOCK_EX: ::c_int = 2;
812 pub const LOCK_NB: ::c_int = 4;
813 pub const LOCK_UN: ::c_int = 8;
814
815 pub const SS_ONSTACK: ::c_int = 1;
816 pub const SS_DISABLE: ::c_int = 2;
817
818 pub const PATH_MAX: ::c_int = 4096;
819
820 pub const FD_SETSIZE: usize = 1024;
821
822 pub const EPOLLIN: ::c_int = 0x1;
823 pub const EPOLLPRI: ::c_int = 0x2;
824 pub const EPOLLOUT: ::c_int = 0x4;
825 pub const EPOLLRDNORM: ::c_int = 0x40;
826 pub const EPOLLRDBAND: ::c_int = 0x80;
827 pub const EPOLLWRNORM: ::c_int = 0x100;
828 pub const EPOLLWRBAND: ::c_int = 0x200;
829 pub const EPOLLMSG: ::c_int = 0x400;
830 pub const EPOLLERR: ::c_int = 0x8;
831 pub const EPOLLHUP: ::c_int = 0x10;
832 pub const EPOLLET: ::c_int = 0x80000000;
833
834 pub const EPOLL_CTL_ADD: ::c_int = 1;
835 pub const EPOLL_CTL_MOD: ::c_int = 3;
836 pub const EPOLL_CTL_DEL: ::c_int = 2;
837
838 pub const MNT_DETACH: ::c_int = 0x2;
839 pub const MNT_EXPIRE: ::c_int = 0x4;
840
841 pub const MNT_FORCE: ::c_int = 0x1;
842
843 pub const Q_SYNC: ::c_int = 0x600;
844 pub const Q_QUOTAON: ::c_int = 0x100;
845 pub const Q_QUOTAOFF: ::c_int = 0x200;
846 pub const Q_GETQUOTA: ::c_int = 0x300;
847 pub const Q_SETQUOTA: ::c_int = 0x400;
848
849 pub const TCIOFF: ::c_int = 2;
850 pub const TCION: ::c_int = 3;
851 pub const TCOOFF: ::c_int = 0;
852 pub const TCOON: ::c_int = 1;
853 pub const TCIFLUSH: ::c_int = 0;
854 pub const TCOFLUSH: ::c_int = 1;
855 pub const TCIOFLUSH: ::c_int = 2;
856 pub const NL0: ::c_int = 0x00000000;
857 pub const NL1: ::c_int = 0x00000100;
858 pub const TAB0: ::c_int = 0x00000000;
859 pub const CR0: ::c_int = 0x00000000;
860 pub const FF0: ::c_int = 0x00000000;
861 pub const BS0: ::c_int = 0x00000000;
862 pub const VT0: ::c_int = 0x00000000;
863 pub const VERASE: usize = 2;
864 pub const VKILL: usize = 3;
865 pub const VINTR: usize = 0;
866 pub const VQUIT: usize = 1;
867 pub const VLNEXT: usize = 15;
868 pub const IGNBRK: ::tcflag_t = 0x00000001;
869 pub const BRKINT: ::tcflag_t = 0x00000002;
870 pub const IGNPAR: ::tcflag_t = 0x00000004;
871 pub const PARMRK: ::tcflag_t = 0x00000008;
872 pub const INPCK: ::tcflag_t = 0x00000010;
873 pub const ISTRIP: ::tcflag_t = 0x00000020;
874 pub const INLCR: ::tcflag_t = 0x00000040;
875 pub const IGNCR: ::tcflag_t = 0x00000080;
876 pub const ICRNL: ::tcflag_t = 0x00000100;
877 pub const IXANY: ::tcflag_t = 0x00000800;
878 pub const IMAXBEL: ::tcflag_t = 0x00002000;
879 pub const OPOST: ::tcflag_t = 0x1;
880 pub const CS5: ::tcflag_t = 0x00000000;
881 pub const CRTSCTS: ::tcflag_t = 0x80000000;
882 pub const ECHO: ::tcflag_t = 0x00000008;
883
884 pub const CLONE_VM: ::c_int = 0x100;
885 pub const CLONE_FS: ::c_int = 0x200;
886 pub const CLONE_FILES: ::c_int = 0x400;
887 pub const CLONE_SIGHAND: ::c_int = 0x800;
888 pub const CLONE_PTRACE: ::c_int = 0x2000;
889 pub const CLONE_VFORK: ::c_int = 0x4000;
890 pub const CLONE_PARENT: ::c_int = 0x8000;
891 pub const CLONE_THREAD: ::c_int = 0x10000;
892 pub const CLONE_NEWNS: ::c_int = 0x20000;
893 pub const CLONE_SYSVSEM: ::c_int = 0x40000;
894 pub const CLONE_SETTLS: ::c_int = 0x80000;
895 pub const CLONE_PARENT_SETTID: ::c_int = 0x100000;
896 pub const CLONE_CHILD_CLEARTID: ::c_int = 0x200000;
897 pub const CLONE_DETACHED: ::c_int = 0x400000;
898 pub const CLONE_UNTRACED: ::c_int = 0x800000;
899 pub const CLONE_CHILD_SETTID: ::c_int = 0x01000000;
900 pub const CLONE_NEWUTS: ::c_int = 0x04000000;
901 pub const CLONE_NEWIPC: ::c_int = 0x08000000;
902 pub const CLONE_NEWUSER: ::c_int = 0x10000000;
903 pub const CLONE_NEWPID: ::c_int = 0x20000000;
904 pub const CLONE_NEWNET: ::c_int = 0x40000000;
905 pub const CLONE_IO: ::c_int = 0x80000000;
906
907 pub const WNOHANG: ::c_int = 0x00000001;
908 pub const WUNTRACED: ::c_int = 0x00000002;
909 pub const WSTOPPED: ::c_int = WUNTRACED;
910 pub const WEXITED: ::c_int = 0x00000004;
911 pub const WCONTINUED: ::c_int = 0x00000008;
912 pub const WNOWAIT: ::c_int = 0x01000000;
913
914 pub const __WNOTHREAD: ::c_int = 0x20000000;
915 pub const __WALL: ::c_int = 0x40000000;
916 pub const __WCLONE: ::c_int = 0x80000000;
917
918 pub const SPLICE_F_MOVE: ::c_uint = 0x01;
919 pub const SPLICE_F_NONBLOCK: ::c_uint = 0x02;
920 pub const SPLICE_F_MORE: ::c_uint = 0x04;
921 pub const SPLICE_F_GIFT: ::c_uint = 0x08;
922
923 pub const RTLD_LOCAL: ::c_int = 0;
924 pub const RTLD_LAZY: ::c_int = 1;
925
926 pub const POSIX_FADV_NORMAL: ::c_int = 0;
927 pub const POSIX_FADV_RANDOM: ::c_int = 1;
928 pub const POSIX_FADV_SEQUENTIAL: ::c_int = 2;
929 pub const POSIX_FADV_WILLNEED: ::c_int = 3;
930
931 pub const AT_FDCWD: ::c_int = -100;
932 pub const AT_SYMLINK_NOFOLLOW: ::c_int = 0x100;
933 pub const AT_REMOVEDIR: ::c_int = 0x200;
934 pub const AT_SYMLINK_FOLLOW: ::c_int = 0x400;
935
936 pub const LOG_CRON: ::c_int = 9 << 3;
937 pub const LOG_AUTHPRIV: ::c_int = 10 << 3;
938 pub const LOG_FTP: ::c_int = 11 << 3;
939 pub const LOG_PERROR: ::c_int = 0x20;
940
941 pub const POLLIN: ::c_short = 0x1;
942 pub const POLLPRI: ::c_short = 0x2;
943 pub const POLLOUT: ::c_short = 0x4;
944 pub const POLLERR: ::c_short = 0x8;
945 pub const POLLHUP: ::c_short = 0x10;
946 pub const POLLNVAL: ::c_short = 0x20;
947
948 pub const PIPE_BUF: usize = 4096;
949
950 pub const SI_LOAD_SHIFT: ::c_uint = 16;
951
952 pub const SIGEV_SIGNAL: ::c_int = 0;
953 pub const SIGEV_NONE: ::c_int = 1;
954 pub const SIGEV_THREAD: ::c_int = 2;
955
956 pub const P_ALL: idtype_t = 0;
957 pub const P_PID: idtype_t = 1;
958 pub const P_PGID: idtype_t = 2;
959
960 pub const UTIME_OMIT: c_long = 1073741822;
961 pub const UTIME_NOW: c_long = 1073741823;
962
963 pub const L_tmpnam: ::c_uint = 20;
964 pub const _PC_LINK_MAX: ::c_int = 0;
965 pub const _PC_MAX_CANON: ::c_int = 1;
966 pub const _PC_MAX_INPUT: ::c_int = 2;
967 pub const _PC_NAME_MAX: ::c_int = 3;
968 pub const _PC_PATH_MAX: ::c_int = 4;
969 pub const _PC_PIPE_BUF: ::c_int = 5;
970 pub const _PC_CHOWN_RESTRICTED: ::c_int = 6;
971 pub const _PC_NO_TRUNC: ::c_int = 7;
972 pub const _PC_VDISABLE: ::c_int = 8;
973
974 pub const _SC_ARG_MAX: ::c_int = 0;
975 pub const _SC_CHILD_MAX: ::c_int = 1;
976 pub const _SC_CLK_TCK: ::c_int = 2;
977 pub const _SC_NGROUPS_MAX: ::c_int = 3;
978 pub const _SC_OPEN_MAX: ::c_int = 4;
979 pub const _SC_STREAM_MAX: ::c_int = 5;
980 pub const _SC_TZNAME_MAX: ::c_int = 6;
981 pub const _SC_JOB_CONTROL: ::c_int = 7;
982 pub const _SC_SAVED_IDS: ::c_int = 8;
983 pub const _SC_REALTIME_SIGNALS: ::c_int = 9;
984 pub const _SC_PRIORITY_SCHEDULING: ::c_int = 10;
985 pub const _SC_TIMERS: ::c_int = 11;
986 pub const _SC_ASYNCHRONOUS_IO: ::c_int = 12;
987 pub const _SC_PRIORITIZED_IO: ::c_int = 13;
988 pub const _SC_SYNCHRONIZED_IO: ::c_int = 14;
989 pub const _SC_FSYNC: ::c_int = 15;
990 pub const _SC_MAPPED_FILES: ::c_int = 16;
991 pub const _SC_MEMLOCK: ::c_int = 17;
992 pub const _SC_MEMLOCK_RANGE: ::c_int = 18;
993 pub const _SC_MEMORY_PROTECTION: ::c_int = 19;
994 pub const _SC_MESSAGE_PASSING: ::c_int = 20;
995 pub const _SC_SEMAPHORES: ::c_int = 21;
996 pub const _SC_SHARED_MEMORY_OBJECTS: ::c_int = 22;
997 pub const _SC_AIO_LISTIO_MAX: ::c_int = 23;
998 pub const _SC_AIO_MAX: ::c_int = 24;
999 pub const _SC_AIO_PRIO_DELTA_MAX: ::c_int = 25;
1000 pub const _SC_DELAYTIMER_MAX: ::c_int = 26;
1001 pub const _SC_MQ_OPEN_MAX: ::c_int = 27;
1002 pub const _SC_MQ_PRIO_MAX: ::c_int = 28;
1003 pub const _SC_VERSION: ::c_int = 29;
1004 pub const _SC_PAGESIZE: ::c_int = 30;
1005 pub const _SC_PAGE_SIZE: ::c_int = _SC_PAGESIZE;
1006 pub const _SC_RTSIG_MAX: ::c_int = 31;
1007 pub const _SC_SEM_NSEMS_MAX: ::c_int = 32;
1008 pub const _SC_SEM_VALUE_MAX: ::c_int = 33;
1009 pub const _SC_SIGQUEUE_MAX: ::c_int = 34;
1010 pub const _SC_TIMER_MAX: ::c_int = 35;
1011 pub const _SC_BC_BASE_MAX: ::c_int = 36;
1012 pub const _SC_BC_DIM_MAX: ::c_int = 37;
1013 pub const _SC_BC_SCALE_MAX: ::c_int = 38;
1014 pub const _SC_BC_STRING_MAX: ::c_int = 39;
1015 pub const _SC_COLL_WEIGHTS_MAX: ::c_int = 40;
1016 pub const _SC_EXPR_NEST_MAX: ::c_int = 42;
1017 pub const _SC_LINE_MAX: ::c_int = 43;
1018 pub const _SC_RE_DUP_MAX: ::c_int = 44;
1019 pub const _SC_2_VERSION: ::c_int = 46;
1020 pub const _SC_2_C_BIND: ::c_int = 47;
1021 pub const _SC_2_C_DEV: ::c_int = 48;
1022 pub const _SC_2_FORT_DEV: ::c_int = 49;
1023 pub const _SC_2_FORT_RUN: ::c_int = 50;
1024 pub const _SC_2_SW_DEV: ::c_int = 51;
1025 pub const _SC_2_LOCALEDEF: ::c_int = 52;
1026 pub const _SC_IOV_MAX: ::c_int = 60;
1027 pub const _SC_THREADS: ::c_int = 67;
1028 pub const _SC_THREAD_SAFE_FUNCTIONS: ::c_int = 68;
1029 pub const _SC_GETGR_R_SIZE_MAX: ::c_int = 69;
1030 pub const _SC_GETPW_R_SIZE_MAX: ::c_int = 70;
1031 pub const _SC_LOGIN_NAME_MAX: ::c_int = 71;
1032 pub const _SC_TTY_NAME_MAX: ::c_int = 72;
1033 pub const _SC_THREAD_DESTRUCTOR_ITERATIONS: ::c_int = 73;
1034 pub const _SC_THREAD_KEYS_MAX: ::c_int = 74;
1035 pub const _SC_THREAD_STACK_MIN: ::c_int = 75;
1036 pub const _SC_THREAD_THREADS_MAX: ::c_int = 76;
1037 pub const _SC_THREAD_ATTR_STACKADDR: ::c_int = 77;
1038 pub const _SC_THREAD_ATTR_STACKSIZE: ::c_int = 78;
1039 pub const _SC_THREAD_PRIORITY_SCHEDULING: ::c_int = 79;
1040 pub const _SC_THREAD_PRIO_INHERIT: ::c_int = 80;
1041 pub const _SC_THREAD_PRIO_PROTECT: ::c_int = 81;
1042 pub const _SC_NPROCESSORS_ONLN: ::c_int = 84;
1043 pub const _SC_ATEXIT_MAX: ::c_int = 87;
1044 pub const _SC_XOPEN_VERSION: ::c_int = 89;
1045 pub const _SC_XOPEN_XCU_VERSION: ::c_int = 90;
1046 pub const _SC_XOPEN_UNIX: ::c_int = 91;
1047 pub const _SC_XOPEN_CRYPT: ::c_int = 92;
1048 pub const _SC_XOPEN_ENH_I18N: ::c_int = 93;
1049 pub const _SC_XOPEN_SHM: ::c_int = 94;
1050 pub const _SC_2_CHAR_TERM: ::c_int = 95;
1051 pub const _SC_2_UPE: ::c_int = 97;
1052 pub const _SC_XBS5_ILP32_OFF32: ::c_int = 125;
1053 pub const _SC_XBS5_ILP32_OFFBIG: ::c_int = 126;
1054 pub const _SC_XBS5_LPBIG_OFFBIG: ::c_int = 128;
1055 pub const _SC_XOPEN_LEGACY: ::c_int = 129;
1056 pub const _SC_XOPEN_REALTIME: ::c_int = 130;
1057 pub const _SC_XOPEN_REALTIME_THREADS: ::c_int = 131;
1058 pub const _SC_HOST_NAME_MAX: ::c_int = 180;
1059
1060 pub const RLIM_SAVED_MAX: ::rlim_t = RLIM_INFINITY;
1061 pub const RLIM_SAVED_CUR: ::rlim_t = RLIM_INFINITY;
1062
1063 pub const GLOB_ERR: ::c_int = 1 << 0;
1064 pub const GLOB_MARK: ::c_int = 1 << 1;
1065 pub const GLOB_NOSORT: ::c_int = 1 << 2;
1066 pub const GLOB_DOOFFS: ::c_int = 1 << 3;
1067 pub const GLOB_NOCHECK: ::c_int = 1 << 4;
1068 pub const GLOB_APPEND: ::c_int = 1 << 5;
1069 pub const GLOB_NOESCAPE: ::c_int = 1 << 6;
1070
1071 pub const GLOB_NOSPACE: ::c_int = 1;
1072 pub const GLOB_ABORTED: ::c_int = 2;
1073 pub const GLOB_NOMATCH: ::c_int = 3;
1074
1075 pub const POSIX_MADV_NORMAL: ::c_int = 0;
1076 pub const POSIX_MADV_RANDOM: ::c_int = 1;
1077 pub const POSIX_MADV_SEQUENTIAL: ::c_int = 2;
1078 pub const POSIX_MADV_WILLNEED: ::c_int = 3;
1079
1080 pub const S_IEXEC: mode_t = 64;
1081 pub const S_IWRITE: mode_t = 128;
1082 pub const S_IREAD: mode_t = 256;
1083
1084 pub const F_LOCK: ::c_int = 1;
1085 pub const F_TEST: ::c_int = 3;
1086 pub const F_TLOCK: ::c_int = 2;
1087 pub const F_ULOCK: ::c_int = 0;
1088
1089 pub const ST_RDONLY: ::c_ulong = 1;
1090 pub const ST_NOSUID: ::c_ulong = 2;
1091 pub const ST_NODEV: ::c_ulong = 4;
1092 pub const ST_NOEXEC: ::c_ulong = 8;
1093 pub const ST_SYNCHRONOUS: ::c_ulong = 16;
1094 pub const ST_MANDLOCK: ::c_ulong = 64;
1095 pub const ST_WRITE: ::c_ulong = 128;
1096 pub const ST_APPEND: ::c_ulong = 256;
1097 pub const ST_IMMUTABLE: ::c_ulong = 512;
1098 pub const ST_NOATIME: ::c_ulong = 1024;
1099 pub const ST_NODIRATIME: ::c_ulong = 2048;
1100
1101 pub const RTLD_NEXT: *mut ::c_void = -1i64 as *mut ::c_void;
1102 pub const RTLD_DEFAULT: *mut ::c_void = 0i64 as *mut ::c_void;
1103 pub const RTLD_NODELETE: ::c_int = 0x1000;
1104 pub const RTLD_NOW: ::c_int = 0x2;
1105
1106 pub const TCP_MD5SIG: ::c_int = 14;
1107
1108 align_const! {
1109 pub const PTHREAD_MUTEX_INITIALIZER: pthread_mutex_t = pthread_mutex_t {
1110 size: [0; __SIZEOF_PTHREAD_MUTEX_T],
1111 };
1112 pub const PTHREAD_COND_INITIALIZER: pthread_cond_t = pthread_cond_t {
1113 size: [0; __SIZEOF_PTHREAD_COND_T],
1114 };
1115 pub const PTHREAD_RWLOCK_INITIALIZER: pthread_rwlock_t = pthread_rwlock_t {
1116 size: [0; __SIZEOF_PTHREAD_RWLOCK_T],
1117 };
1118 }
1119 pub const PTHREAD_MUTEX_NORMAL: ::c_int = 0;
1120 pub const PTHREAD_MUTEX_RECURSIVE: ::c_int = 1;
1121 pub const PTHREAD_MUTEX_ERRORCHECK: ::c_int = 2;
1122 pub const PTHREAD_MUTEX_DEFAULT: ::c_int = PTHREAD_MUTEX_NORMAL;
1123 pub const __SIZEOF_PTHREAD_COND_T: usize = 48;
1124
1125 pub const SCHED_OTHER: ::c_int = 0;
1126 pub const SCHED_FIFO: ::c_int = 1;
1127 pub const SCHED_RR: ::c_int = 2;
1128 pub const SCHED_BATCH: ::c_int = 3;
1129 pub const SCHED_IDLE: ::c_int = 5;
1130
1131 // System V IPC
1132 pub const IPC_PRIVATE: ::key_t = 0;
1133
1134 pub const IPC_CREAT: ::c_int = 0o1000;
1135 pub const IPC_EXCL: ::c_int = 0o2000;
1136 pub const IPC_NOWAIT: ::c_int = 0o4000;
1137
1138 pub const IPC_RMID: ::c_int = 0;
1139 pub const IPC_SET: ::c_int = 1;
1140 pub const IPC_STAT: ::c_int = 2;
1141 pub const IPC_INFO: ::c_int = 3;
1142 pub const MSG_STAT: ::c_int = 11;
1143 pub const MSG_INFO: ::c_int = 12;
1144
1145 pub const MSG_NOERROR: ::c_int = 0o10000;
1146 pub const MSG_EXCEPT: ::c_int = 0o20000;
1147
1148 pub const SHM_R: ::c_int = 0o400;
1149 pub const SHM_W: ::c_int = 0o200;
1150
1151 pub const SHM_RDONLY: ::c_int = 0o10000;
1152 pub const SHM_RND: ::c_int = 0o20000;
1153 pub const SHM_REMAP: ::c_int = 0o40000;
1154
1155 pub const SHM_LOCK: ::c_int = 11;
1156 pub const SHM_UNLOCK: ::c_int = 12;
1157
1158 pub const SHM_HUGETLB: ::c_int = 0o4000;
1159 pub const SHM_NORESERVE: ::c_int = 0o10000;
1160
1161 pub const EPOLLRDHUP: ::c_int = 0x2000;
1162 pub const EPOLLONESHOT: ::c_int = 0x40000000;
1163
1164 pub const QFMT_VFS_OLD: ::c_int = 1;
1165 pub const QFMT_VFS_V0: ::c_int = 2;
1166
1167 pub const EFD_SEMAPHORE: ::c_int = 0x1;
1168
1169 pub const LOG_NFACILITIES: ::c_int = 24;
1170
1171 pub const SEM_FAILED: *mut ::sem_t = 0 as *mut sem_t;
1172
1173 pub const RB_AUTOBOOT: ::c_int = 0x01234567u32 as i32;
1174 pub const RB_HALT_SYSTEM: ::c_int = 0xcdef0123u32 as i32;
1175 pub const RB_ENABLE_CAD: ::c_int = 0x89abcdefu32 as i32;
1176 pub const RB_DISABLE_CAD: ::c_int = 0x00000000u32 as i32;
1177 pub const RB_POWER_OFF: ::c_int = 0x4321fedcu32 as i32;
1178
1179 pub const AI_PASSIVE: ::c_int = 0x0001;
1180 pub const AI_CANONNAME: ::c_int = 0x0002;
1181 pub const AI_NUMERICHOST: ::c_int = 0x0004;
1182 pub const AI_V4MAPPED: ::c_int = 0x0008;
1183 pub const AI_ALL: ::c_int = 0x0010;
1184 pub const AI_ADDRCONFIG: ::c_int = 0x0020;
1185
1186 pub const AI_NUMERICSERV: ::c_int = 0x0400;
1187
1188 pub const EAI_BADFLAGS: ::c_int = -1;
1189 pub const EAI_NONAME: ::c_int = -2;
1190 pub const EAI_AGAIN: ::c_int = -3;
1191 pub const EAI_FAIL: ::c_int = -4;
1192 pub const EAI_FAMILY: ::c_int = -6;
1193 pub const EAI_SOCKTYPE: ::c_int = -7;
1194 pub const EAI_SERVICE: ::c_int = -8;
1195 pub const EAI_MEMORY: ::c_int = -10;
1196 pub const EAI_OVERFLOW: ::c_int = -12;
1197
1198 pub const NI_NUMERICHOST: ::c_int = 1;
1199 pub const NI_NUMERICSERV: ::c_int = 2;
1200 pub const NI_NOFQDN: ::c_int = 4;
1201 pub const NI_NAMEREQD: ::c_int = 8;
1202 pub const NI_DGRAM: ::c_int = 16;
1203
1204 pub const SYNC_FILE_RANGE_WAIT_BEFORE: ::c_uint = 1;
1205 pub const SYNC_FILE_RANGE_WRITE: ::c_uint = 2;
1206 pub const SYNC_FILE_RANGE_WAIT_AFTER: ::c_uint = 4;
1207
1208 pub const EAI_SYSTEM: ::c_int = -11;
1209
1210 pub const MREMAP_MAYMOVE: ::c_int = 1;
1211 pub const MREMAP_FIXED: ::c_int = 2;
1212
1213 pub const PR_SET_PDEATHSIG: ::c_int = 1;
1214 pub const PR_GET_PDEATHSIG: ::c_int = 2;
1215
1216 pub const PR_GET_DUMPABLE: ::c_int = 3;
1217 pub const PR_SET_DUMPABLE: ::c_int = 4;
1218
1219 pub const PR_GET_UNALIGN: ::c_int = 5;
1220 pub const PR_SET_UNALIGN: ::c_int = 6;
1221 pub const PR_UNALIGN_NOPRINT: ::c_int = 1;
1222 pub const PR_UNALIGN_SIGBUS: ::c_int = 2;
1223
1224 pub const PR_GET_KEEPCAPS: ::c_int = 7;
1225 pub const PR_SET_KEEPCAPS: ::c_int = 8;
1226
1227 pub const PR_GET_FPEMU: ::c_int = 9;
1228 pub const PR_SET_FPEMU: ::c_int = 10;
1229 pub const PR_FPEMU_NOPRINT: ::c_int = 1;
1230 pub const PR_FPEMU_SIGFPE: ::c_int = 2;
1231
1232 pub const PR_GET_FPEXC: ::c_int = 11;
1233 pub const PR_SET_FPEXC: ::c_int = 12;
1234 pub const PR_FP_EXC_SW_ENABLE: ::c_int = 0x80;
1235 pub const PR_FP_EXC_DIV: ::c_int = 0x010000;
1236 pub const PR_FP_EXC_OVF: ::c_int = 0x020000;
1237 pub const PR_FP_EXC_UND: ::c_int = 0x040000;
1238 pub const PR_FP_EXC_RES: ::c_int = 0x080000;
1239 pub const PR_FP_EXC_INV: ::c_int = 0x100000;
1240 pub const PR_FP_EXC_DISABLED: ::c_int = 0;
1241 pub const PR_FP_EXC_NONRECOV: ::c_int = 1;
1242 pub const PR_FP_EXC_ASYNC: ::c_int = 2;
1243 pub const PR_FP_EXC_PRECISE: ::c_int = 3;
1244
1245 pub const PR_GET_TIMING: ::c_int = 13;
1246 pub const PR_SET_TIMING: ::c_int = 14;
1247 pub const PR_TIMING_STATISTICAL: ::c_int = 0;
1248 pub const PR_TIMING_TIMESTAMP: ::c_int = 1;
1249
1250 pub const PR_SET_NAME: ::c_int = 15;
1251 pub const PR_GET_NAME: ::c_int = 16;
1252
1253 pub const PR_GET_ENDIAN: ::c_int = 19;
1254 pub const PR_SET_ENDIAN: ::c_int = 20;
1255 pub const PR_ENDIAN_BIG: ::c_int = 0;
1256 pub const PR_ENDIAN_LITTLE: ::c_int = 1;
1257 pub const PR_ENDIAN_PPC_LITTLE: ::c_int = 2;
1258
1259 pub const PR_GET_SECCOMP: ::c_int = 21;
1260 pub const PR_SET_SECCOMP: ::c_int = 22;
1261
1262 pub const PR_CAPBSET_READ: ::c_int = 23;
1263 pub const PR_CAPBSET_DROP: ::c_int = 24;
1264
1265 pub const PR_GET_TSC: ::c_int = 25;
1266 pub const PR_SET_TSC: ::c_int = 26;
1267 pub const PR_TSC_ENABLE: ::c_int = 1;
1268 pub const PR_TSC_SIGSEGV: ::c_int = 2;
1269
1270 pub const PR_GET_SECUREBITS: ::c_int = 27;
1271 pub const PR_SET_SECUREBITS: ::c_int = 28;
1272
1273 pub const PR_SET_TIMERSLACK: ::c_int = 29;
1274 pub const PR_GET_TIMERSLACK: ::c_int = 30;
1275
1276 pub const PR_TASK_PERF_EVENTS_DISABLE: ::c_int = 31;
1277 pub const PR_TASK_PERF_EVENTS_ENABLE: ::c_int = 32;
1278
1279 pub const PR_MCE_KILL: ::c_int = 33;
1280 pub const PR_MCE_KILL_CLEAR: ::c_int = 0;
1281 pub const PR_MCE_KILL_SET: ::c_int = 1;
1282
1283 pub const PR_MCE_KILL_LATE: ::c_int = 0;
1284 pub const PR_MCE_KILL_EARLY: ::c_int = 1;
1285 pub const PR_MCE_KILL_DEFAULT: ::c_int = 2;
1286
1287 pub const PR_MCE_KILL_GET: ::c_int = 34;
1288
1289 pub const PR_SET_MM: ::c_int = 35;
1290 pub const PR_SET_MM_START_CODE: ::c_int = 1;
1291 pub const PR_SET_MM_END_CODE: ::c_int = 2;
1292 pub const PR_SET_MM_START_DATA: ::c_int = 3;
1293 pub const PR_SET_MM_END_DATA: ::c_int = 4;
1294 pub const PR_SET_MM_START_STACK: ::c_int = 5;
1295 pub const PR_SET_MM_START_BRK: ::c_int = 6;
1296 pub const PR_SET_MM_BRK: ::c_int = 7;
1297 pub const PR_SET_MM_ARG_START: ::c_int = 8;
1298 pub const PR_SET_MM_ARG_END: ::c_int = 9;
1299 pub const PR_SET_MM_ENV_START: ::c_int = 10;
1300 pub const PR_SET_MM_ENV_END: ::c_int = 11;
1301 pub const PR_SET_MM_AUXV: ::c_int = 12;
1302 pub const PR_SET_MM_EXE_FILE: ::c_int = 13;
1303 pub const PR_SET_MM_MAP: ::c_int = 14;
1304 pub const PR_SET_MM_MAP_SIZE: ::c_int = 15;
1305
1306 pub const PR_SET_PTRACER: ::c_int = 0x59616d61;
1307
1308 pub const PR_SET_CHILD_SUBREAPER: ::c_int = 36;
1309 pub const PR_GET_CHILD_SUBREAPER: ::c_int = 37;
1310
1311 pub const PR_SET_NO_NEW_PRIVS: ::c_int = 38;
1312 pub const PR_GET_NO_NEW_PRIVS: ::c_int = 39;
1313
1314 pub const PR_GET_TID_ADDRESS: ::c_int = 40;
1315
1316 pub const PR_SET_THP_DISABLE: ::c_int = 41;
1317 pub const PR_GET_THP_DISABLE: ::c_int = 42;
1318
1319 pub const GRND_NONBLOCK: ::c_uint = 0x0001;
1320 pub const GRND_RANDOM: ::c_uint = 0x0002;
1321
1322 pub const ABDAY_1: ::nl_item = 0x300;
1323 pub const ABDAY_2: ::nl_item = 0x301;
1324 pub const ABDAY_3: ::nl_item = 0x302;
1325 pub const ABDAY_4: ::nl_item = 0x303;
1326 pub const ABDAY_5: ::nl_item = 0x304;
1327 pub const ABDAY_6: ::nl_item = 0x305;
1328 pub const ABDAY_7: ::nl_item = 0x306;
1329
1330 pub const DAY_1: ::nl_item = 0x307;
1331 pub const DAY_2: ::nl_item = 0x308;
1332 pub const DAY_3: ::nl_item = 0x309;
1333 pub const DAY_4: ::nl_item = 0x30A;
1334 pub const DAY_5: ::nl_item = 0x30B;
1335 pub const DAY_6: ::nl_item = 0x30C;
1336 pub const DAY_7: ::nl_item = 0x30D;
1337
1338 pub const ABMON_1: ::nl_item = 0x30E;
1339 pub const ABMON_2: ::nl_item = 0x30F;
1340 pub const ABMON_3: ::nl_item = 0x310;
1341 pub const ABMON_4: ::nl_item = 0x311;
1342 pub const ABMON_5: ::nl_item = 0x312;
1343 pub const ABMON_6: ::nl_item = 0x313;
1344 pub const ABMON_7: ::nl_item = 0x314;
1345 pub const ABMON_8: ::nl_item = 0x315;
1346 pub const ABMON_9: ::nl_item = 0x316;
1347 pub const ABMON_10: ::nl_item = 0x317;
1348 pub const ABMON_11: ::nl_item = 0x318;
1349 pub const ABMON_12: ::nl_item = 0x319;
1350
1351 pub const MON_1: ::nl_item = 0x31A;
1352 pub const MON_2: ::nl_item = 0x31B;
1353 pub const MON_3: ::nl_item = 0x31C;
1354 pub const MON_4: ::nl_item = 0x31D;
1355 pub const MON_5: ::nl_item = 0x31E;
1356 pub const MON_6: ::nl_item = 0x31F;
1357 pub const MON_7: ::nl_item = 0x320;
1358 pub const MON_8: ::nl_item = 0x321;
1359 pub const MON_9: ::nl_item = 0x322;
1360 pub const MON_10: ::nl_item = 0x323;
1361 pub const MON_11: ::nl_item = 0x324;
1362 pub const MON_12: ::nl_item = 0x325;
1363
1364 pub const AM_STR: ::nl_item = 0x326;
1365 pub const PM_STR: ::nl_item = 0x327;
1366
1367 pub const D_T_FMT: ::nl_item = 0x328;
1368 pub const D_FMT: ::nl_item = 0x329;
1369 pub const T_FMT: ::nl_item = 0x32A;
1370 pub const T_FMT_AMPM: ::nl_item = 0x32B;
1371
1372 pub const ERA: ::nl_item = 0x32C;
1373 pub const ERA_D_FMT: ::nl_item = 0x32E;
1374 pub const ALT_DIGITS: ::nl_item = 0x32F;
1375 pub const ERA_D_T_FMT: ::nl_item = 0x330;
1376 pub const ERA_T_FMT: ::nl_item = 0x331;
1377
1378 pub const CODESET: ::nl_item = 10;
1379
1380 pub const CRNCYSTR: ::nl_item = 0x215;
1381
1382 pub const RADIXCHAR: ::nl_item = 0x100;
1383 pub const THOUSEP: ::nl_item = 0x101;
1384
1385 pub const NOEXPR: ::nl_item = 0x501;
1386 pub const YESSTR: ::nl_item = 0x502;
1387 pub const NOSTR: ::nl_item = 0x503;
1388
1389 pub const FILENAME_MAX: ::c_uint = 4095;
1390
1391 pub const AF_MAX: ::c_int = 39;
1392
1393 f! {
1394 pub fn FD_CLR(fd: ::c_int, set: *mut fd_set) -> () {
1395 let fd = fd as usize;
1396 let size = ::mem::size_of_val(&(*set).fds_bits[0]) * 8;
1397 (*set).fds_bits[fd / size] &= !(1 << (fd % size));
1398 return
1399 }
1400
1401 pub fn FD_ISSET(fd: ::c_int, set: *mut fd_set) -> bool {
1402 let fd = fd as usize;
1403 let size = ::mem::size_of_val(&(*set).fds_bits[0]) * 8;
1404 return ((*set).fds_bits[fd / size] & (1 << (fd % size))) != 0
1405 }
1406
1407 pub fn FD_SET(fd: ::c_int, set: *mut fd_set) -> () {
1408 let fd = fd as usize;
1409 let size = ::mem::size_of_val(&(*set).fds_bits[0]) * 8;
1410 (*set).fds_bits[fd / size] |= 1 << (fd % size);
1411 return
1412 }
1413
1414 pub fn FD_ZERO(set: *mut fd_set) -> () {
1415 for slot in (*set).fds_bits.iter_mut() {
1416 *slot = 0;
1417 }
1418 }
1419
1420 pub fn WIFSTOPPED(status: ::c_int) -> bool {
1421 (status & 0xff) == 0x7f
1422 }
1423
1424 pub fn WSTOPSIG(status: ::c_int) -> ::c_int {
1425 (status >> 8) & 0xff
1426 }
1427
1428 pub fn WIFCONTINUED(status: ::c_int) -> bool {
1429 status == 0xffff
1430 }
1431
1432 pub fn WIFSIGNALED(status: ::c_int) -> bool {
1433 ((status & 0x7f) + 1) as i8 >= 2
1434 }
1435
1436 pub fn WTERMSIG(status: ::c_int) -> ::c_int {
1437 status & 0x7f
1438 }
1439
1440 pub fn WIFEXITED(status: ::c_int) -> bool {
1441 (status & 0x7f) == 0
1442 }
1443
1444 pub fn WEXITSTATUS(status: ::c_int) -> ::c_int {
1445 (status >> 8) & 0xff
1446 }
1447
1448 pub fn WCOREDUMP(status: ::c_int) -> bool {
1449 (status & 0x80) != 0
1450 }
1451
1452 pub fn CPU_ZERO(cpuset: &mut cpu_set_t) -> () {
1453 for slot in cpuset.bits.iter_mut() {
1454 *slot = 0;
1455 }
1456 }
1457
1458 pub fn CPU_SET(cpu: usize, cpuset: &mut cpu_set_t) -> () {
1459 let size_in_bits
1460 = 8 * ::mem::size_of_val(&cpuset.bits[0]); // 32, 64 etc
1461 let (idx, offset) = (cpu / size_in_bits, cpu % size_in_bits);
1462 cpuset.bits[idx] |= 1 << offset;
1463 ()
1464 }
1465
1466 pub fn CPU_CLR(cpu: usize, cpuset: &mut cpu_set_t) -> () {
1467 let size_in_bits
1468 = 8 * ::mem::size_of_val(&cpuset.bits[0]); // 32, 64 etc
1469 let (idx, offset) = (cpu / size_in_bits, cpu % size_in_bits);
1470 cpuset.bits[idx] &= !(1 << offset);
1471 ()
1472 }
1473
1474 pub fn CPU_ISSET(cpu: usize, cpuset: &cpu_set_t) -> bool {
1475 let size_in_bits = 8 * ::mem::size_of_val(&cpuset.bits[0]);
1476 let (idx, offset) = (cpu / size_in_bits, cpu % size_in_bits);
1477 0 != (cpuset.bits[idx] & (1 << offset))
1478 }
1479
1480 pub fn CPU_EQUAL(set1: &cpu_set_t, set2: &cpu_set_t) -> bool {
1481 set1.bits == set2.bits
1482 }
1483
1484 pub fn QCMD(cmd: ::c_int, type_: ::c_int) -> ::c_int {
1485 (cmd << 8) | (type_ & 0x00ff)
1486 }
1487 }
1488
1489 extern {
1490 pub fn sem_destroy(sem: *mut sem_t) -> ::c_int;
1491 pub fn sem_init(sem: *mut sem_t,
1492 pshared: ::c_int,
1493 value: ::c_uint)
1494 -> ::c_int;
1495
1496 pub fn abs(i: ::c_int) -> ::c_int;
1497 pub fn atof(s: *const ::c_char) -> ::c_double;
1498 pub fn labs(i: ::c_long) -> ::c_long;
1499 pub fn rand() -> ::c_int;
1500 pub fn srand(seed: ::c_uint);
1501
1502 pub fn fdatasync(fd: ::c_int) -> ::c_int;
1503 pub fn mincore(addr: *mut ::c_void, len: ::size_t,
1504 vec: *mut ::c_uchar) -> ::c_int;
1505 pub fn clock_getres(clk_id: ::clockid_t, tp: *mut ::timespec) -> ::c_int;
1506 pub fn clock_gettime(clk_id: ::clockid_t, tp: *mut ::timespec) -> ::c_int;
1507 pub fn clock_nanosleep(clk_id: ::clockid_t,
1508 flags: ::c_int,
1509 rqtp: *const ::timespec,
1510 rmtp: *mut ::timespec) -> ::c_int;
1511 pub fn clock_settime(clk_id: ::clockid_t, tp: *const ::timespec) -> ::c_int;
1512 pub fn prctl(option: ::c_int, ...) -> ::c_int;
1513 pub fn pthread_getattr_np(native: ::pthread_t,
1514 attr: *mut ::pthread_attr_t) -> ::c_int;
1515 pub fn pthread_attr_getguardsize(attr: *const ::pthread_attr_t,
1516 guardsize: *mut ::size_t) -> ::c_int;
1517 pub fn pthread_attr_getstack(attr: *const ::pthread_attr_t,
1518 stackaddr: *mut *mut ::c_void,
1519 stacksize: *mut ::size_t) -> ::c_int;
1520 pub fn memalign(align: ::size_t, size: ::size_t) -> *mut ::c_void;
1521 pub fn setgroups(ngroups: ::size_t,
1522 ptr: *const ::gid_t) -> ::c_int;
1523 pub fn initgroups(user: *const ::c_char, group: ::gid_t) -> ::c_int;
1524 pub fn sched_setscheduler(pid: ::pid_t,
1525 policy: ::c_int,
1526 param: *const ::sched_param) -> ::c_int;
1527 pub fn sched_getscheduler(pid: ::pid_t) -> ::c_int;
1528 pub fn sched_get_priority_max(policy: ::c_int) -> ::c_int;
1529 pub fn sched_get_priority_min(policy: ::c_int) -> ::c_int;
1530 pub fn epoll_create(size: ::c_int) -> ::c_int;
1531 pub fn epoll_create1(flags: ::c_int) -> ::c_int;
1532 pub fn epoll_ctl(epfd: ::c_int,
1533 op: ::c_int,
1534 fd: ::c_int,
1535 event: *mut ::epoll_event) -> ::c_int;
1536 pub fn epoll_wait(epfd: ::c_int,
1537 events: *mut ::epoll_event,
1538 maxevents: ::c_int,
1539 timeout: ::c_int) -> ::c_int;
1540 pub fn pipe2(fds: *mut ::c_int, flags: ::c_int) -> ::c_int;
1541 pub fn mount(src: *const ::c_char,
1542 target: *const ::c_char,
1543 fstype: *const ::c_char,
1544 flags: ::c_ulong,
1545 data: *const ::c_void) -> ::c_int;
1546 pub fn umount(target: *const ::c_char) -> ::c_int;
1547 pub fn umount2(target: *const ::c_char, flags: ::c_int) -> ::c_int;
1548 pub fn clone(cb: extern fn(*mut ::c_void) -> ::c_int,
1549 child_stack: *mut ::c_void,
1550 flags: ::c_int,
1551 arg: *mut ::c_void, ...) -> ::c_int;
1552 pub fn statfs(path: *const ::c_char, buf: *mut statfs) -> ::c_int;
1553 pub fn fstatfs(fd: ::c_int, buf: *mut statfs) -> ::c_int;
1554 pub fn memrchr(cx: *const ::c_void,
1555 c: ::c_int,
1556 n: ::size_t) -> *mut ::c_void;
1557 pub fn syscall(num: ::c_long, ...) -> ::c_long;
1558 pub fn sendfile(out_fd: ::c_int,
1559 in_fd: ::c_int,
1560 offset: *mut off_t,
1561 count: ::size_t) -> ::ssize_t;
1562 pub fn splice(fd_in: ::c_int,
1563 off_in: *mut ::loff_t,
1564 fd_out: ::c_int,
1565 off_out: *mut ::loff_t,
1566 len: ::size_t,
1567 flags: ::c_uint) -> ::ssize_t;
1568 pub fn tee(fd_in: ::c_int,
1569 fd_out: ::c_int,
1570 len: ::size_t,
1571 flags: ::c_uint) -> ::ssize_t;
1572 pub fn vmsplice(fd: ::c_int,
1573 iov: *const ::iovec,
1574 nr_segs: ::size_t,
1575 flags: ::c_uint) -> ::ssize_t;
1576
1577 pub fn posix_fadvise(fd: ::c_int, offset: ::off_t, len: ::off_t,
1578 advise: ::c_int) -> ::c_int;
1579 pub fn futimens(fd: ::c_int, times: *const ::timespec) -> ::c_int;
1580 pub fn utimensat(dirfd: ::c_int, path: *const ::c_char,
1581 times: *const ::timespec, flag: ::c_int) -> ::c_int;
1582 pub fn duplocale(base: ::locale_t) -> ::locale_t;
1583 pub fn freelocale(loc: ::locale_t);
1584 pub fn newlocale(mask: ::c_int,
1585 locale: *const ::c_char,
1586 base: ::locale_t) -> ::locale_t;
1587 pub fn uselocale(loc: ::locale_t) -> ::locale_t;
1588 pub fn creat64(path: *const c_char, mode: mode_t) -> ::c_int;
1589 pub fn fstat64(fildes: ::c_int, buf: *mut stat64) -> ::c_int;
1590 pub fn fstatat64(fildes: ::c_int, path: *const ::c_char,
1591 buf: *mut stat64, flag: ::c_int) -> ::c_int;
1592 pub fn ftruncate64(fd: ::c_int, length: off64_t) -> ::c_int;
1593 pub fn getrlimit64(resource: ::c_int, rlim: *mut rlimit64) -> ::c_int;
1594 pub fn lseek64(fd: ::c_int, offset: off64_t, whence: ::c_int) -> off64_t;
1595 pub fn lstat64(path: *const c_char, buf: *mut stat64) -> ::c_int;
1596 pub fn mmap64(addr: *mut ::c_void,
1597 len: ::size_t,
1598 prot: ::c_int,
1599 flags: ::c_int,
1600 fd: ::c_int,
1601 offset: off64_t)
1602 -> *mut ::c_void;
1603 pub fn open64(path: *const c_char, oflag: ::c_int, ...) -> ::c_int;
1604 pub fn openat64(fd: ::c_int,
1605 path: *const c_char,
1606 oflag: ::c_int, ...) -> ::c_int;
1607 pub fn pread64(fd: ::c_int, buf: *mut ::c_void, count: ::size_t,
1608 offset: off64_t) -> ::ssize_t;
1609 pub fn pwrite64(fd: ::c_int, buf: *const ::c_void, count: ::size_t,
1610 offset: off64_t) -> ::ssize_t;
1611 pub fn readdir64(dirp: *mut ::DIR) -> *mut ::dirent64;
1612 pub fn readdir64_r(dirp: *mut ::DIR, entry: *mut ::dirent64,
1613 result: *mut *mut ::dirent64) -> ::c_int;
1614 pub fn setrlimit64(resource: ::c_int, rlim: *const rlimit64) -> ::c_int;
1615 pub fn stat64(path: *const c_char, buf: *mut stat64) -> ::c_int;
1616 pub fn truncate64(path: *const c_char, length: off64_t) -> ::c_int;
1617 pub fn eventfd(init: ::c_uint, flags: ::c_int) -> ::c_int;
1618
1619 pub fn mknodat(dirfd: ::c_int, pathname: *const ::c_char,
1620 mode: ::mode_t, dev: dev_t) -> ::c_int;
1621 pub fn ppoll(fds: *mut ::pollfd,
1622 nfds: nfds_t,
1623 timeout: *const ::timespec,
1624 sigmask: *const sigset_t) -> ::c_int;
1625 pub fn pthread_condattr_getclock(attr: *const pthread_condattr_t,
1626 clock_id: *mut clockid_t) -> ::c_int;
1627 pub fn pthread_condattr_setclock(attr: *mut pthread_condattr_t,
1628 clock_id: ::clockid_t) -> ::c_int;
1629 pub fn pthread_condattr_setpshared(attr: *mut pthread_condattr_t,
1630 pshared: ::c_int) -> ::c_int;
1631 pub fn pthread_condattr_getpshared(attr: *const pthread_condattr_t,
1632 pshared: *mut ::c_int) -> ::c_int;
1633 pub fn sched_getaffinity(pid: ::pid_t,
1634 cpusetsize: ::size_t,
1635 cpuset: *mut cpu_set_t) -> ::c_int;
1636 pub fn sched_setaffinity(pid: ::pid_t,
1637 cpusetsize: ::size_t,
1638 cpuset: *const cpu_set_t) -> ::c_int;
1639 pub fn unshare(flags: ::c_int) -> ::c_int;
1640 pub fn sem_timedwait(sem: *mut sem_t,
1641 abstime: *const ::timespec) -> ::c_int;
1642 pub fn sem_getvalue(sem: *mut sem_t,
1643 sval: *mut ::c_int) -> ::c_int;
1644 pub fn accept4(fd: ::c_int, addr: *mut ::sockaddr, len: *mut ::socklen_t,
1645 flg: ::c_int) -> ::c_int;
1646 pub fn pthread_mutex_timedlock(lock: *mut pthread_mutex_t,
1647 abstime: *const ::timespec) -> ::c_int;
1648 pub fn pthread_mutexattr_setpshared(attr: *mut pthread_mutexattr_t,
1649 pshared: ::c_int) -> ::c_int;
1650 pub fn pthread_mutexattr_getpshared(attr: *const pthread_mutexattr_t,
1651 pshared: *mut ::c_int) -> ::c_int;
1652 pub fn pthread_rwlockattr_getkind_np(attr: *const pthread_rwlockattr_t,
1653 val: *mut ::c_int) -> ::c_int;
1654 pub fn pthread_rwlockattr_setkind_np(attr: *mut pthread_rwlockattr_t,
1655 val: ::c_int) -> ::c_int;
1656 pub fn pthread_rwlockattr_getpshared(attr: *const pthread_rwlockattr_t,
1657 val: *mut ::c_int) -> ::c_int;
1658 pub fn pthread_rwlockattr_setpshared(attr: *mut pthread_rwlockattr_t,
1659 val: ::c_int) -> ::c_int;
1660 pub fn ptsname_r(fd: ::c_int,
1661 buf: *mut ::c_char,
1662 buflen: ::size_t) -> ::c_int;
1663 pub fn clearenv() -> ::c_int;
1664 pub fn waitid(idtype: idtype_t, id: id_t, infop: *mut ::siginfo_t,
1665 options: ::c_int) -> ::c_int;
1666
1667 pub fn lutimes(file: *const ::c_char, times: *const ::timeval) -> ::c_int;
1668
1669 pub fn setpwent();
1670 pub fn endpwent();
1671 pub fn getpwent() -> *mut passwd;
1672 pub fn setspent();
1673 pub fn endspent();
1674 pub fn getspent() -> *mut spwd;
1675 pub fn getspnam(__name: *const ::c_char) -> *mut spwd;
1676
1677 pub fn shm_open(name: *const c_char, oflag: ::c_int,
1678 mode: mode_t) -> ::c_int;
1679
1680 // System V IPC
1681 pub fn shmget(key: ::key_t, size: ::size_t, shmflg: ::c_int) -> ::c_int;
1682 pub fn shmat(shmid: ::c_int,
1683 shmaddr: *const ::c_void,
1684 shmflg: ::c_int) -> *mut ::c_void;
1685 pub fn shmdt(shmaddr: *const ::c_void) -> ::c_int;
1686 pub fn shmctl(shmid: ::c_int,
1687 cmd: ::c_int,
1688 buf: *mut ::shmid_ds) -> ::c_int;
1689 pub fn ftok(pathname: *const ::c_char, proj_id: ::c_int) -> ::key_t;
1690 pub fn msgctl(msqid: ::c_int, cmd: ::c_int, buf: *mut msqid_ds) -> ::c_int;
1691 pub fn msgget(key: ::key_t, msgflg: ::c_int) -> ::c_int;
1692 pub fn msgrcv(msqid: ::c_int, msgp: *mut ::c_void, msgsz: ::size_t,
1693 msgtyp: ::c_long, msgflg: ::c_int) -> ::ssize_t;
1694 pub fn msgsnd(msqid: ::c_int, msgp: *const ::c_void, msgsz: ::size_t,
1695 msgflg: ::c_int) -> ::c_int;
1696
1697 pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int)
1698 -> ::c_int;
1699 pub fn __errno_location() -> *mut ::c_int;
1700
1701 pub fn fopen64(filename: *const c_char,
1702 mode: *const c_char) -> *mut ::FILE;
1703 pub fn freopen64(filename: *const c_char, mode: *const c_char,
1704 file: *mut ::FILE) -> *mut ::FILE;
1705 pub fn tmpfile64() -> *mut ::FILE;
1706 pub fn fgetpos64(stream: *mut ::FILE, ptr: *mut fpos64_t) -> ::c_int;
1707 pub fn fsetpos64(stream: *mut ::FILE, ptr: *const fpos64_t) -> ::c_int;
1708 pub fn fseeko64(stream: *mut ::FILE,
1709 offset: ::off64_t,
1710 whence: ::c_int) -> ::c_int;
1711 pub fn ftello64(stream: *mut ::FILE) -> ::off64_t;
1712 pub fn readahead(fd: ::c_int, offset: ::off64_t,
1713 count: ::size_t) -> ::ssize_t;
1714 pub fn getxattr(path: *const c_char, name: *const c_char,
1715 value: *mut ::c_void, size: ::size_t) -> ::ssize_t;
1716 pub fn lgetxattr(path: *const c_char, name: *const c_char,
1717 value: *mut ::c_void, size: ::size_t) -> ::ssize_t;
1718 pub fn fgetxattr(filedes: ::c_int, name: *const c_char,
1719 value: *mut ::c_void, size: ::size_t) -> ::ssize_t;
1720 pub fn setxattr(path: *const c_char, name: *const c_char,
1721 value: *const ::c_void, size: ::size_t,
1722 flags: ::c_int) -> ::c_int;
1723 pub fn lsetxattr(path: *const c_char, name: *const c_char,
1724 value: *const ::c_void, size: ::size_t,
1725 flags: ::c_int) -> ::c_int;
1726 pub fn fsetxattr(filedes: ::c_int, name: *const c_char,
1727 value: *const ::c_void, size: ::size_t,
1728 flags: ::c_int) -> ::c_int;
1729 pub fn listxattr(path: *const c_char, list: *mut c_char,
1730 size: ::size_t) -> ::ssize_t;
1731 pub fn llistxattr(path: *const c_char, list: *mut c_char,
1732 size: ::size_t) -> ::ssize_t;
1733 pub fn flistxattr(filedes: ::c_int, list: *mut c_char,
1734 size: ::size_t) -> ::ssize_t;
1735 pub fn removexattr(path: *const c_char, name: *const c_char) -> ::c_int;
1736 pub fn lremovexattr(path: *const c_char, name: *const c_char) -> ::c_int;
1737 pub fn fremovexattr(filedes: ::c_int, name: *const c_char) -> ::c_int;
1738 pub fn signalfd(fd: ::c_int,
1739 mask: *const ::sigset_t,
1740 flags: ::c_int) -> ::c_int;
1741 pub fn quotactl(cmd: ::c_int,
1742 special: *const ::c_char,
1743 id: ::c_int,
1744 data: *mut ::c_char) -> ::c_int;
1745 pub fn mq_open(name: *const ::c_char, oflag: ::c_int, ...) -> ::mqd_t;
1746 pub fn mq_close(mqd: ::mqd_t) -> ::c_int;
1747 pub fn mq_unlink(name: *const ::c_char) -> ::c_int;
1748 pub fn mq_receive(mqd: ::mqd_t,
1749 msg_ptr: *mut ::c_char,
1750 msg_len: ::size_t,
1751 msq_prio: *mut ::c_uint) -> ::ssize_t;
1752 pub fn mq_send(mqd: ::mqd_t,
1753 msg_ptr: *const ::c_char,
1754 msg_len: ::size_t,
1755 msq_prio: ::c_uint) -> ::c_int;
1756 pub fn mq_getattr(mqd: ::mqd_t, attr: *mut ::mq_attr) -> ::c_int;
1757 pub fn mq_setattr(mqd: ::mqd_t,
1758 newattr: *const ::mq_attr,
1759 oldattr: *mut ::mq_attr) -> ::c_int;
1760 pub fn epoll_pwait(epfd: ::c_int,
1761 events: *mut ::epoll_event,
1762 maxevents: ::c_int,
1763 timeout: ::c_int,
1764 sigmask: *const ::sigset_t) -> ::c_int;
1765 pub fn sethostname(name: *const ::c_char, len: ::size_t) -> ::c_int;
1766 pub fn sigtimedwait(set: *const sigset_t,
1767 info: *mut siginfo_t,
1768 timeout: *const ::timespec) -> ::c_int;
1769 pub fn sigwaitinfo(set: *const sigset_t,
1770 info: *mut siginfo_t) -> ::c_int;
1771 pub fn nl_langinfo_l(item: ::nl_item, locale: ::locale_t) -> *mut ::c_char;
1772 pub fn prlimit(pid: ::pid_t, resource: ::c_int, new_limit: *const ::rlimit,
1773 old_limit: *mut ::rlimit) -> ::c_int;
1774 pub fn prlimit64(pid: ::pid_t,
1775 resource: ::c_int,
1776 new_limit: *const ::rlimit64,
1777 old_limit: *mut ::rlimit64) -> ::c_int;
1778 pub fn reboot(how_to: ::c_int) -> ::c_int;
1779 pub fn setfsgid(gid: ::gid_t) -> ::c_int;
1780 pub fn setfsuid(uid: ::uid_t) -> ::c_int;
1781 pub fn setresgid(rgid: ::gid_t, egid: ::gid_t, sgid: ::gid_t) -> ::c_int;
1782 pub fn setresuid(ruid: ::uid_t, euid: ::uid_t, suid: ::uid_t) -> ::c_int;
1783
1784 // Not available now on Android
1785 pub fn mkfifoat(dirfd: ::c_int, pathname: *const ::c_char,
1786 mode: ::mode_t) -> ::c_int;
1787 pub fn if_nameindex() -> *mut if_nameindex;
1788 pub fn if_freenameindex(ptr: *mut if_nameindex);
1789 pub fn sync_file_range(fd: ::c_int, offset: ::off64_t,
1790 nbytes: ::off64_t, flags: ::c_uint) -> ::c_int;
1791 pub fn getifaddrs(ifap: *mut *mut ::ifaddrs) -> ::c_int;
1792 pub fn freeifaddrs(ifa: *mut ::ifaddrs);
1793
1794 pub fn mremap(addr: *mut ::c_void,
1795 len: ::size_t,
1796 new_len: ::size_t,
1797 flags: ::c_int,
1798 ...) -> *mut ::c_void;
1799
1800 pub fn glob(pattern: *const c_char,
1801 flags: ::c_int,
1802 errfunc: ::Option<extern fn(epath: *const c_char,
1803 errno: ::c_int) -> ::c_int>,
1804 pglob: *mut ::glob_t) -> ::c_int;
1805 pub fn globfree(pglob: *mut ::glob_t);
1806
1807 pub fn shm_unlink(name: *const ::c_char) -> ::c_int;
1808
1809 pub fn seekdir(dirp: *mut ::DIR, loc: ::c_long);
1810
1811 pub fn dirfd(dirp: *mut ::DIR) -> ::c_int;
1812
1813 pub fn telldir(dirp: *mut ::DIR) -> ::c_long;
1814 pub fn madvise(addr: *mut ::c_void, len: ::size_t, advice: ::c_int)
1815 -> ::c_int;
1816
1817 pub fn msync(addr: *mut ::c_void, len: ::size_t, flags: ::c_int) -> ::c_int;
1818
1819 pub fn recvfrom(socket: ::c_int, buf: *mut ::c_void, len: ::size_t,
1820 flags: ::c_int, addr: *mut ::sockaddr,
1821 addrlen: *mut ::socklen_t) -> ::ssize_t;
1822 pub fn nl_langinfo(item: ::nl_item) -> *mut ::c_char;
1823
1824 pub fn bind(socket: ::c_int, address: *const ::sockaddr,
1825 address_len: ::socklen_t) -> ::c_int;
1826
1827 pub fn writev(fd: ::c_int,
1828 iov: *const ::iovec,
1829 iovcnt: ::c_int) -> ::ssize_t;
1830 pub fn readv(fd: ::c_int,
1831 iov: *const ::iovec,
1832 iovcnt: ::c_int) -> ::ssize_t;
1833
1834 pub fn sendmsg(fd: ::c_int,
1835 msg: *const ::msghdr,
1836 flags: ::c_int) -> ::ssize_t;
1837 pub fn recvmsg(fd: ::c_int, msg: *mut ::msghdr, flags: ::c_int)
1838 -> ::ssize_t;
1839 #[cfg_attr(target_os = "solaris", link_name = "__posix_getgrgid_r")]
1840 pub fn getgrgid_r(gid: ::gid_t,
1841 grp: *mut ::group,
1842 buf: *mut ::c_char,
1843 buflen: ::size_t,
1844 result: *mut *mut ::group) -> ::c_int;
1845 #[cfg_attr(all(target_os = "macos", target_arch = "x86"),
1846 link_name = "sigaltstack$UNIX2003")]
1847 #[cfg_attr(target_os = "netbsd", link_name = "__sigaltstack14")]
1848 pub fn sigaltstack(ss: *const stack_t,
1849 oss: *mut stack_t) -> ::c_int;
1850 pub fn sem_close(sem: *mut sem_t) -> ::c_int;
1851 pub fn getdtablesize() -> ::c_int;
1852 #[cfg_attr(target_os = "solaris", link_name = "__posix_getgrnam_r")]
1853 pub fn getgrnam_r(name: *const ::c_char,
1854 grp: *mut ::group,
1855 buf: *mut ::c_char,
1856 buflen: ::size_t,
1857 result: *mut *mut ::group) -> ::c_int;
1858 #[cfg_attr(all(target_os = "macos", target_arch = "x86"),
1859 link_name = "pthread_sigmask$UNIX2003")]
1860 pub fn pthread_sigmask(how: ::c_int, set: *const sigset_t,
1861 oldset: *mut sigset_t) -> ::c_int;
1862 pub fn sem_open(name: *const ::c_char, oflag: ::c_int, ...) -> *mut sem_t;
1863 pub fn getgrnam(name: *const ::c_char) -> *mut ::group;
1864 pub fn pthread_kill(thread: ::pthread_t, sig: ::c_int) -> ::c_int;
1865 pub fn sem_unlink(name: *const ::c_char) -> ::c_int;
1866 pub fn daemon(nochdir: ::c_int, noclose: ::c_int) -> ::c_int;
1867 #[cfg_attr(target_os = "netbsd", link_name = "__getpwnam_r50")]
1868 #[cfg_attr(target_os = "solaris", link_name = "__posix_getpwnam_r")]
1869 pub fn getpwnam_r(name: *const ::c_char,
1870 pwd: *mut passwd,
1871 buf: *mut ::c_char,
1872 buflen: ::size_t,
1873 result: *mut *mut passwd) -> ::c_int;
1874 #[cfg_attr(target_os = "netbsd", link_name = "__getpwuid_r50")]
1875 #[cfg_attr(target_os = "solaris", link_name = "__posix_getpwuid_r")]
1876 pub fn getpwuid_r(uid: ::uid_t,
1877 pwd: *mut passwd,
1878 buf: *mut ::c_char,
1879 buflen: ::size_t,
1880 result: *mut *mut passwd) -> ::c_int;
1881 #[cfg_attr(all(target_os = "macos", target_arch ="x86"),
1882 link_name = "sigwait$UNIX2003")]
1883 #[cfg_attr(target_os = "solaris", link_name = "__posix_sigwait")]
1884 pub fn sigwait(set: *const sigset_t,
1885 sig: *mut ::c_int) -> ::c_int;
1886 pub fn pthread_atfork(prepare: ::Option<unsafe extern fn()>,
1887 parent: ::Option<unsafe extern fn()>,
1888 child: ::Option<unsafe extern fn()>) -> ::c_int;
1889 pub fn pthread_create(native: *mut ::pthread_t,
1890 attr: *const ::pthread_attr_t,
1891 f: extern fn(*mut ::c_void) -> *mut ::c_void,
1892 value: *mut ::c_void) -> ::c_int;
1893 pub fn getgrgid(gid: ::gid_t) -> *mut ::group;
1894 #[cfg_attr(all(target_os = "macos", target_arch = "x86"),
1895 link_name = "popen$UNIX2003")]
1896 pub fn popen(command: *const c_char,
1897 mode: *const c_char) -> *mut ::FILE;
1898 pub fn uname(buf: *mut ::utsname) -> ::c_int;
1899 }
1900
1901 cfg_if! {
1902 if #[cfg(any(target_arch = "mips", target_arch = "mips64"))] {
1903 mod mips;
1904 pub use self::mips::*;
1905 } else if #[cfg(target_arch = "x86_64")] {
1906 mod x86_64;
1907 pub use self::x86_64::*;
1908 } else if #[cfg(target_arch = "arm")] {
1909 mod arm;
1910 pub use self::arm::*;
1911 } else {
1912 pub use unsupported_target;
1913 }
1914 }
1915
1916 cfg_if! {
1917 if #[cfg(libc_align)] {
1918 #[macro_use]
1919 mod align;
1920 } else {
1921 #[macro_use]
1922 mod no_align;
1923 }
1924 }
1925
1926 expand_align!();