]> git.proxmox.com Git - rustc.git/blob - src/liblibc/lib.rs
893bceed582314895129a798943ec7eddf629cd9
[rustc.git] / src / liblibc / lib.rs
1 // Copyright 2012-2015 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
4 //
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
10
11 // Do not remove on snapshot creation. Needed for bootstrap. (Issue #22364)
12 #![cfg_attr(stage0, feature(custom_attribute))]
13 #![crate_name = "libc"]
14 #![crate_type = "rlib"]
15 #![cfg_attr(not(feature = "cargo-build"), unstable(feature = "libc",
16 reason = "use `libc` from crates.io"))]
17 #![cfg_attr(not(feature = "cargo-build"), feature(staged_api, core, no_std))]
18 #![cfg_attr(not(feature = "cargo-build"), staged_api)]
19 #![cfg_attr(not(feature = "cargo-build"), no_std)]
20 #![doc(html_logo_url = "http://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
21 html_favicon_url = "https://doc.rust-lang.org/favicon.ico",
22 html_root_url = "http://doc.rust-lang.org/nightly/",
23 html_playground_url = "http://play.rust-lang.org/")]
24 #![cfg_attr(test, feature(test))]
25
26 //! Bindings for the C standard library and other platform libraries
27 //!
28 //! **NOTE:** These are *architecture and libc* specific. On Linux, these
29 //! bindings are only correct for glibc.
30 //!
31 //! This module contains bindings to the C standard library, organized into
32 //! modules by their defining standard. Additionally, it contains some assorted
33 //! platform-specific definitions. For convenience, most functions and types
34 //! are reexported, so `use libc::*` will import the available C bindings as
35 //! appropriate for the target platform. The exact set of functions available
36 //! are platform specific.
37 //!
38 //! *Note:* Because these definitions are platform-specific, some may not appear
39 //! in the generated documentation.
40 //!
41 //! We consider the following specs reasonably normative with respect to
42 //! interoperating with the C standard library (libc/msvcrt):
43 //!
44 //! * ISO 9899:1990 ('C95', 'ANSI C', 'Standard C'), NA1, 1995.
45 //! * ISO 9899:1999 ('C99' or 'C9x').
46 //! * ISO 9945:1988 / IEEE 1003.1-1988 ('POSIX.1').
47 //! * ISO 9945:2001 / IEEE 1003.1-2001 ('POSIX:2001', 'SUSv3').
48 //! * ISO 9945:2008 / IEEE 1003.1-2008 ('POSIX:2008', 'SUSv4').
49 //!
50 //! Note that any reference to the 1996 revision of POSIX, or any revs between
51 //! 1990 (when '88 was approved at ISO) and 2001 (when the next actual
52 //! revision-revision happened), are merely additions of other chapters (1b and
53 //! 1c) outside the core interfaces.
54 //!
55 //! Despite having several names each, these are *reasonably* coherent
56 //! point-in-time, list-of-definition sorts of specs. You can get each under a
57 //! variety of names but will wind up with the same definition in each case.
58 //!
59 //! See standards(7) in linux-manpages for more details.
60 //!
61 //! Our interface to these libraries is complicated by the non-universality of
62 //! conformance to any of them. About the only thing universally supported is
63 //! the first (C95), beyond that definitions quickly become absent on various
64 //! platforms.
65 //!
66 //! We therefore wind up dividing our module-space up (mostly for the sake of
67 //! sanity while editing, filling-in-details and eliminating duplication) into
68 //! definitions common-to-all (held in modules named c95, c99, posix88, posix01
69 //! and posix08) and definitions that appear only on *some* platforms (named
70 //! 'extra'). This would be things like significant OSX foundation kit, or Windows
71 //! library kernel32.dll, or various fancy glibc, Linux or BSD extensions.
72 //!
73 //! In addition to the per-platform 'extra' modules, we define a module of
74 //! 'common BSD' libc routines that never quite made it into POSIX but show up
75 //! in multiple derived systems. This is the 4.4BSD r2 / 1995 release, the final
76 //! one from Berkeley after the lawsuits died down and the CSRG dissolved.
77
78 #![allow(bad_style, raw_pointer_derive)]
79 #![cfg_attr(target_os = "nacl", allow(unused_imports))]
80 #[cfg(feature = "cargo-build")] extern crate std as core;
81 #[cfg(not(feature = "cargo-build"))] extern crate core;
82
83 #[cfg(test)] extern crate std;
84 #[cfg(test)] extern crate test;
85
86 // Explicit export lists for the intersection (provided here) mean that
87 // you can write more-platform-agnostic code if you stick to just these
88 // symbols.
89
90 pub use types::common::c95::*;
91 pub use types::common::c99::*;
92 pub use types::common::posix88::*;
93 pub use types::os::common::posix01::*;
94 pub use types::os::common::bsd44::*;
95 pub use types::os::arch::c95::*;
96 pub use types::os::arch::c99::*;
97 pub use types::os::arch::posix88::*;
98 pub use types::os::arch::posix01::*;
99 pub use types::os::arch::extra::*;
100
101 pub use consts::os::c95::*;
102 pub use consts::os::posix88::*;
103 pub use consts::os::posix01::*;
104 pub use consts::os::bsd44::*;
105 pub use consts::os::extra::*;
106
107 pub use funcs::c95::ctype::*;
108 pub use funcs::c95::stdio::*;
109 pub use funcs::c95::stdlib::*;
110 pub use funcs::c95::string::*;
111 pub use funcs::posix88::fcntl::*;
112 pub use funcs::posix88::stat_::*;
113 pub use funcs::posix88::stdio::*;
114 pub use funcs::posix88::unistd::*;
115
116 pub use funcs::bsd43::*;
117
118 // But we also reexport most everything
119 // if you're interested in writing platform-specific code.
120
121 // FIXME: This is a mess, but the design of this entire module needs to be
122 // reconsidered, so I'm not inclined to do better right now. As part of
123 // #11870 I removed all the pub globs here, leaving explicit reexports
124 // of everything that is actually used in-tree.
125 //
126 // So the following exports don't follow any particular plan.
127
128 #[cfg(unix)] pub use consts::os::sysconf::*;
129
130 #[cfg(unix)] pub use funcs::posix88::mman::*;
131 #[cfg(unix)] pub use funcs::posix88::dirent::*;
132 #[cfg(unix)] pub use funcs::posix88::net::*;
133 #[cfg(unix)] pub use funcs::posix01::stat_::*;
134 #[cfg(unix)] pub use funcs::posix01::unistd::*;
135 #[cfg(unix)] pub use funcs::posix01::resource::*;
136
137
138 #[cfg(windows)] pub use funcs::extra::kernel32::*;
139 #[cfg(windows)] pub use funcs::extra::winsock::*;
140 #[cfg(windows)] pub use funcs::extra::msvcrt::*;
141
142 // On NaCl, these libraries are static. Thus it would be a Bad Idea to link them
143 // in when creating a test crate.
144 #[cfg(not(any(windows, target_env = "musl", all(target_os = "nacl", test))))]
145 #[link(name = "c")]
146 #[link(name = "m")]
147 extern {}
148
149 // When compiling rust with musl, statically include libc.a in liblibc.rlib.
150 // A cargo build of the libc crate will therefore automatically pick up the
151 // libc.a symbols because liblibc is transitively linked to by the stdlib.
152 #[cfg(all(target_env = "musl", not(feature = "cargo-build"), not(test)))]
153 #[link(name = "c", kind = "static")]
154 extern {}
155
156 #[cfg(all(windows, target_env = "msvc"))]
157 #[link(name = "kernel32")]
158 #[link(name = "shell32")]
159 #[link(name = "msvcrt")]
160 extern {}
161
162 // libnacl provides functions that require a trip through the IRT to work.
163 // ie: _exit, mmap, nanosleep, etc. Anything that would otherwise require a trip
164 // to the kernel.
165 #[cfg(all(target_os = "nacl", not(feature = "cargo-build"), not(test)))]
166 #[link(name = "nacl", kind = "static")]
167 extern {}
168
169 // pnaclmm provides a number of functions that the toolchain's Clang emits calls
170 // to when codegening atomic ops. All the functions within wrap various atomic
171 // operations.
172 // Yes, it could be linked by rustc explicitly, however by linking it here
173 // instead we save a bit of time where bins are involved (by not running the
174 // optimizations on the whole pnaclmm foreach binary built).
175 #[cfg(all(target_os = "nacl", not(feature = "cargo-build"), not(test)))]
176 #[link(name = "pnaclmm", kind = "static")]
177 extern {}
178
179 pub mod types {
180
181 // Types tend to vary *per architecture* so we pull their definitions out
182 // into this module.
183
184 // Standard types that are opaque or common, so are not per-target.
185 pub mod common {
186 pub mod c95 {
187 /// Type used to construct void pointers for use with C.
188 ///
189 /// This type is only useful as a pointer target. Do not use it as a
190 /// return type for FFI functions which have the `void` return type in
191 /// C. Use the unit type `()` or omit the return type instead.
192 ///
193 /// For LLVM to recognize the void pointer type and by extension
194 /// functions like malloc(), we need to have it represented as i8* in
195 /// LLVM bitcode. The enum used here ensures this and prevents misuse
196 /// of the "raw" type by only having private variants.. We need two
197 /// variants, because the compiler complains about the repr attribute
198 /// otherwise.
199 #[repr(u8)]
200 pub enum c_void {
201 __variant1,
202 __variant2,
203 }
204
205 pub enum FILE {}
206 pub enum fpos_t {}
207 }
208 pub mod c99 {
209 pub type int8_t = i8;
210 pub type int16_t = i16;
211 pub type int32_t = i32;
212 pub type int64_t = i64;
213 pub type uint8_t = u8;
214 pub type uint16_t = u16;
215 pub type uint32_t = u32;
216 pub type uint64_t = u64;
217 }
218 pub mod posix88 {
219 pub enum DIR {}
220 pub enum dirent_t {}
221 }
222 pub mod posix01 {}
223 pub mod posix08 {}
224 pub mod bsd44 {}
225 }
226
227 // Standard types that are scalar but vary by OS and arch.
228
229 #[cfg(any(target_os = "linux", target_os = "android", target_os = "nacl"))]
230 pub mod os {
231 pub mod common {
232 pub mod posix01 {
233 use types::common::c95::{c_void};
234 use types::os::arch::c95::{c_char, c_ulong, size_t,
235 time_t, suseconds_t, c_long};
236
237 #[cfg(not(target_os = "nacl"))]
238 pub type pthread_t = c_ulong;
239 #[cfg(target_os = "nacl")]
240 pub type pthread_t = *mut c_void;
241 pub type rlim_t = u64;
242
243 #[repr(C)]
244 #[derive(Copy, Clone)] pub struct glob_t {
245 pub gl_pathc: size_t,
246 pub gl_pathv: *mut *mut c_char,
247 pub gl_offs: size_t,
248
249 pub __unused1: *mut c_void,
250 pub __unused2: *mut c_void,
251 pub __unused3: *mut c_void,
252 pub __unused4: *mut c_void,
253 pub __unused5: *mut c_void,
254 }
255
256 #[repr(C)]
257 #[derive(Copy, Clone)] pub struct timeval {
258 pub tv_sec: time_t,
259 pub tv_usec: suseconds_t,
260 }
261
262 #[repr(C)]
263 #[derive(Copy, Clone)] pub struct timespec {
264 pub tv_sec: time_t,
265 pub tv_nsec: c_long,
266 }
267
268 pub enum timezone {}
269
270 pub type sighandler_t = size_t;
271
272 #[repr(C)]
273 #[derive(Copy, Clone)]
274 pub struct rlimit {
275 pub rlim_cur: rlim_t,
276 pub rlim_max: rlim_t,
277 }
278 }
279
280 pub mod bsd43 {
281 use types::os::common::posix01::timeval;
282 use types::os::arch::c95::c_long;
283 // This is also specified in POSIX 2001, but only has two fields. All implementors
284 // implement BSD 4.3 version.
285 #[repr(C)]
286 #[derive(Copy, Clone)]
287 pub struct rusage {
288 pub ru_utime: timeval,
289 pub ru_stime: timeval,
290 pub ru_maxrss: c_long,
291 pub ru_ixrss: c_long,
292 pub ru_idrss: c_long,
293 pub ru_isrss: c_long,
294 pub ru_minflt: c_long,
295 pub ru_majflt: c_long,
296 pub ru_nswap: c_long,
297 pub ru_inblock: c_long,
298 pub ru_oublock: c_long,
299 pub ru_msgsnd: c_long,
300 pub ru_msgrcv: c_long,
301 pub ru_nsignals: c_long,
302 pub ru_nvcsw: c_long,
303 pub ru_nivcsw: c_long
304 }
305 }
306
307 pub mod bsd44 {
308 use types::common::c95::{c_void};
309 use types::os::arch::c95::{c_char, c_int, c_uint};
310
311 pub type socklen_t = u32;
312 pub type sa_family_t = u16;
313 pub type in_port_t = u16;
314 pub type in_addr_t = u32;
315 #[repr(C)]
316 #[derive(Copy, Clone)] pub struct sockaddr {
317 pub sa_family: sa_family_t,
318 pub sa_data: [u8; 14],
319 }
320 #[repr(C)]
321 #[derive(Copy)] pub struct sockaddr_storage {
322 pub ss_family: sa_family_t,
323 pub __ss_align: isize,
324 #[cfg(target_pointer_width = "32")]
325 pub __ss_pad2: [u8; 128 - 2 * 4],
326 #[cfg(target_pointer_width = "64")]
327 pub __ss_pad2: [u8; 128 - 2 * 8],
328 }
329 impl ::core::clone::Clone for sockaddr_storage {
330 fn clone(&self) -> sockaddr_storage { *self }
331 }
332 #[repr(C)]
333 #[derive(Copy, Clone)] pub struct sockaddr_in {
334 pub sin_family: sa_family_t,
335 pub sin_port: in_port_t,
336 pub sin_addr: in_addr,
337 pub sin_zero: [u8; 8],
338 }
339 #[repr(C)]
340 #[derive(Copy, Clone)] pub struct in_addr {
341 pub s_addr: in_addr_t,
342 }
343 #[repr(C)]
344 #[derive(Copy, Clone)] pub struct sockaddr_in6 {
345 pub sin6_family: sa_family_t,
346 pub sin6_port: in_port_t,
347 pub sin6_flowinfo: u32,
348 pub sin6_addr: in6_addr,
349 pub sin6_scope_id: u32,
350 }
351 #[repr(C)]
352 #[derive(Copy, Clone)] pub struct in6_addr {
353 pub s6_addr: [u16; 8]
354 }
355 #[repr(C)]
356 #[derive(Copy, Clone)] pub struct ip_mreq {
357 pub imr_multiaddr: in_addr,
358 pub imr_interface: in_addr,
359 }
360 #[repr(C)]
361 #[derive(Copy, Clone)] pub struct ip6_mreq {
362 pub ipv6mr_multiaddr: in6_addr,
363 pub ipv6mr_interface: c_uint,
364 }
365 #[repr(C)]
366 #[derive(Copy, Clone)] pub struct addrinfo {
367 pub ai_flags: c_int,
368 pub ai_family: c_int,
369 pub ai_socktype: c_int,
370 pub ai_protocol: c_int,
371 pub ai_addrlen: socklen_t,
372
373 #[cfg(target_os = "linux")]
374 pub ai_addr: *mut sockaddr,
375
376 #[cfg(target_os = "linux")]
377 pub ai_canonname: *mut c_char,
378
379 #[cfg(any(target_os = "android", target_os = "nacl"))]
380 pub ai_canonname: *mut c_char,
381
382 #[cfg(any(target_os = "android", target_os = "nacl"))]
383 pub ai_addr: *mut sockaddr,
384
385 pub ai_next: *mut addrinfo,
386 }
387 #[repr(C)]
388 #[derive(Copy)] pub struct sockaddr_un {
389 pub sun_family: sa_family_t,
390 pub sun_path: [c_char; 108]
391 }
392 impl ::core::clone::Clone for sockaddr_un {
393 fn clone(&self) -> sockaddr_un { *self }
394 }
395
396 #[repr(C)]
397 #[derive(Copy, Clone)] pub struct ifaddrs {
398 pub ifa_next: *mut ifaddrs,
399 pub ifa_name: *mut c_char,
400 pub ifa_flags: c_uint,
401 pub ifa_addr: *mut sockaddr,
402 pub ifa_netmask: *mut sockaddr,
403 pub ifa_ifu: *mut sockaddr, // FIXME This should be a union
404 pub ifa_data: *mut c_void
405 }
406
407 }
408 }
409
410 #[cfg(any(target_arch = "x86",
411 target_arch = "arm",
412 target_arch = "mips",
413 target_arch = "mipsel",
414 target_arch = "powerpc",
415 target_arch = "le32"))]
416 pub mod arch {
417 pub mod c95 {
418 pub type c_char = i8;
419 pub type c_schar = i8;
420 pub type c_uchar = u8;
421 pub type c_short = i16;
422 pub type c_ushort = u16;
423 pub type c_int = i32;
424 pub type c_uint = u32;
425 pub type c_long = i32;
426 pub type c_ulong = u32;
427 pub type c_float = f32;
428 pub type c_double = f64;
429 pub type size_t = u32;
430 pub type ptrdiff_t = i32;
431 pub type clock_t = i32;
432 pub type time_t = i32;
433 pub type suseconds_t = i32;
434 pub type wchar_t = i32;
435 }
436 pub mod c99 {
437 pub type c_longlong = i64;
438 pub type c_ulonglong = u64;
439 pub type intptr_t = i32;
440 pub type uintptr_t = u32;
441 pub type intmax_t = i64;
442 pub type uintmax_t = u64;
443 }
444 #[cfg(any(target_arch = "x86",
445 target_arch = "mips",
446 target_arch = "mipsel",
447 target_arch = "powerpc",
448 target_arch = "le32",
449 all(target_arch = "arm", not(target_os = "android"))))]
450 pub mod posix88 {
451 pub type off_t = i32;
452 pub type dev_t = u64;
453 pub type ino_t = u32;
454 pub type pid_t = i32;
455 pub type uid_t = u32;
456 pub type gid_t = u32;
457 pub type useconds_t = u32;
458 pub type mode_t = u32;
459 pub type ssize_t = i32;
460 }
461 #[cfg(all(target_arch = "arm", target_os = "android"))]
462 pub mod posix88 {
463 pub type off_t = i32;
464 pub type dev_t = u32;
465 pub type ino_t = u32;
466 pub type pid_t = i32;
467 pub type uid_t = u32;
468 pub type gid_t = u32;
469 pub type useconds_t = u32;
470 pub type mode_t = u16;
471 pub type ssize_t = i32;
472 }
473 #[cfg(any(target_arch = "x86",
474 target_arch = "le32",
475 target_arch = "powerpc",
476 all(target_arch = "arm", not(target_os = "android"))))]
477 pub mod posix01 {
478 use types::os::arch::c95::{c_short, c_long, time_t};
479 use types::os::arch::posix88::{dev_t, gid_t, ino_t};
480 use types::os::arch::posix88::{mode_t, off_t};
481 use types::os::arch::posix88::{uid_t};
482
483 pub type nlink_t = u32;
484 pub type blksize_t = i32;
485 pub type blkcnt_t = i32;
486
487 #[repr(C)]
488 #[derive(Copy, Clone)] pub struct stat {
489 pub st_dev: dev_t,
490 pub __pad1: c_short,
491 pub st_ino: ino_t,
492 pub st_mode: mode_t,
493 pub st_nlink: nlink_t,
494 pub st_uid: uid_t,
495 pub st_gid: gid_t,
496 pub st_rdev: dev_t,
497 pub __pad2: c_short,
498 pub st_size: off_t,
499 pub st_blksize: blksize_t,
500 pub st_blocks: blkcnt_t,
501 pub st_atime: time_t,
502 pub st_atime_nsec: c_long,
503 pub st_mtime: time_t,
504 pub st_mtime_nsec: c_long,
505 pub st_ctime: time_t,
506 pub st_ctime_nsec: c_long,
507 pub __unused4: c_long,
508 pub __unused5: c_long,
509 }
510
511 #[repr(C)]
512 #[derive(Copy, Clone)] pub struct utimbuf {
513 pub actime: time_t,
514 pub modtime: time_t,
515 }
516
517 #[repr(C)]
518 #[derive(Copy, Clone)] pub struct pthread_attr_t {
519 pub __size: [u32; 9]
520 }
521 }
522 #[cfg(all(target_arch = "arm", target_os = "android"))]
523 pub mod posix01 {
524 use types::os::arch::c95::{c_uchar, c_uint, c_ulong, time_t};
525 use types::os::arch::c99::{c_longlong, c_ulonglong};
526 use types::os::arch::posix88::{uid_t, gid_t, ino_t};
527
528 pub type nlink_t = u16;
529 pub type blksize_t = u32;
530 pub type blkcnt_t = u32;
531
532 #[repr(C)]
533 #[derive(Copy, Clone)] pub struct stat {
534 pub st_dev: c_ulonglong,
535 pub __pad0: [c_uchar; 4],
536 pub __st_ino: ino_t,
537 pub st_mode: c_uint,
538 pub st_nlink: c_uint,
539 pub st_uid: uid_t,
540 pub st_gid: gid_t,
541 pub st_rdev: c_ulonglong,
542 pub __pad3: [c_uchar; 4],
543 pub st_size: c_longlong,
544 pub st_blksize: blksize_t,
545 pub st_blocks: c_ulonglong,
546 pub st_atime: time_t,
547 pub st_atime_nsec: c_ulong,
548 pub st_mtime: time_t,
549 pub st_mtime_nsec: c_ulong,
550 pub st_ctime: time_t,
551 pub st_ctime_nsec: c_ulong,
552 pub st_ino: c_ulonglong,
553 }
554
555 #[repr(C)]
556 #[derive(Copy, Clone)] pub struct utimbuf {
557 pub actime: time_t,
558 pub modtime: time_t,
559 }
560
561 #[repr(C)]
562 #[derive(Copy, Clone)] pub struct pthread_attr_t {
563 pub __size: [u32; 9]
564 }
565 }
566 #[cfg(any(target_arch = "mips",
567 target_arch = "mipsel"))]
568 pub mod posix01 {
569 use types::os::arch::c95::{c_long, c_ulong, time_t};
570 use types::os::arch::posix88::{gid_t, ino_t};
571 use types::os::arch::posix88::{mode_t, off_t};
572 use types::os::arch::posix88::{uid_t};
573
574 pub type nlink_t = u32;
575 pub type blksize_t = i32;
576 pub type blkcnt_t = i32;
577
578 #[repr(C)]
579 #[derive(Copy, Clone)] pub struct stat {
580 pub st_dev: c_ulong,
581 pub st_pad1: [c_long; 3],
582 pub st_ino: ino_t,
583 pub st_mode: mode_t,
584 pub st_nlink: nlink_t,
585 pub st_uid: uid_t,
586 pub st_gid: gid_t,
587 pub st_rdev: c_ulong,
588 pub st_pad2: [c_long; 2],
589 pub st_size: off_t,
590 pub st_pad3: c_long,
591 pub st_atime: time_t,
592 pub st_atime_nsec: c_long,
593 pub st_mtime: time_t,
594 pub st_mtime_nsec: c_long,
595 pub st_ctime: time_t,
596 pub st_ctime_nsec: c_long,
597 pub st_blksize: blksize_t,
598 pub st_blocks: blkcnt_t,
599 pub st_pad5: [c_long; 14],
600 }
601
602 #[repr(C)]
603 #[derive(Copy, Clone)] pub struct utimbuf {
604 pub actime: time_t,
605 pub modtime: time_t,
606 }
607
608 #[repr(C)]
609 #[derive(Copy, Clone)] pub struct pthread_attr_t {
610 pub __size: [u32; 9]
611 }
612 }
613 pub mod posix08 {}
614 pub mod bsd44 {}
615 pub mod extra {
616 use types::os::arch::c95::{c_ushort, c_int, c_uchar};
617 #[repr(C)]
618 #[derive(Copy, Clone)] pub struct sockaddr_ll {
619 pub sll_family: c_ushort,
620 pub sll_protocol: c_ushort,
621 pub sll_ifindex: c_int,
622 pub sll_hatype: c_ushort,
623 pub sll_pkttype: c_uchar,
624 pub sll_halen: c_uchar,
625 pub sll_addr: [c_uchar; 8]
626 }
627 }
628
629 }
630
631 #[cfg(any(target_arch = "x86_64",
632 target_arch = "aarch64"))]
633 pub mod arch {
634 pub mod c95 {
635 #[cfg(not(target_arch = "aarch64"))]
636 pub type c_char = i8;
637 #[cfg(target_arch = "aarch64")]
638 pub type c_char = u8;
639 pub type c_schar = i8;
640 pub type c_uchar = u8;
641 pub type c_short = i16;
642 pub type c_ushort = u16;
643 pub type c_int = i32;
644 pub type c_uint = u32;
645 pub type c_long = i64;
646 pub type c_ulong = u64;
647 pub type c_float = f32;
648 pub type c_double = f64;
649 pub type size_t = u64;
650 pub type ptrdiff_t = i64;
651 pub type clock_t = i64;
652 pub type time_t = i64;
653 pub type suseconds_t = i64;
654 #[cfg(not(target_arch = "aarch64"))]
655 pub type wchar_t = i32;
656 #[cfg(target_arch = "aarch64")]
657 pub type wchar_t = u32;
658 }
659 pub mod c99 {
660 pub type c_longlong = i64;
661 pub type c_ulonglong = u64;
662 pub type intptr_t = i64;
663 pub type uintptr_t = u64;
664 pub type intmax_t = i64;
665 pub type uintmax_t = u64;
666 }
667 pub mod posix88 {
668 pub type off_t = i64;
669 pub type dev_t = u64;
670 pub type ino_t = u64;
671 pub type pid_t = i32;
672 pub type uid_t = u32;
673 pub type gid_t = u32;
674 pub type useconds_t = u32;
675 pub type mode_t = u32;
676 pub type ssize_t = i64;
677 }
678 #[cfg(not(target_arch = "aarch64"))]
679 pub mod posix01 {
680 use types::os::arch::c95::{c_int, c_long, time_t};
681 use types::os::arch::posix88::{dev_t, gid_t, ino_t};
682 use types::os::arch::posix88::{mode_t, off_t};
683 use types::os::arch::posix88::{uid_t};
684
685 pub type nlink_t = u64;
686 pub type blksize_t = i64;
687 pub type blkcnt_t = i64;
688
689 #[repr(C)]
690 #[derive(Copy, Clone)] pub struct stat {
691 pub st_dev: dev_t,
692 pub st_ino: ino_t,
693 pub st_nlink: nlink_t,
694 pub st_mode: mode_t,
695 pub st_uid: uid_t,
696 pub st_gid: gid_t,
697 pub __pad0: c_int,
698 pub st_rdev: dev_t,
699 pub st_size: off_t,
700 pub st_blksize: blksize_t,
701 pub st_blocks: blkcnt_t,
702 pub st_atime: time_t,
703 pub st_atime_nsec: c_long,
704 pub st_mtime: time_t,
705 pub st_mtime_nsec: c_long,
706 pub st_ctime: time_t,
707 pub st_ctime_nsec: c_long,
708 pub __unused: [c_long; 3],
709 }
710
711 #[repr(C)]
712 #[derive(Copy, Clone)] pub struct utimbuf {
713 pub actime: time_t,
714 pub modtime: time_t,
715 }
716
717 #[repr(C)]
718 #[derive(Copy, Clone)] pub struct pthread_attr_t {
719 pub __size: [u64; 7]
720 }
721 }
722 #[cfg(target_arch = "aarch64")]
723 pub mod posix01 {
724 use types::os::arch::c95::{c_int, c_long, time_t};
725 use types::os::arch::posix88::{dev_t, gid_t, ino_t};
726 use types::os::arch::posix88::{mode_t, off_t};
727 use types::os::arch::posix88::{uid_t};
728
729 pub type nlink_t = u32;
730 pub type blksize_t = i32;
731 pub type blkcnt_t = i64;
732
733 #[repr(C)]
734 #[derive(Copy, Clone)] pub struct stat {
735 pub st_dev: dev_t,
736 pub st_ino: ino_t,
737 pub st_mode: mode_t,
738 pub st_nlink: nlink_t,
739 pub st_uid: uid_t,
740 pub st_gid: gid_t,
741 pub st_rdev: dev_t,
742 pub __pad1: dev_t,
743 pub st_size: off_t,
744 pub st_blksize: blksize_t,
745 pub __pad2: c_int,
746 pub st_blocks: blkcnt_t,
747 pub st_atime: time_t,
748 pub st_atime_nsec: c_long,
749 pub st_mtime: time_t,
750 pub st_mtime_nsec: c_long,
751 pub st_ctime: time_t,
752 pub st_ctime_nsec: c_long,
753 pub __unused: [c_int; 2],
754 }
755
756 #[repr(C)]
757 #[derive(Copy, Clone)] pub struct utimbuf {
758 pub actime: time_t,
759 pub modtime: time_t,
760 }
761
762 #[repr(C)]
763 #[derive(Copy, Clone)] pub struct pthread_attr_t {
764 pub __size: [u64; 8]
765 }
766 }
767 pub mod posix08 {
768 }
769 pub mod bsd44 {
770 }
771 pub mod extra {
772 use types::os::arch::c95::{c_ushort, c_int, c_uchar};
773 #[derive(Copy, Clone)] pub struct sockaddr_ll {
774 pub sll_family: c_ushort,
775 pub sll_protocol: c_ushort,
776 pub sll_ifindex: c_int,
777 pub sll_hatype: c_ushort,
778 pub sll_pkttype: c_uchar,
779 pub sll_halen: c_uchar,
780 pub sll_addr: [c_uchar; 8]
781 }
782
783 }
784 }
785 }
786
787 #[cfg(target_os = "freebsd")]
788 pub mod os {
789 pub mod common {
790 pub mod posix01 {
791 use types::common::c95::{c_void};
792 use types::os::arch::c95::{c_char, c_int, size_t,
793 time_t, suseconds_t, c_long};
794 use types::os::arch::c99::{uintptr_t};
795
796 pub type pthread_t = uintptr_t;
797 pub type rlim_t = i64;
798
799 #[repr(C)]
800 #[derive(Copy, Clone)] pub struct glob_t {
801 pub gl_pathc: size_t,
802 pub __unused1: size_t,
803 pub gl_offs: size_t,
804 pub __unused2: c_int,
805 pub gl_pathv: *mut *mut c_char,
806
807 pub __unused3: *mut c_void,
808
809 pub __unused4: *mut c_void,
810 pub __unused5: *mut c_void,
811 pub __unused6: *mut c_void,
812 pub __unused7: *mut c_void,
813 pub __unused8: *mut c_void,
814 }
815
816 #[repr(C)]
817 #[derive(Copy, Clone)] pub struct timeval {
818 pub tv_sec: time_t,
819 pub tv_usec: suseconds_t,
820 }
821
822 #[repr(C)]
823 #[derive(Copy, Clone)] pub struct timespec {
824 pub tv_sec: time_t,
825 pub tv_nsec: c_long,
826 }
827
828 pub enum timezone {}
829
830 pub type sighandler_t = size_t;
831
832 #[repr(C)]
833 #[derive(Copy, Clone)]
834 pub struct rlimit {
835 pub rlim_cur: rlim_t,
836 pub rlim_max: rlim_t,
837 }
838 }
839
840 pub mod bsd43 {
841 use types::os::common::posix01::timeval;
842 use types::os::arch::c95::c_long;
843 #[repr(C)]
844 #[derive(Copy, Clone)]
845 pub struct rusage {
846 pub ru_utime: timeval,
847 pub ru_stime: timeval,
848 pub ru_maxrss: c_long,
849 pub ru_ixrss: c_long,
850 pub ru_idrss: c_long,
851 pub ru_isrss: c_long,
852 pub ru_minflt: c_long,
853 pub ru_majflt: c_long,
854 pub ru_nswap: c_long,
855 pub ru_inblock: c_long,
856 pub ru_oublock: c_long,
857 pub ru_msgsnd: c_long,
858 pub ru_msgrcv: c_long,
859 pub ru_nsignals: c_long,
860 pub ru_nvcsw: c_long,
861 pub ru_nivcsw: c_long
862 }
863 }
864
865 pub mod bsd44 {
866 use types::common::c95::{c_void};
867 use types::os::arch::c95::{c_char, c_int, c_uint};
868
869 pub type socklen_t = u32;
870 pub type sa_family_t = u8;
871 pub type in_port_t = u16;
872 pub type in_addr_t = u32;
873 #[repr(C)]
874 #[derive(Copy, Clone)] pub struct sockaddr {
875 pub sa_len: u8,
876 pub sa_family: sa_family_t,
877 pub sa_data: [u8; 14],
878 }
879 #[repr(C)]
880 #[derive(Copy)] pub struct sockaddr_storage {
881 pub ss_len: u8,
882 pub ss_family: sa_family_t,
883 pub __ss_pad1: [u8; 6],
884 pub __ss_align: i64,
885 pub __ss_pad2: [u8; 112],
886 }
887 impl ::core::clone::Clone for sockaddr_storage {
888 fn clone(&self) -> sockaddr_storage { *self }
889 }
890 #[repr(C)]
891 #[derive(Copy, Clone)] pub struct sockaddr_in {
892 pub sin_len: u8,
893 pub sin_family: sa_family_t,
894 pub sin_port: in_port_t,
895 pub sin_addr: in_addr,
896 pub sin_zero: [u8; 8],
897 }
898 #[repr(C)]
899 #[derive(Copy, Clone)] pub struct in_addr {
900 pub s_addr: in_addr_t,
901 }
902 #[repr(C)]
903 #[derive(Copy, Clone)] pub struct sockaddr_in6 {
904 pub sin6_len: u8,
905 pub sin6_family: sa_family_t,
906 pub sin6_port: in_port_t,
907 pub sin6_flowinfo: u32,
908 pub sin6_addr: in6_addr,
909 pub sin6_scope_id: u32,
910 }
911 #[repr(C)]
912 #[derive(Copy, Clone)] pub struct in6_addr {
913 pub s6_addr: [u16; 8]
914 }
915 #[repr(C)]
916 #[derive(Copy, Clone)] pub struct ip_mreq {
917 pub imr_multiaddr: in_addr,
918 pub imr_interface: in_addr,
919 }
920 #[repr(C)]
921 #[derive(Copy, Clone)] pub struct ip6_mreq {
922 pub ipv6mr_multiaddr: in6_addr,
923 pub ipv6mr_interface: c_uint,
924 }
925 #[repr(C)]
926 #[derive(Copy, Clone)] pub struct addrinfo {
927 pub ai_flags: c_int,
928 pub ai_family: c_int,
929 pub ai_socktype: c_int,
930 pub ai_protocol: c_int,
931 pub ai_addrlen: socklen_t,
932 pub ai_canonname: *mut c_char,
933 pub ai_addr: *mut sockaddr,
934 pub ai_next: *mut addrinfo,
935 }
936 #[repr(C)]
937 #[derive(Copy)] pub struct sockaddr_un {
938 pub sun_len: u8,
939 pub sun_family: sa_family_t,
940 pub sun_path: [c_char; 104]
941 }
942 impl ::core::clone::Clone for sockaddr_un {
943 fn clone(&self) -> sockaddr_un { *self }
944 }
945 #[repr(C)]
946 #[derive(Copy, Clone)] pub struct ifaddrs {
947 pub ifa_next: *mut ifaddrs,
948 pub ifa_name: *mut c_char,
949 pub ifa_flags: c_uint,
950 pub ifa_addr: *mut sockaddr,
951 pub ifa_netmask: *mut sockaddr,
952 pub ifa_dstaddr: *mut sockaddr,
953 pub ifa_data: *mut c_void
954 }
955
956
957 }
958 }
959
960 #[cfg(target_arch = "x86_64")]
961 pub mod arch {
962 pub mod c95 {
963 pub type c_char = i8;
964 pub type c_schar = i8;
965 pub type c_uchar = u8;
966 pub type c_short = i16;
967 pub type c_ushort = u16;
968 pub type c_int = i32;
969 pub type c_uint = u32;
970 pub type c_long = i64;
971 pub type c_ulong = u64;
972 pub type c_float = f32;
973 pub type c_double = f64;
974 pub type size_t = u64;
975 pub type ptrdiff_t = i64;
976 pub type clock_t = i32;
977 pub type time_t = i64;
978 pub type suseconds_t = i64;
979 pub type wchar_t = i32;
980 }
981 pub mod c99 {
982 pub type c_longlong = i64;
983 pub type c_ulonglong = u64;
984 pub type intptr_t = i64;
985 pub type uintptr_t = u64;
986 pub type intmax_t = i64;
987 pub type uintmax_t = u64;
988 }
989 pub mod posix88 {
990 pub type off_t = i64;
991 pub type dev_t = u32;
992 pub type ino_t = u32;
993 pub type pid_t = i32;
994 pub type uid_t = u32;
995 pub type gid_t = u32;
996 pub type useconds_t = u32;
997 pub type mode_t = u16;
998 pub type ssize_t = i64;
999 }
1000 pub mod posix01 {
1001 use types::common::c95::{c_void};
1002 use types::common::c99::{uint8_t, uint32_t, int32_t};
1003 use types::os::arch::c95::{c_long, time_t};
1004 use types::os::arch::posix88::{dev_t, gid_t, ino_t};
1005 use types::os::arch::posix88::{mode_t, off_t};
1006 use types::os::arch::posix88::{uid_t};
1007
1008 pub type nlink_t = u16;
1009 pub type blksize_t = i64;
1010 pub type blkcnt_t = i64;
1011 pub type fflags_t = u32;
1012 #[repr(C)]
1013 #[derive(Copy, Clone)] pub struct stat {
1014 pub st_dev: dev_t,
1015 pub st_ino: ino_t,
1016 pub st_mode: mode_t,
1017 pub st_nlink: nlink_t,
1018 pub st_uid: uid_t,
1019 pub st_gid: gid_t,
1020 pub st_rdev: dev_t,
1021 pub st_atime: time_t,
1022 pub st_atime_nsec: c_long,
1023 pub st_mtime: time_t,
1024 pub st_mtime_nsec: c_long,
1025 pub st_ctime: time_t,
1026 pub st_ctime_nsec: c_long,
1027 pub st_size: off_t,
1028 pub st_blocks: blkcnt_t,
1029 pub st_blksize: blksize_t,
1030 pub st_flags: fflags_t,
1031 pub st_gen: uint32_t,
1032 pub st_lspare: int32_t,
1033 pub st_birthtime: time_t,
1034 pub st_birthtime_nsec: c_long,
1035 pub __unused: [uint8_t; 2],
1036 }
1037
1038 #[repr(C)]
1039 #[derive(Copy, Clone)] pub struct utimbuf {
1040 pub actime: time_t,
1041 pub modtime: time_t,
1042 }
1043
1044 pub type pthread_attr_t = *mut c_void;
1045 }
1046 pub mod posix08 {
1047 }
1048 pub mod bsd44 {
1049 }
1050 pub mod extra {
1051 }
1052 }
1053 }
1054
1055 #[cfg(target_os = "dragonfly")]
1056 pub mod os {
1057 pub mod common {
1058 pub mod posix01 {
1059 use types::common::c95::{c_void};
1060 use types::os::arch::c95::{c_char, c_int, size_t,
1061 time_t, suseconds_t, c_long};
1062 use types::os::arch::c99::{uintptr_t};
1063
1064 pub type pthread_t = uintptr_t;
1065 pub type rlim_t = i64;
1066
1067 #[repr(C)]
1068 #[derive(Copy, Clone)] pub struct glob_t {
1069 pub gl_pathc: size_t,
1070 pub __unused1: size_t,
1071 pub gl_offs: size_t,
1072 pub __unused2: c_int,
1073 pub gl_pathv: *mut *mut c_char,
1074
1075 pub __unused3: *mut c_void,
1076
1077 pub __unused4: *mut c_void,
1078 pub __unused5: *mut c_void,
1079 pub __unused6: *mut c_void,
1080 pub __unused7: *mut c_void,
1081 pub __unused8: *mut c_void,
1082 }
1083
1084 #[repr(C)]
1085 #[derive(Copy, Clone)] pub struct timeval {
1086 pub tv_sec: time_t,
1087 pub tv_usec: suseconds_t,
1088 }
1089
1090 #[repr(C)]
1091 #[derive(Copy, Clone)] pub struct timespec {
1092 pub tv_sec: time_t,
1093 pub tv_nsec: c_long,
1094 }
1095
1096 pub enum timezone {}
1097
1098 pub type sighandler_t = size_t;
1099
1100 #[repr(C)]
1101 #[derive(Copy, Clone)]
1102 pub struct rlimit {
1103 pub rlim_cur: rlim_t,
1104 pub rlim_max: rlim_t,
1105 }
1106 }
1107
1108 pub mod bsd43 {
1109 use types::os::common::posix01::timeval;
1110 use types::os::arch::c95::c_long;
1111 #[repr(C)]
1112 #[derive(Copy, Clone)]
1113 pub struct rusage {
1114 pub ru_utime: timeval,
1115 pub ru_stime: timeval,
1116 pub ru_maxrss: c_long,
1117 pub ru_ixrss: c_long,
1118 pub ru_idrss: c_long,
1119 pub ru_isrss: c_long,
1120 pub ru_minflt: c_long,
1121 pub ru_majflt: c_long,
1122 pub ru_nswap: c_long,
1123 pub ru_inblock: c_long,
1124 pub ru_oublock: c_long,
1125 pub ru_msgsnd: c_long,
1126 pub ru_msgrcv: c_long,
1127 pub ru_nsignals: c_long,
1128 pub ru_nvcsw: c_long,
1129 pub ru_nivcsw: c_long
1130 }
1131 }
1132
1133 pub mod bsd44 {
1134 use types::common::c95::{c_void};
1135 use types::os::arch::c95::{c_char, c_int, c_uint};
1136
1137 pub type socklen_t = u32;
1138 pub type sa_family_t = u8;
1139 pub type in_port_t = u16;
1140 pub type in_addr_t = u32;
1141 #[repr(C)]
1142 #[derive(Copy, Clone)] pub struct sockaddr {
1143 pub sa_len: u8,
1144 pub sa_family: sa_family_t,
1145 pub sa_data: [u8; 14],
1146 }
1147 #[repr(C)]
1148 #[derive(Copy)] pub struct sockaddr_storage {
1149 pub ss_len: u8,
1150 pub ss_family: sa_family_t,
1151 pub __ss_pad1: [u8; 6],
1152 pub __ss_align: i64,
1153 pub __ss_pad2: [u8; 112],
1154 }
1155 impl ::core::clone::Clone for sockaddr_storage {
1156 fn clone(&self) -> sockaddr_storage { *self }
1157 }
1158 #[repr(C)]
1159 #[derive(Copy, Clone)] pub struct sockaddr_in {
1160 pub sin_len: u8,
1161 pub sin_family: sa_family_t,
1162 pub sin_port: in_port_t,
1163 pub sin_addr: in_addr,
1164 pub sin_zero: [u8; 8],
1165 }
1166 #[repr(C)]
1167 #[derive(Copy, Clone)] pub struct in_addr {
1168 pub s_addr: in_addr_t,
1169 }
1170 #[repr(C)]
1171 #[derive(Copy, Clone)] pub struct sockaddr_in6 {
1172 pub sin6_len: u8,
1173 pub sin6_family: sa_family_t,
1174 pub sin6_port: in_port_t,
1175 pub sin6_flowinfo: u32,
1176 pub sin6_addr: in6_addr,
1177 pub sin6_scope_id: u32,
1178 }
1179 #[repr(C)]
1180 #[derive(Copy, Clone)] pub struct in6_addr {
1181 pub s6_addr: [u16; 8]
1182 }
1183 #[repr(C)]
1184 #[derive(Copy, Clone)] pub struct ip_mreq {
1185 pub imr_multiaddr: in_addr,
1186 pub imr_interface: in_addr,
1187 }
1188 #[repr(C)]
1189 #[derive(Copy, Clone)] pub struct ip6_mreq {
1190 pub ipv6mr_multiaddr: in6_addr,
1191 pub ipv6mr_interface: c_uint,
1192 }
1193 #[repr(C)]
1194 #[derive(Copy, Clone)] pub struct addrinfo {
1195 pub ai_flags: c_int,
1196 pub ai_family: c_int,
1197 pub ai_socktype: c_int,
1198 pub ai_protocol: c_int,
1199 pub ai_addrlen: socklen_t,
1200 pub ai_canonname: *mut c_char,
1201 pub ai_addr: *mut sockaddr,
1202 pub ai_next: *mut addrinfo,
1203 }
1204 #[repr(C)]
1205 #[derive(Copy)] pub struct sockaddr_un {
1206 pub sun_len: u8,
1207 pub sun_family: sa_family_t,
1208 pub sun_path: [c_char; 104]
1209 }
1210 impl ::core::clone::Clone for sockaddr_un {
1211 fn clone(&self) -> sockaddr_un { *self }
1212 }
1213 #[repr(C)]
1214 #[derive(Copy, Clone)] pub struct ifaddrs {
1215 pub ifa_next: *mut ifaddrs,
1216 pub ifa_name: *mut c_char,
1217 pub ifa_flags: c_uint,
1218 pub ifa_addr: *mut sockaddr,
1219 pub ifa_netmask: *mut sockaddr,
1220 pub ifa_dstaddr: *mut sockaddr,
1221 pub ifa_data: *mut c_void
1222 }
1223
1224 }
1225 }
1226
1227 #[cfg(target_arch = "x86_64")]
1228 pub mod arch {
1229 pub mod c95 {
1230 pub type c_char = i8;
1231 pub type c_schar = i8;
1232 pub type c_uchar = u8;
1233 pub type c_short = i16;
1234 pub type c_ushort = u16;
1235 pub type c_int = i32;
1236 pub type c_uint = u32;
1237 pub type c_long = i64;
1238 pub type c_ulong = u64;
1239 pub type c_float = f32;
1240 pub type c_double = f64;
1241 pub type size_t = u64;
1242 pub type ptrdiff_t = i64;
1243 pub type clock_t = i32;
1244 pub type time_t = i64;
1245 pub type suseconds_t = i64;
1246 pub type wchar_t = i32;
1247 }
1248 pub mod c99 {
1249 pub type c_longlong = i64;
1250 pub type c_ulonglong = u64;
1251 pub type intptr_t = i64;
1252 pub type uintptr_t = u64;
1253 pub type intmax_t = i64;
1254 pub type uintmax_t = u64;
1255 }
1256 pub mod posix88 {
1257 pub type off_t = i64;
1258 pub type dev_t = u32;
1259 pub type pid_t = i32;
1260 pub type uid_t = u32;
1261 pub type gid_t = u32;
1262 pub type useconds_t = u32;
1263 pub type mode_t = u16;
1264 pub type ssize_t = i64;
1265 }
1266 pub mod posix01 {
1267 use types::common::c95::{c_void};
1268 use types::common::c99::{uint16_t, uint32_t, int32_t, uint64_t, int64_t};
1269 use types::os::arch::c95::{c_long, time_t};
1270 use types::os::arch::posix88::{dev_t, gid_t};
1271 use types::os::arch::posix88::{mode_t, off_t};
1272 use types::os::arch::posix88::{uid_t};
1273
1274 pub type nlink_t = u16;
1275 pub type blksize_t = uint32_t;
1276 pub type ino_t = uint64_t;
1277 pub type blkcnt_t = i64;
1278 pub type fflags_t = u32;
1279
1280 #[repr(C)]
1281 #[derive(Copy, Clone)] pub struct stat {
1282 pub st_ino: ino_t,
1283 pub st_nlink: nlink_t,
1284 pub st_dev: dev_t,
1285 pub st_mode: mode_t,
1286 pub st_padding1: uint16_t,
1287 pub st_uid: uid_t,
1288 pub st_gid: gid_t,
1289 pub st_rdev: dev_t,
1290 pub st_atime: time_t,
1291 pub st_atime_nsec: c_long,
1292 pub st_mtime: time_t,
1293 pub st_mtime_nsec: c_long,
1294 pub st_ctime: time_t,
1295 pub st_ctime_nsec: c_long,
1296 pub st_size: off_t,
1297 pub st_blocks: blkcnt_t,
1298 pub st_blksize: blksize_t,
1299 pub st_flags: fflags_t,
1300 pub st_gen: uint32_t,
1301 pub st_lspare: int32_t,
1302 pub st_qspare1: int64_t,
1303 pub st_qspare2: int64_t,
1304 }
1305 #[repr(C)]
1306 #[derive(Copy, Clone)] pub struct utimbuf {
1307 pub actime: time_t,
1308 pub modtime: time_t,
1309 }
1310
1311 pub type pthread_attr_t = *mut c_void;
1312 }
1313 pub mod posix08 {
1314 }
1315 pub mod bsd44 {
1316 }
1317 pub mod extra {
1318 }
1319 }
1320 }
1321
1322 #[cfg(any(target_os = "bitrig", target_os = "openbsd"))]
1323 pub mod os {
1324 pub mod common {
1325 pub mod posix01 {
1326 use types::common::c95::{c_void};
1327 use types::os::arch::c95::{c_char, c_int, size_t,
1328 time_t, suseconds_t, c_long};
1329 use types::os::arch::c99::{uintptr_t};
1330
1331 pub type pthread_t = uintptr_t;
1332 pub type rlim_t = u64;
1333
1334 #[cfg(target_os = "bitrig")]
1335 #[repr(C)]
1336 #[derive(Copy, Clone)] pub struct glob_t {
1337 pub gl_pathc: c_int,
1338 pub gl_matchc: c_int,
1339 pub gl_offs: c_int,
1340 pub gl_flags: c_int,
1341 pub gl_pathv: *mut *mut c_char,
1342 pub __unused1: *mut c_void,
1343 pub __unused2: *mut c_void,
1344 pub __unused3: *mut c_void,
1345 pub __unused4: *mut c_void,
1346 pub __unused5: *mut c_void,
1347 pub __unused6: *mut c_void,
1348 pub __unused7: *mut c_void,
1349 }
1350
1351 #[cfg(target_os = "openbsd")]
1352 #[repr(C)]
1353 #[derive(Copy, Clone)] pub struct glob_t {
1354 pub gl_pathc: c_int,
1355 pub __unused1: c_int,
1356 pub gl_offs: c_int,
1357 pub __unused2: c_int,
1358 pub gl_pathv: *mut *mut c_char,
1359
1360 pub __unused3: *mut c_void,
1361
1362 pub __unused4: *mut c_void,
1363 pub __unused5: *mut c_void,
1364 pub __unused6: *mut c_void,
1365 pub __unused7: *mut c_void,
1366 pub __unused8: *mut c_void,
1367 pub __unused9: *mut c_void,
1368 }
1369
1370 #[repr(C)]
1371 #[derive(Copy, Clone)] pub struct timeval {
1372 pub tv_sec: time_t,
1373 pub tv_usec: suseconds_t,
1374 }
1375
1376 #[repr(C)]
1377 #[derive(Copy, Clone)] pub struct timespec {
1378 pub tv_sec: time_t,
1379 pub tv_nsec: c_long,
1380 }
1381
1382 pub enum timezone {}
1383
1384 pub type sighandler_t = size_t;
1385
1386 #[repr(C)]
1387 #[derive(Copy, Clone)]
1388 pub struct rlimit {
1389 pub rlim_cur: rlim_t,
1390 pub rlim_max: rlim_t,
1391 }
1392 }
1393
1394 pub mod bsd43 {
1395 use types::os::common::posix01::timeval;
1396 use types::os::arch::c95::c_long;
1397 #[repr(C)]
1398 #[derive(Copy, Clone)]
1399 pub struct rusage {
1400 pub ru_utime: timeval,
1401 pub ru_stime: timeval,
1402 pub ru_maxrss: c_long,
1403 pub ru_ixrss: c_long,
1404 pub ru_idrss: c_long,
1405 pub ru_isrss: c_long,
1406 pub ru_minflt: c_long,
1407 pub ru_majflt: c_long,
1408 pub ru_nswap: c_long,
1409 pub ru_inblock: c_long,
1410 pub ru_oublock: c_long,
1411 pub ru_msgsnd: c_long,
1412 pub ru_msgrcv: c_long,
1413 pub ru_nsignals: c_long,
1414 pub ru_nvcsw: c_long,
1415 pub ru_nivcsw: c_long
1416 }
1417 }
1418
1419 pub mod bsd44 {
1420 use types::common::c95::{c_void};
1421 use types::os::arch::c95::{c_char, c_int, c_uint};
1422
1423 pub type socklen_t = u32;
1424 pub type sa_family_t = u8;
1425 pub type in_port_t = u16;
1426 pub type in_addr_t = u32;
1427 #[repr(C)]
1428 #[derive(Copy, Clone)] pub struct sockaddr {
1429 pub sa_len: u8,
1430 pub sa_family: sa_family_t,
1431 pub sa_data: [u8; 14],
1432 }
1433 #[repr(C)]
1434 #[derive(Copy)] pub struct sockaddr_storage {
1435 pub ss_len: u8,
1436 pub ss_family: sa_family_t,
1437 pub __ss_pad1: [u8; 6],
1438 pub __ss_pad2: i64,
1439 pub __ss_pad3: [u8; 240],
1440 }
1441 impl ::core::clone::Clone for sockaddr_storage {
1442 fn clone(&self) -> sockaddr_storage { *self }
1443 }
1444 #[repr(C)]
1445 #[derive(Copy, Clone)] pub struct sockaddr_in {
1446 pub sin_len: u8,
1447 pub sin_family: sa_family_t,
1448 pub sin_port: in_port_t,
1449 pub sin_addr: in_addr,
1450 pub sin_zero: [u8; 8],
1451 }
1452 #[repr(C)]
1453 #[derive(Copy, Clone)] pub struct in_addr {
1454 pub s_addr: in_addr_t,
1455 }
1456 #[repr(C)]
1457 #[derive(Copy, Clone)] pub struct sockaddr_in6 {
1458 pub sin6_len: u8,
1459 pub sin6_family: sa_family_t,
1460 pub sin6_port: in_port_t,
1461 pub sin6_flowinfo: u32,
1462 pub sin6_addr: in6_addr,
1463 pub sin6_scope_id: u32,
1464 }
1465 #[repr(C)]
1466 #[derive(Copy, Clone)] pub struct in6_addr {
1467 pub s6_addr: [u16; 8]
1468 }
1469 #[repr(C)]
1470 #[derive(Copy, Clone)] pub struct ip_mreq {
1471 pub imr_multiaddr: in_addr,
1472 pub imr_interface: in_addr,
1473 }
1474 #[repr(C)]
1475 #[derive(Copy, Clone)] pub struct ip6_mreq {
1476 pub ipv6mr_multiaddr: in6_addr,
1477 pub ipv6mr_interface: c_uint,
1478 }
1479 #[repr(C)]
1480 #[derive(Copy, Clone)] pub struct addrinfo {
1481 pub ai_flags: c_int,
1482 pub ai_family: c_int,
1483 pub ai_socktype: c_int,
1484 pub ai_protocol: c_int,
1485 pub ai_addrlen: socklen_t,
1486 pub ai_addr: *mut sockaddr,
1487 pub ai_canonname: *mut c_char,
1488 pub ai_next: *mut addrinfo,
1489 }
1490 #[repr(C)]
1491 #[derive(Copy)] pub struct sockaddr_un {
1492 pub sun_len: u8,
1493 pub sun_family: sa_family_t,
1494 pub sun_path: [c_char; 104]
1495 }
1496 impl ::core::clone::Clone for sockaddr_un {
1497 fn clone(&self) -> sockaddr_un { *self }
1498 }
1499 #[repr(C)]
1500 #[derive(Copy, Clone)] pub struct ifaddrs {
1501 pub ifa_next: *mut ifaddrs,
1502 pub ifa_name: *mut c_char,
1503 pub ifa_flags: c_uint,
1504 pub ifa_addr: *mut sockaddr,
1505 pub ifa_netmask: *mut sockaddr,
1506 pub ifa_dstaddr: *mut sockaddr,
1507 pub ifa_data: *mut c_void
1508 }
1509 }
1510 }
1511
1512 #[cfg(target_arch = "x86_64")]
1513 pub mod arch {
1514 pub mod c95 {
1515 pub type c_char = i8;
1516 pub type c_schar = i8;
1517 pub type c_uchar = u8;
1518 pub type c_short = i16;
1519 pub type c_ushort = u16;
1520 pub type c_int = i32;
1521 pub type c_uint = u32;
1522 pub type c_long = i64;
1523 pub type c_ulong = u64;
1524 pub type c_float = f32;
1525 pub type c_double = f64;
1526 pub type size_t = u64;
1527 pub type ptrdiff_t = i64;
1528 pub type clock_t = i64;
1529 pub type time_t = i64;
1530 pub type suseconds_t = i64;
1531 pub type wchar_t = i32;
1532 }
1533 pub mod c99 {
1534 pub type c_longlong = i64;
1535 pub type c_ulonglong = u64;
1536 pub type intptr_t = i64;
1537 pub type uintptr_t = u64;
1538 pub type intmax_t = i64;
1539 pub type uintmax_t = u64;
1540 }
1541 pub mod posix88 {
1542 use types::os::arch::c95::{c_long};
1543 pub type off_t = i64;
1544 pub type dev_t = i32;
1545 pub type pid_t = i32;
1546 pub type uid_t = u32;
1547 pub type gid_t = u32;
1548 pub type useconds_t = u32;
1549 pub type mode_t = u32;
1550 pub type ssize_t = c_long;
1551 }
1552 pub mod posix01 {
1553 use types::common::c95::{c_void};
1554 use types::common::c99::{uint32_t, uint64_t};
1555 use types::os::arch::c95::{c_long, time_t};
1556 use types::os::arch::posix88::{dev_t, gid_t};
1557 use types::os::arch::posix88::{mode_t, off_t};
1558 use types::os::arch::posix88::{uid_t};
1559
1560 pub type nlink_t = uint32_t;
1561 pub type blksize_t = uint32_t;
1562 pub type ino_t = uint64_t;
1563 pub type blkcnt_t = i64;
1564 pub type fflags_t = u32; // type not declared, but struct stat have u_int32_t
1565
1566 #[repr(C)]
1567 #[derive(Copy, Clone)] pub struct stat {
1568 pub st_mode: mode_t,
1569 pub st_dev: dev_t,
1570 pub st_ino: ino_t,
1571 pub st_nlink: nlink_t,
1572 pub st_uid: uid_t,
1573 pub st_gid: gid_t,
1574 pub st_rdev: dev_t,
1575 pub st_atime: time_t,
1576 pub st_atime_nsec: c_long,
1577 pub st_mtime: time_t,
1578 pub st_mtime_nsec: c_long,
1579 pub st_ctime: time_t,
1580 pub st_ctime_nsec: c_long,
1581 pub st_size: off_t,
1582 pub st_blocks: blkcnt_t,
1583 pub st_blksize: blksize_t,
1584 pub st_flags: fflags_t,
1585 pub st_gen: uint32_t,
1586 pub st_birthtime: time_t,
1587 pub st_birthtime_nsec: c_long,
1588 }
1589 #[repr(C)]
1590 #[derive(Copy, Clone)] pub struct utimbuf {
1591 pub actime: time_t,
1592 pub modtime: time_t,
1593 }
1594
1595 pub type pthread_attr_t = *mut c_void;
1596 }
1597 pub mod posix08 {
1598 }
1599 pub mod bsd44 {
1600 }
1601 pub mod extra {
1602 }
1603 }
1604 }
1605
1606 #[cfg(target_os = "windows")]
1607 pub mod os {
1608 pub mod common {
1609 pub mod posix01 {
1610 use types::os::arch::c95::{c_short, time_t, c_long};
1611 use types::os::arch::extra::{int64, time64_t};
1612 use types::os::arch::posix88::{dev_t, ino_t};
1613
1614 // pub Note: this is the struct called stat64 in Windows. Not stat,
1615 // nor stati64.
1616 #[repr(C)]
1617 #[derive(Copy, Clone)] pub struct stat {
1618 pub st_dev: dev_t,
1619 pub st_ino: ino_t,
1620 pub st_mode: u16,
1621 pub st_nlink: c_short,
1622 pub st_uid: c_short,
1623 pub st_gid: c_short,
1624 pub st_rdev: dev_t,
1625 pub st_size: int64,
1626 pub st_atime: time64_t,
1627 pub st_mtime: time64_t,
1628 pub st_ctime: time64_t,
1629 }
1630
1631 // note that this is called utimbuf64 in Windows
1632 #[repr(C)]
1633 #[derive(Copy, Clone)] pub struct utimbuf {
1634 pub actime: time64_t,
1635 pub modtime: time64_t,
1636 }
1637
1638 #[repr(C)]
1639 #[derive(Copy, Clone)] pub struct timeval {
1640 pub tv_sec: c_long,
1641 pub tv_usec: c_long,
1642 }
1643
1644 #[repr(C)]
1645 #[derive(Copy, Clone)] pub struct timespec {
1646 pub tv_sec: time_t,
1647 pub tv_nsec: c_long,
1648 }
1649
1650 pub enum timezone {}
1651 }
1652
1653 pub mod bsd44 {
1654 use types::os::arch::c95::{c_char, c_int, c_uint, size_t};
1655 use types::os::arch::c99::uintptr_t;
1656
1657 pub type SOCKET = uintptr_t;
1658 pub type socklen_t = c_int;
1659 pub type sa_family_t = u16;
1660 pub type in_port_t = u16;
1661 pub type in_addr_t = u32;
1662 #[repr(C)]
1663 #[derive(Copy, Clone)] pub struct sockaddr {
1664 pub sa_family: sa_family_t,
1665 pub sa_data: [u8; 14],
1666 }
1667 #[repr(C)]
1668 #[derive(Copy)] pub struct sockaddr_storage {
1669 pub ss_family: sa_family_t,
1670 pub __ss_pad1: [u8; 6],
1671 pub __ss_align: i64,
1672 pub __ss_pad2: [u8; 112],
1673 }
1674 impl ::core::clone::Clone for sockaddr_storage {
1675 fn clone(&self) -> sockaddr_storage { *self }
1676 }
1677 #[repr(C)]
1678 #[derive(Copy, Clone)] pub struct sockaddr_in {
1679 pub sin_family: sa_family_t,
1680 pub sin_port: in_port_t,
1681 pub sin_addr: in_addr,
1682 pub sin_zero: [u8; 8],
1683 }
1684 #[repr(C)]
1685 #[derive(Copy, Clone)] pub struct in_addr {
1686 pub s_addr: in_addr_t,
1687 }
1688 #[repr(C)]
1689 #[derive(Copy, Clone)] pub struct sockaddr_in6 {
1690 pub sin6_family: sa_family_t,
1691 pub sin6_port: in_port_t,
1692 pub sin6_flowinfo: u32,
1693 pub sin6_addr: in6_addr,
1694 pub sin6_scope_id: u32,
1695 }
1696 #[repr(C)]
1697 #[derive(Copy, Clone)] pub struct in6_addr {
1698 pub s6_addr: [u16; 8]
1699 }
1700 #[repr(C)]
1701 #[derive(Copy, Clone)] pub struct ip_mreq {
1702 pub imr_multiaddr: in_addr,
1703 pub imr_interface: in_addr,
1704 }
1705 #[repr(C)]
1706 #[derive(Copy, Clone)] pub struct ip6_mreq {
1707 pub ipv6mr_multiaddr: in6_addr,
1708 pub ipv6mr_interface: c_uint,
1709 }
1710 #[repr(C)]
1711 #[derive(Copy, Clone)] pub struct addrinfo {
1712 pub ai_flags: c_int,
1713 pub ai_family: c_int,
1714 pub ai_socktype: c_int,
1715 pub ai_protocol: c_int,
1716 pub ai_addrlen: size_t,
1717 pub ai_canonname: *mut c_char,
1718 pub ai_addr: *mut sockaddr,
1719 pub ai_next: *mut addrinfo,
1720 }
1721 #[repr(C)]
1722 #[derive(Copy)] pub struct sockaddr_un {
1723 pub sun_family: sa_family_t,
1724 pub sun_path: [c_char; 108]
1725 }
1726 impl ::core::clone::Clone for sockaddr_un {
1727 fn clone(&self) -> sockaddr_un { *self }
1728 }
1729 }
1730 }
1731
1732 pub mod arch {
1733 pub mod c95 {
1734 pub type c_char = i8;
1735 pub type c_schar = i8;
1736 pub type c_uchar = u8;
1737 pub type c_short = i16;
1738 pub type c_ushort = u16;
1739 pub type c_int = i32;
1740 pub type c_uint = u32;
1741 pub type c_long = i32;
1742 pub type c_ulong = u32;
1743 pub type c_float = f32;
1744 pub type c_double = f64;
1745
1746 #[cfg(target_arch = "x86")]
1747 pub type size_t = u32;
1748 #[cfg(target_arch = "x86_64")]
1749 pub type size_t = u64;
1750
1751 #[cfg(target_arch = "x86")]
1752 pub type ptrdiff_t = i32;
1753 #[cfg(target_arch = "x86_64")]
1754 pub type ptrdiff_t = i64;
1755
1756 pub type clock_t = i32;
1757
1758 #[cfg(target_arch = "x86")]
1759 pub type time_t = i32;
1760 #[cfg(target_arch = "x86_64")]
1761 pub type time_t = i64;
1762
1763 #[cfg(target_arch = "x86")]
1764 pub type suseconds_t = i32;
1765 #[cfg(target_arch = "x86_64")]
1766 pub type suseconds_t = i64;
1767
1768 pub type wchar_t = u16;
1769 }
1770
1771 pub mod c99 {
1772 pub type c_longlong = i64;
1773 pub type c_ulonglong = u64;
1774
1775 #[cfg(target_arch = "x86")]
1776 pub type intptr_t = i32;
1777 #[cfg(target_arch = "x86_64")]
1778 pub type intptr_t = i64;
1779
1780 #[cfg(target_arch = "x86")]
1781 pub type uintptr_t = u32;
1782 #[cfg(target_arch = "x86_64")]
1783 pub type uintptr_t = u64;
1784
1785 pub type intmax_t = i64;
1786 pub type uintmax_t = u64;
1787 }
1788
1789 pub mod posix88 {
1790 pub type off_t = i32;
1791 pub type dev_t = u32;
1792 pub type ino_t = u16;
1793
1794 pub type pid_t = u32;
1795
1796 pub type useconds_t = u32;
1797 pub type mode_t = u16;
1798
1799 #[cfg(target_arch = "x86")]
1800 pub type ssize_t = i32;
1801 #[cfg(target_arch = "x86_64")]
1802 pub type ssize_t = i64;
1803 }
1804
1805 pub mod posix01 {
1806 }
1807 pub mod posix08 {
1808 }
1809 pub mod bsd44 {
1810 }
1811 pub mod extra {
1812 use consts::os::extra::{MAX_PROTOCOL_CHAIN,
1813 WSAPROTOCOL_LEN};
1814 use types::common::c95::c_void;
1815 use types::os::arch::c95::{c_char, c_int, c_uint, size_t};
1816 use types::os::arch::c95::{c_long, c_ulong};
1817 use types::os::arch::c95::{wchar_t};
1818 use types::os::arch::c99::{c_ulonglong, c_longlong, uintptr_t};
1819
1820 pub type BOOL = c_int;
1821 pub type BYTE = u8;
1822 pub type BOOLEAN = BYTE;
1823 pub type CCHAR = c_char;
1824 pub type CHAR = c_char;
1825
1826 pub type DWORD = c_ulong;
1827 pub type DWORDLONG = c_ulonglong;
1828
1829 pub type HANDLE = LPVOID;
1830 pub type HINSTANCE = HANDLE;
1831 pub type HMODULE = HINSTANCE;
1832
1833 pub type LONG = c_long;
1834 pub type PLONG = *mut c_long;
1835
1836 #[cfg(target_arch = "x86")]
1837 pub type LONG_PTR = c_long;
1838 #[cfg(target_arch = "x86_64")]
1839 pub type LONG_PTR = i64;
1840
1841 pub type LARGE_INTEGER = c_longlong;
1842 pub type PLARGE_INTEGER = *mut c_longlong;
1843
1844 pub type LPCWSTR = *const WCHAR;
1845 pub type LPCSTR = *const CHAR;
1846
1847 pub type LPWSTR = *mut WCHAR;
1848 pub type LPSTR = *mut CHAR;
1849
1850 pub type LPWCH = *mut WCHAR;
1851 pub type LPCH = *mut CHAR;
1852
1853 #[repr(C)]
1854 #[derive(Copy, Clone)] pub struct SECURITY_ATTRIBUTES {
1855 pub nLength: DWORD,
1856 pub lpSecurityDescriptor: LPVOID,
1857 pub bInheritHandle: BOOL,
1858 }
1859 pub type LPSECURITY_ATTRIBUTES = *mut SECURITY_ATTRIBUTES;
1860
1861 pub type LPVOID = *mut c_void;
1862 pub type LPCVOID = *const c_void;
1863 pub type LPBYTE = *mut BYTE;
1864 pub type LPWORD = *mut WORD;
1865 pub type LPDWORD = *mut DWORD;
1866 pub type LPHANDLE = *mut HANDLE;
1867
1868 pub type LRESULT = LONG_PTR;
1869 pub type PBOOL = *mut BOOL;
1870 pub type WCHAR = wchar_t;
1871 pub type WORD = u16;
1872 pub type SIZE_T = size_t;
1873
1874 pub type time64_t = i64;
1875 pub type int64 = i64;
1876
1877 #[repr(C)]
1878 #[derive(Copy, Clone)] pub struct STARTUPINFO {
1879 pub cb: DWORD,
1880 pub lpReserved: LPWSTR,
1881 pub lpDesktop: LPWSTR,
1882 pub lpTitle: LPWSTR,
1883 pub dwX: DWORD,
1884 pub dwY: DWORD,
1885 pub dwXSize: DWORD,
1886 pub dwYSize: DWORD,
1887 pub dwXCountChars: DWORD,
1888 pub dwYCountCharts: DWORD,
1889 pub dwFillAttribute: DWORD,
1890 pub dwFlags: DWORD,
1891 pub wShowWindow: WORD,
1892 pub cbReserved2: WORD,
1893 pub lpReserved2: LPBYTE,
1894 pub hStdInput: HANDLE,
1895 pub hStdOutput: HANDLE,
1896 pub hStdError: HANDLE,
1897 }
1898 pub type LPSTARTUPINFO = *mut STARTUPINFO;
1899
1900 #[repr(C)]
1901 #[derive(Copy, Clone)] pub struct PROCESS_INFORMATION {
1902 pub hProcess: HANDLE,
1903 pub hThread: HANDLE,
1904 pub dwProcessId: DWORD,
1905 pub dwThreadId: DWORD,
1906 }
1907 pub type LPPROCESS_INFORMATION = *mut PROCESS_INFORMATION;
1908
1909 #[repr(C)]
1910 #[derive(Copy, Clone)] pub struct SYSTEM_INFO {
1911 pub wProcessorArchitecture: WORD,
1912 pub wReserved: WORD,
1913 pub dwPageSize: DWORD,
1914 pub lpMinimumApplicationAddress: LPVOID,
1915 pub lpMaximumApplicationAddress: LPVOID,
1916 pub dwActiveProcessorMask: uintptr_t,
1917 pub dwNumberOfProcessors: DWORD,
1918 pub dwProcessorType: DWORD,
1919 pub dwAllocationGranularity: DWORD,
1920 pub wProcessorLevel: WORD,
1921 pub wProcessorRevision: WORD,
1922 }
1923 pub type LPSYSTEM_INFO = *mut SYSTEM_INFO;
1924
1925 #[repr(C)]
1926 #[derive(Copy, Clone)] pub struct MEMORY_BASIC_INFORMATION {
1927 pub BaseAddress: LPVOID,
1928 pub AllocationBase: LPVOID,
1929 pub AllocationProtect: DWORD,
1930 pub RegionSize: SIZE_T,
1931 pub State: DWORD,
1932 pub Protect: DWORD,
1933 pub Type: DWORD,
1934 }
1935 pub type LPMEMORY_BASIC_INFORMATION = *mut MEMORY_BASIC_INFORMATION;
1936
1937 #[repr(C)]
1938 #[derive(Copy, Clone)] pub struct OVERLAPPED {
1939 pub Internal: *mut c_ulong,
1940 pub InternalHigh: *mut c_ulong,
1941 pub Offset: DWORD,
1942 pub OffsetHigh: DWORD,
1943 pub hEvent: HANDLE,
1944 }
1945
1946 pub type LPOVERLAPPED = *mut OVERLAPPED;
1947
1948 #[repr(C)]
1949 #[derive(Copy, Clone)] pub struct FILETIME {
1950 pub dwLowDateTime: DWORD,
1951 pub dwHighDateTime: DWORD,
1952 }
1953
1954 pub type LPFILETIME = *mut FILETIME;
1955
1956 #[repr(C)]
1957 #[derive(Copy, Clone)] pub struct GUID {
1958 pub Data1: DWORD,
1959 pub Data2: WORD,
1960 pub Data3: WORD,
1961 pub Data4: [BYTE; 8],
1962 }
1963
1964 #[repr(C)]
1965 #[derive(Copy, Clone)] pub struct WSAPROTOCOLCHAIN {
1966 pub ChainLen: c_int,
1967 pub ChainEntries: [DWORD; MAX_PROTOCOL_CHAIN as usize],
1968 }
1969
1970 pub type LPWSAPROTOCOLCHAIN = *mut WSAPROTOCOLCHAIN;
1971
1972 #[repr(C)]
1973 #[derive(Copy)] pub struct WSAPROTOCOL_INFO {
1974 pub dwServiceFlags1: DWORD,
1975 pub dwServiceFlags2: DWORD,
1976 pub dwServiceFlags3: DWORD,
1977 pub dwServiceFlags4: DWORD,
1978 pub dwProviderFlags: DWORD,
1979 pub ProviderId: GUID,
1980 pub dwCatalogEntryId: DWORD,
1981 pub ProtocolChain: WSAPROTOCOLCHAIN,
1982 pub iVersion: c_int,
1983 pub iAddressFamily: c_int,
1984 pub iMaxSockAddr: c_int,
1985 pub iMinSockAddr: c_int,
1986 pub iSocketType: c_int,
1987 pub iProtocol: c_int,
1988 pub iProtocolMaxOffset: c_int,
1989 pub iNetworkByteOrder: c_int,
1990 pub iSecurityScheme: c_int,
1991 pub dwMessageSize: DWORD,
1992 pub dwProviderReserved: DWORD,
1993 pub szProtocol: [u8; WSAPROTOCOL_LEN as usize + 1],
1994 }
1995 impl ::core::clone::Clone for WSAPROTOCOL_INFO {
1996 fn clone(&self) -> WSAPROTOCOL_INFO { *self }
1997 }
1998
1999 pub type LPWSAPROTOCOL_INFO = *mut WSAPROTOCOL_INFO;
2000
2001 pub type GROUP = c_uint;
2002
2003 #[repr(C)]
2004 #[derive(Copy)] pub struct WIN32_FIND_DATAW {
2005 pub dwFileAttributes: DWORD,
2006 pub ftCreationTime: FILETIME,
2007 pub ftLastAccessTime: FILETIME,
2008 pub ftLastWriteTime: FILETIME,
2009 pub nFileSizeHigh: DWORD,
2010 pub nFileSizeLow: DWORD,
2011 pub dwReserved0: DWORD,
2012 pub dwReserved1: DWORD,
2013 pub cFileName: [wchar_t; 260], // #define MAX_PATH 260
2014 pub cAlternateFileName: [wchar_t; 14],
2015 }
2016 impl ::core::clone::Clone for WIN32_FIND_DATAW {
2017 fn clone(&self) -> WIN32_FIND_DATAW { *self }
2018 }
2019
2020 pub type LPWIN32_FIND_DATAW = *mut WIN32_FIND_DATAW;
2021 }
2022 }
2023 }
2024
2025 #[cfg(any(target_os = "macos", target_os = "ios"))]
2026 pub mod os {
2027 pub mod common {
2028 pub mod posix01 {
2029 use types::common::c95::c_void;
2030 use types::os::arch::c95::{c_char, c_int, size_t, time_t};
2031 use types::os::arch::c95::{suseconds_t, c_long};
2032 use types::os::arch::c99::{uintptr_t};
2033
2034 pub type pthread_t = uintptr_t;
2035 pub type rlim_t = u64;
2036
2037 #[repr(C)]
2038 #[derive(Copy, Clone)] pub struct glob_t {
2039 pub gl_pathc: size_t,
2040 pub __unused1: c_int,
2041 pub gl_offs: size_t,
2042 pub __unused2: c_int,
2043 pub gl_pathv: *mut *mut c_char,
2044
2045 pub __unused3: *mut c_void,
2046
2047 pub __unused4: *mut c_void,
2048 pub __unused5: *mut c_void,
2049 pub __unused6: *mut c_void,
2050 pub __unused7: *mut c_void,
2051 pub __unused8: *mut c_void,
2052 }
2053
2054 #[repr(C)]
2055 #[derive(Copy, Clone)] pub struct timeval {
2056 pub tv_sec: time_t,
2057 pub tv_usec: suseconds_t,
2058 }
2059
2060 #[repr(C)]
2061 #[derive(Copy, Clone)] pub struct timespec {
2062 pub tv_sec: time_t,
2063 pub tv_nsec: c_long,
2064 }
2065
2066 pub enum timezone {}
2067
2068 pub type sighandler_t = size_t;
2069
2070 #[repr(C)]
2071 #[derive(Copy, Clone)]
2072 pub struct rlimit {
2073 pub rlim_cur: rlim_t,
2074 pub rlim_max: rlim_t,
2075 }
2076 }
2077
2078 pub mod bsd43 {
2079 use types::os::common::posix01::timeval;
2080 use types::os::arch::c95::c_long;
2081 #[repr(C)]
2082 #[derive(Copy, Clone)]
2083 pub struct rusage {
2084 pub ru_utime: timeval,
2085 pub ru_stime: timeval,
2086 pub ru_maxrss: c_long,
2087 pub ru_ixrss: c_long,
2088 pub ru_idrss: c_long,
2089 pub ru_isrss: c_long,
2090 pub ru_minflt: c_long,
2091 pub ru_majflt: c_long,
2092 pub ru_nswap: c_long,
2093 pub ru_inblock: c_long,
2094 pub ru_oublock: c_long,
2095 pub ru_msgsnd: c_long,
2096 pub ru_msgrcv: c_long,
2097 pub ru_nsignals: c_long,
2098 pub ru_nvcsw: c_long,
2099 pub ru_nivcsw: c_long
2100 }
2101 }
2102
2103 pub mod bsd44 {
2104 use types::common::c95::{c_void};
2105 use types::os::arch::c95::{c_char, c_int, c_uint};
2106
2107 pub type socklen_t = u32;
2108 pub type sa_family_t = u8;
2109 pub type in_port_t = u16;
2110 pub type in_addr_t = u32;
2111 #[repr(C)]
2112 #[derive(Copy, Clone)] pub struct sockaddr {
2113 pub sa_len: u8,
2114 pub sa_family: sa_family_t,
2115 pub sa_data: [u8; 14],
2116 }
2117
2118 #[repr(C)]
2119 #[derive(Copy)] pub struct sockaddr_storage {
2120 pub ss_len: u8,
2121 pub ss_family: sa_family_t,
2122 pub __ss_pad1: [u8; 6],
2123 pub __ss_align: i64,
2124 pub __ss_pad2: [u8; 112],
2125 }
2126 impl ::core::clone::Clone for sockaddr_storage {
2127 fn clone(&self) -> sockaddr_storage { *self }
2128 }
2129
2130 #[repr(C)]
2131 #[derive(Copy, Clone)] pub struct sockaddr_in {
2132 pub sin_len: u8,
2133 pub sin_family: sa_family_t,
2134 pub sin_port: in_port_t,
2135 pub sin_addr: in_addr,
2136 pub sin_zero: [u8; 8],
2137 }
2138
2139 #[repr(C)]
2140 #[derive(Copy, Clone)] pub struct in_addr {
2141 pub s_addr: in_addr_t,
2142 }
2143
2144 #[repr(C)]
2145 #[derive(Copy, Clone)] pub struct sockaddr_in6 {
2146 pub sin6_len: u8,
2147 pub sin6_family: sa_family_t,
2148 pub sin6_port: in_port_t,
2149 pub sin6_flowinfo: u32,
2150 pub sin6_addr: in6_addr,
2151 pub sin6_scope_id: u32,
2152 }
2153
2154 #[repr(C)]
2155 #[derive(Copy, Clone)] pub struct in6_addr {
2156 pub s6_addr: [u16; 8]
2157 }
2158
2159 #[repr(C)]
2160 #[derive(Copy, Clone)] pub struct ip_mreq {
2161 pub imr_multiaddr: in_addr,
2162 pub imr_interface: in_addr,
2163 }
2164
2165 #[repr(C)]
2166 #[derive(Copy, Clone)] pub struct ip6_mreq {
2167 pub ipv6mr_multiaddr: in6_addr,
2168 pub ipv6mr_interface: c_uint,
2169 }
2170
2171 #[repr(C)]
2172 #[derive(Copy, Clone)] pub struct addrinfo {
2173 pub ai_flags: c_int,
2174 pub ai_family: c_int,
2175 pub ai_socktype: c_int,
2176 pub ai_protocol: c_int,
2177 pub ai_addrlen: socklen_t,
2178 pub ai_canonname: *mut c_char,
2179 pub ai_addr: *mut sockaddr,
2180 pub ai_next: *mut addrinfo,
2181 }
2182
2183 #[repr(C)]
2184 #[derive(Copy)] pub struct sockaddr_un {
2185 pub sun_len: u8,
2186 pub sun_family: sa_family_t,
2187 pub sun_path: [c_char; 104]
2188 }
2189 impl ::core::clone::Clone for sockaddr_un {
2190 fn clone(&self) -> sockaddr_un { *self }
2191 }
2192
2193 #[repr(C)]
2194 #[derive(Copy, Clone)] pub struct ifaddrs {
2195 pub ifa_next: *mut ifaddrs,
2196 pub ifa_name: *mut c_char,
2197 pub ifa_flags: c_uint,
2198 pub ifa_addr: *mut sockaddr,
2199 pub ifa_netmask: *mut sockaddr,
2200 pub ifa_dstaddr: *mut sockaddr,
2201 pub ifa_data: *mut c_void
2202 }
2203 }
2204 }
2205
2206 #[cfg(any(target_arch = "arm", target_arch = "x86"))]
2207 pub mod arch {
2208 pub mod c95 {
2209 pub type c_char = i8;
2210 pub type c_schar = i8;
2211 pub type c_uchar = u8;
2212 pub type c_short = i16;
2213 pub type c_ushort = u16;
2214 pub type c_int = i32;
2215 pub type c_uint = u32;
2216 pub type c_long = i32;
2217 pub type c_ulong = u32;
2218 pub type c_float = f32;
2219 pub type c_double = f64;
2220 pub type size_t = u32;
2221 pub type ptrdiff_t = i32;
2222 pub type clock_t = c_ulong;
2223 pub type time_t = c_long;
2224 pub type suseconds_t = i32;
2225 pub type wchar_t = i32;
2226 }
2227 pub mod c99 {
2228 pub type c_longlong = i64;
2229 pub type c_ulonglong = u64;
2230 pub type intptr_t = i32;
2231 pub type uintptr_t = u32;
2232 pub type intmax_t = i64;
2233 pub type uintmax_t = u64;
2234 }
2235 pub mod posix88 {
2236 use types::os::arch::c95::c_long;
2237
2238 pub type off_t = i64;
2239 pub type dev_t = i32;
2240 pub type ino_t = u64;
2241 pub type pid_t = i32;
2242 pub type uid_t = u32;
2243 pub type gid_t = u32;
2244 pub type useconds_t = u32;
2245 pub type mode_t = u16;
2246 pub type ssize_t = c_long;
2247 }
2248 pub mod posix01 {
2249 use types::common::c99::{int32_t, int64_t, uint32_t};
2250 use types::os::arch::c95::{c_char, c_long, time_t};
2251 use types::os::arch::posix88::{dev_t, gid_t, ino_t,
2252 mode_t, off_t, uid_t};
2253
2254 pub type nlink_t = u16;
2255 pub type blksize_t = i32;
2256 pub type blkcnt_t = i64;
2257
2258 #[repr(C)]
2259 #[derive(Copy, Clone)] pub struct stat {
2260 pub st_dev: dev_t,
2261 pub st_mode: mode_t,
2262 pub st_nlink: nlink_t,
2263 pub st_ino: ino_t,
2264 pub st_uid: uid_t,
2265 pub st_gid: gid_t,
2266 pub st_rdev: dev_t,
2267 pub st_atime: time_t,
2268 pub st_atime_nsec: c_long,
2269 pub st_mtime: time_t,
2270 pub st_mtime_nsec: c_long,
2271 pub st_ctime: time_t,
2272 pub st_ctime_nsec: c_long,
2273 pub st_birthtime: time_t,
2274 pub st_birthtime_nsec: c_long,
2275 pub st_size: off_t,
2276 pub st_blocks: blkcnt_t,
2277 pub st_blksize: blksize_t,
2278 pub st_flags: uint32_t,
2279 pub st_gen: uint32_t,
2280 pub st_lspare: int32_t,
2281 pub st_qspare: [int64_t; 2],
2282 }
2283
2284 #[repr(C)]
2285 #[derive(Copy, Clone)] pub struct utimbuf {
2286 pub actime: time_t,
2287 pub modtime: time_t,
2288 }
2289
2290 #[repr(C)]
2291 #[derive(Copy)] pub struct pthread_attr_t {
2292 pub __sig: c_long,
2293 pub __opaque: [c_char; 36]
2294 }
2295 impl ::core::clone::Clone for pthread_attr_t {
2296 fn clone(&self) -> pthread_attr_t { *self }
2297 }
2298 }
2299 pub mod posix08 {
2300 }
2301 pub mod bsd44 {
2302 }
2303 pub mod extra {
2304 #[repr(C)]
2305 #[derive(Copy, Clone)] pub struct mach_timebase_info {
2306 pub numer: u32,
2307 pub denom: u32,
2308 }
2309
2310 pub type mach_timebase_info_data_t = mach_timebase_info;
2311 }
2312 }
2313
2314 #[cfg(any(target_arch = "x86_64", target_arch = "aarch64"))]
2315 pub mod arch {
2316 pub mod c95 {
2317 pub type c_char = i8;
2318 pub type c_schar = i8;
2319 pub type c_uchar = u8;
2320 pub type c_short = i16;
2321 pub type c_ushort = u16;
2322 pub type c_int = i32;
2323 pub type c_uint = u32;
2324 pub type c_long = i64;
2325 pub type c_ulong = u64;
2326 pub type c_float = f32;
2327 pub type c_double = f64;
2328 pub type size_t = u64;
2329 pub type ptrdiff_t = i64;
2330 pub type clock_t = c_ulong;
2331 pub type time_t = c_long;
2332 pub type suseconds_t = i32;
2333 pub type wchar_t = i32;
2334 }
2335 pub mod c99 {
2336 pub type c_longlong = i64;
2337 pub type c_ulonglong = u64;
2338 pub type intptr_t = i64;
2339 pub type uintptr_t = u64;
2340 pub type intmax_t = i64;
2341 pub type uintmax_t = u64;
2342 }
2343 pub mod posix88 {
2344 use types::os::arch::c95::c_long;
2345
2346 pub type off_t = i64;
2347 pub type dev_t = i32;
2348 pub type ino_t = u64;
2349 pub type pid_t = i32;
2350 pub type uid_t = u32;
2351 pub type gid_t = u32;
2352 pub type useconds_t = u32;
2353 pub type mode_t = u16;
2354 pub type ssize_t = c_long;
2355 }
2356 pub mod posix01 {
2357 use types::common::c99::{int32_t, int64_t};
2358 use types::common::c99::{uint32_t};
2359 use types::os::arch::c95::{c_char, c_long, time_t};
2360 use types::os::arch::posix88::{dev_t, gid_t, ino_t};
2361 use types::os::arch::posix88::{mode_t, off_t, uid_t};
2362
2363 pub type nlink_t = u16;
2364 pub type blksize_t = i32;
2365 pub type blkcnt_t = i64;
2366
2367 #[repr(C)]
2368 #[derive(Copy, Clone)] pub struct stat {
2369 pub st_dev: dev_t,
2370 pub st_mode: mode_t,
2371 pub st_nlink: nlink_t,
2372 pub st_ino: ino_t,
2373 pub st_uid: uid_t,
2374 pub st_gid: gid_t,
2375 pub st_rdev: dev_t,
2376 pub st_atime: time_t,
2377 pub st_atime_nsec: c_long,
2378 pub st_mtime: time_t,
2379 pub st_mtime_nsec: c_long,
2380 pub st_ctime: time_t,
2381 pub st_ctime_nsec: c_long,
2382 pub st_birthtime: time_t,
2383 pub st_birthtime_nsec: c_long,
2384 pub st_size: off_t,
2385 pub st_blocks: blkcnt_t,
2386 pub st_blksize: blksize_t,
2387 pub st_flags: uint32_t,
2388 pub st_gen: uint32_t,
2389 pub st_lspare: int32_t,
2390 pub st_qspare: [int64_t; 2],
2391 }
2392
2393 #[repr(C)]
2394 #[derive(Copy, Clone)] pub struct utimbuf {
2395 pub actime: time_t,
2396 pub modtime: time_t,
2397 }
2398
2399 #[repr(C)]
2400 #[derive(Copy)] pub struct pthread_attr_t {
2401 pub __sig: c_long,
2402 pub __opaque: [c_char; 56]
2403 }
2404 impl ::core::clone::Clone for pthread_attr_t {
2405 fn clone(&self) -> pthread_attr_t { *self }
2406 }
2407 }
2408 pub mod posix08 {
2409 }
2410 pub mod bsd44 {
2411 }
2412 pub mod extra {
2413 #[repr(C)]
2414 #[derive(Copy, Clone)] pub struct mach_timebase_info {
2415 pub numer: u32,
2416 pub denom: u32,
2417 }
2418
2419 pub type mach_timebase_info_data_t = mach_timebase_info;
2420 }
2421 }
2422 }
2423 }
2424
2425 pub mod consts {
2426 // Consts tend to vary per OS so we pull their definitions out
2427 // into this module.
2428
2429 #[cfg(target_os = "windows")]
2430 pub mod os {
2431 pub mod c95 {
2432 use types::os::arch::c95::{c_int, c_uint};
2433
2434 pub const EXIT_FAILURE : c_int = 1;
2435 pub const EXIT_SUCCESS : c_int = 0;
2436 pub const RAND_MAX : c_int = 32767;
2437 pub const EOF : c_int = -1;
2438 pub const SEEK_SET : c_int = 0;
2439 pub const SEEK_CUR : c_int = 1;
2440 pub const SEEK_END : c_int = 2;
2441 pub const _IOFBF : c_int = 0;
2442 pub const _IONBF : c_int = 4;
2443 pub const _IOLBF : c_int = 64;
2444 pub const BUFSIZ : c_uint = 512;
2445 pub const FOPEN_MAX : c_uint = 20;
2446 pub const FILENAME_MAX : c_uint = 260;
2447 pub const L_tmpnam : c_uint = 16;
2448 pub const TMP_MAX : c_uint = 32767;
2449
2450 pub const WSAEINTR: c_int = 10004;
2451 pub const WSAEBADF: c_int = 10009;
2452 pub const WSAEACCES: c_int = 10013;
2453 pub const WSAEFAULT: c_int = 10014;
2454 pub const WSAEINVAL: c_int = 10022;
2455 pub const WSAEMFILE: c_int = 10024;
2456 pub const WSAEWOULDBLOCK: c_int = 10035;
2457 pub const WSAEINPROGRESS: c_int = 10036;
2458 pub const WSAEALREADY: c_int = 10037;
2459 pub const WSAENOTSOCK: c_int = 10038;
2460 pub const WSAEDESTADDRREQ: c_int = 10039;
2461 pub const WSAEMSGSIZE: c_int = 10040;
2462 pub const WSAEPROTOTYPE: c_int = 10041;
2463 pub const WSAENOPROTOOPT: c_int = 10042;
2464 pub const WSAEPROTONOSUPPORT: c_int = 10043;
2465 pub const WSAESOCKTNOSUPPORT: c_int = 10044;
2466 pub const WSAEOPNOTSUPP: c_int = 10045;
2467 pub const WSAEPFNOSUPPORT: c_int = 10046;
2468 pub const WSAEAFNOSUPPORT: c_int = 10047;
2469 pub const WSAEADDRINUSE: c_int = 10048;
2470 pub const WSAEADDRNOTAVAIL: c_int = 10049;
2471 pub const WSAENETDOWN: c_int = 10050;
2472 pub const WSAENETUNREACH: c_int = 10051;
2473 pub const WSAENETRESET: c_int = 10052;
2474 pub const WSAECONNABORTED: c_int = 10053;
2475 pub const WSAECONNRESET: c_int = 10054;
2476 pub const WSAENOBUFS: c_int = 10055;
2477 pub const WSAEISCONN: c_int = 10056;
2478 pub const WSAENOTCONN: c_int = 10057;
2479 pub const WSAESHUTDOWN: c_int = 10058;
2480 pub const WSAETOOMANYREFS: c_int = 10059;
2481 pub const WSAETIMEDOUT: c_int = 10060;
2482 pub const WSAECONNREFUSED: c_int = 10061;
2483 pub const WSAELOOP: c_int = 10062;
2484 pub const WSAENAMETOOLONG: c_int = 10063;
2485 pub const WSAEHOSTDOWN: c_int = 10064;
2486 pub const WSAEHOSTUNREACH: c_int = 10065;
2487 pub const WSAENOTEMPTY: c_int = 10066;
2488 pub const WSAEPROCLIM: c_int = 10067;
2489 pub const WSAEUSERS: c_int = 10068;
2490 pub const WSAEDQUOT: c_int = 10069;
2491 pub const WSAESTALE: c_int = 10070;
2492 pub const WSAEREMOTE: c_int = 10071;
2493 pub const WSASYSNOTREADY: c_int = 10091;
2494 pub const WSAVERNOTSUPPORTED: c_int = 10092;
2495 pub const WSANOTINITIALISED: c_int = 10093;
2496 pub const WSAEDISCON: c_int = 10101;
2497 pub const WSAENOMORE: c_int = 10102;
2498 pub const WSAECANCELLED: c_int = 10103;
2499 pub const WSAEINVALIDPROCTABLE: c_int = 10104;
2500 pub const WSAEINVALIDPROVIDER: c_int = 10105;
2501 pub const WSAEPROVIDERFAILEDINIT: c_int = 10106;
2502 }
2503 pub mod c99 {
2504 }
2505 pub mod posix88 {
2506 use types::os::arch::c95::c_int;
2507 use types::os::arch::posix88::mode_t;
2508
2509 pub const O_RDONLY : c_int = 0;
2510 pub const O_WRONLY : c_int = 1;
2511 pub const O_RDWR : c_int = 2;
2512 pub const O_APPEND : c_int = 8;
2513 pub const O_CREAT : c_int = 256;
2514 pub const O_EXCL : c_int = 1024;
2515 pub const O_TRUNC : c_int = 512;
2516 pub const S_IFIFO : c_int = 4096;
2517 pub const S_IFCHR : c_int = 8192;
2518 pub const S_IFBLK : c_int = 12288;
2519 pub const S_IFDIR : c_int = 16384;
2520 pub const S_IFREG : c_int = 32768;
2521 pub const S_IFLNK : c_int = 40960;
2522 pub const S_IFMT : c_int = 61440;
2523 pub const S_IEXEC : c_int = 64;
2524 pub const S_IWRITE : c_int = 128;
2525 pub const S_IREAD : c_int = 256;
2526 pub const S_IRWXU : c_int = 448;
2527 pub const S_IXUSR : c_int = 64;
2528 pub const S_IWUSR : c_int = 128;
2529 pub const S_IRUSR : c_int = 256;
2530 pub const S_IRWXG : mode_t = 56;
2531 pub const S_IXGRP : mode_t = 8;
2532 pub const S_IWGRP : mode_t = 16;
2533 pub const S_IRGRP : mode_t = 32;
2534 pub const S_IRWXO : mode_t = 7;
2535 pub const S_IXOTH : mode_t = 1;
2536 pub const S_IWOTH : mode_t = 2;
2537 pub const S_IROTH : mode_t = 4;
2538 pub const F_OK : c_int = 0;
2539 pub const R_OK : c_int = 4;
2540 pub const W_OK : c_int = 2;
2541 pub const X_OK : c_int = 1;
2542 pub const STDIN_FILENO : c_int = 0;
2543 pub const STDOUT_FILENO : c_int = 1;
2544 pub const STDERR_FILENO : c_int = 2;
2545 }
2546 pub mod posix01 {
2547 }
2548 pub mod posix08 {
2549 }
2550 pub mod bsd44 {
2551 use types::os::arch::c95::c_int;
2552
2553 pub const AF_INET: c_int = 2;
2554 pub const AF_INET6: c_int = 23;
2555 pub const SOCK_STREAM: c_int = 1;
2556 pub const SOCK_DGRAM: c_int = 2;
2557 pub const SOCK_RAW: c_int = 3;
2558 pub const IPPROTO_TCP: c_int = 6;
2559 pub const IPPROTO_IP: c_int = 0;
2560 pub const IPPROTO_IPV6: c_int = 41;
2561 pub const IP_MULTICAST_TTL: c_int = 10;
2562 pub const IP_MULTICAST_LOOP: c_int = 11;
2563 pub const IP_ADD_MEMBERSHIP: c_int = 12;
2564 pub const IP_DROP_MEMBERSHIP: c_int = 13;
2565 pub const IPV6_ADD_MEMBERSHIP: c_int = 5;
2566 pub const IPV6_DROP_MEMBERSHIP: c_int = 6;
2567 pub const IP_TTL: c_int = 4;
2568 pub const IP_HDRINCL: c_int = 2;
2569
2570 pub const TCP_NODELAY: c_int = 0x0001;
2571 pub const SOL_SOCKET: c_int = 0xffff;
2572
2573 pub const SO_DEBUG: c_int = 0x0001;
2574 pub const SO_ACCEPTCONN: c_int = 0x0002;
2575 pub const SO_REUSEADDR: c_int = 0x0004;
2576 pub const SO_KEEPALIVE: c_int = 0x0008;
2577 pub const SO_DONTROUTE: c_int = 0x0010;
2578 pub const SO_BROADCAST: c_int = 0x0020;
2579 pub const SO_USELOOPBACK: c_int = 0x0040;
2580 pub const SO_LINGER: c_int = 0x0080;
2581 pub const SO_OOBINLINE: c_int = 0x0100;
2582 pub const SO_SNDBUF: c_int = 0x1001;
2583 pub const SO_RCVBUF: c_int = 0x1002;
2584 pub const SO_SNDLOWAT: c_int = 0x1003;
2585 pub const SO_RCVLOWAT: c_int = 0x1004;
2586 pub const SO_SNDTIMEO: c_int = 0x1005;
2587 pub const SO_RCVTIMEO: c_int = 0x1006;
2588 pub const SO_ERROR: c_int = 0x1007;
2589 pub const SO_TYPE: c_int = 0x1008;
2590
2591 pub const IFF_LOOPBACK: c_int = 4;
2592
2593 pub const SHUT_RD: c_int = 0;
2594 pub const SHUT_WR: c_int = 1;
2595 pub const SHUT_RDWR: c_int = 2;
2596 }
2597 pub mod extra {
2598 use types::os::common::bsd44::SOCKET;
2599 use types::os::arch::c95::{c_int, c_long};
2600 use types::os::arch::extra::{WORD, DWORD, BOOL, HANDLE};
2601
2602 pub const TRUE : BOOL = 1;
2603 pub const FALSE : BOOL = 0;
2604
2605 pub const O_TEXT : c_int = 16384;
2606 pub const O_BINARY : c_int = 32768;
2607 pub const O_NOINHERIT: c_int = 128;
2608
2609 pub const ERROR_SUCCESS : c_int = 0;
2610 pub const ERROR_INVALID_FUNCTION: c_int = 1;
2611 pub const ERROR_FILE_NOT_FOUND: c_int = 2;
2612 pub const ERROR_ACCESS_DENIED: c_int = 5;
2613 pub const ERROR_INVALID_HANDLE : c_int = 6;
2614 pub const ERROR_BROKEN_PIPE: c_int = 109;
2615 pub const ERROR_DISK_FULL : c_int = 112;
2616 pub const ERROR_CALL_NOT_IMPLEMENTED : c_int = 120;
2617 pub const ERROR_INSUFFICIENT_BUFFER : c_int = 122;
2618 pub const ERROR_INVALID_NAME : c_int = 123;
2619 pub const ERROR_ALREADY_EXISTS : c_int = 183;
2620 pub const ERROR_PIPE_BUSY: c_int = 231;
2621 pub const ERROR_NO_DATA: c_int = 232;
2622 pub const ERROR_INVALID_ADDRESS : c_int = 487;
2623 pub const ERROR_PIPE_CONNECTED: c_int = 535;
2624 pub const ERROR_NOTHING_TO_TERMINATE: c_int = 758;
2625 pub const ERROR_OPERATION_ABORTED: c_int = 995;
2626 pub const ERROR_IO_PENDING: c_int = 997;
2627 pub const ERROR_FILE_INVALID : c_int = 1006;
2628 pub const ERROR_NOT_FOUND: c_int = 1168;
2629 pub const INVALID_HANDLE_VALUE: HANDLE = !0 as HANDLE;
2630
2631 pub const DELETE : DWORD = 0x00010000;
2632 pub const READ_CONTROL : DWORD = 0x00020000;
2633 pub const SYNCHRONIZE : DWORD = 0x00100000;
2634 pub const WRITE_DAC : DWORD = 0x00040000;
2635 pub const WRITE_OWNER : DWORD = 0x00080000;
2636
2637 pub const PROCESS_CREATE_PROCESS : DWORD = 0x0080;
2638 pub const PROCESS_CREATE_THREAD : DWORD = 0x0002;
2639 pub const PROCESS_DUP_HANDLE : DWORD = 0x0040;
2640 pub const PROCESS_QUERY_INFORMATION : DWORD = 0x0400;
2641 pub const PROCESS_QUERY_LIMITED_INFORMATION : DWORD = 0x1000;
2642 pub const PROCESS_SET_INFORMATION : DWORD = 0x0200;
2643 pub const PROCESS_SET_QUOTA : DWORD = 0x0100;
2644 pub const PROCESS_SUSPEND_RESUME : DWORD = 0x0800;
2645 pub const PROCESS_TERMINATE : DWORD = 0x0001;
2646 pub const PROCESS_VM_OPERATION : DWORD = 0x0008;
2647 pub const PROCESS_VM_READ : DWORD = 0x0010;
2648 pub const PROCESS_VM_WRITE : DWORD = 0x0020;
2649
2650 pub const STARTF_FORCEONFEEDBACK : DWORD = 0x00000040;
2651 pub const STARTF_FORCEOFFFEEDBACK : DWORD = 0x00000080;
2652 pub const STARTF_PREVENTPINNING : DWORD = 0x00002000;
2653 pub const STARTF_RUNFULLSCREEN : DWORD = 0x00000020;
2654 pub const STARTF_TITLEISAPPID : DWORD = 0x00001000;
2655 pub const STARTF_TITLEISLINKNAME : DWORD = 0x00000800;
2656 pub const STARTF_USECOUNTCHARS : DWORD = 0x00000008;
2657 pub const STARTF_USEFILLATTRIBUTE : DWORD = 0x00000010;
2658 pub const STARTF_USEHOTKEY : DWORD = 0x00000200;
2659 pub const STARTF_USEPOSITION : DWORD = 0x00000004;
2660 pub const STARTF_USESHOWWINDOW : DWORD = 0x00000001;
2661 pub const STARTF_USESIZE : DWORD = 0x00000002;
2662 pub const STARTF_USESTDHANDLES : DWORD = 0x00000100;
2663
2664 pub const WAIT_ABANDONED : DWORD = 0x00000080;
2665 pub const WAIT_OBJECT_0 : DWORD = 0x00000000;
2666 pub const WAIT_TIMEOUT : DWORD = 0x00000102;
2667 pub const WAIT_FAILED : DWORD = !0;
2668
2669 pub const DUPLICATE_CLOSE_SOURCE : DWORD = 0x00000001;
2670 pub const DUPLICATE_SAME_ACCESS : DWORD = 0x00000002;
2671
2672 pub const INFINITE : DWORD = !0;
2673 pub const STILL_ACTIVE : DWORD = 259;
2674
2675 pub const MEM_COMMIT : DWORD = 0x00001000;
2676 pub const MEM_RESERVE : DWORD = 0x00002000;
2677 pub const MEM_DECOMMIT : DWORD = 0x00004000;
2678 pub const MEM_RELEASE : DWORD = 0x00008000;
2679 pub const MEM_RESET : DWORD = 0x00080000;
2680 pub const MEM_RESET_UNDO : DWORD = 0x1000000;
2681 pub const MEM_LARGE_PAGES : DWORD = 0x20000000;
2682 pub const MEM_PHYSICAL : DWORD = 0x00400000;
2683 pub const MEM_TOP_DOWN : DWORD = 0x00100000;
2684 pub const MEM_WRITE_WATCH : DWORD = 0x00200000;
2685
2686 pub const PAGE_EXECUTE : DWORD = 0x10;
2687 pub const PAGE_EXECUTE_READ : DWORD = 0x20;
2688 pub const PAGE_EXECUTE_READWRITE : DWORD = 0x40;
2689 pub const PAGE_EXECUTE_WRITECOPY : DWORD = 0x80;
2690 pub const PAGE_NOACCESS : DWORD = 0x01;
2691 pub const PAGE_READONLY : DWORD = 0x02;
2692 pub const PAGE_READWRITE : DWORD = 0x04;
2693 pub const PAGE_WRITECOPY : DWORD = 0x08;
2694 pub const PAGE_GUARD : DWORD = 0x100;
2695 pub const PAGE_NOCACHE : DWORD = 0x200;
2696 pub const PAGE_WRITECOMBINE : DWORD = 0x400;
2697
2698 pub const SEC_COMMIT : DWORD = 0x8000000;
2699 pub const SEC_IMAGE : DWORD = 0x1000000;
2700 pub const SEC_IMAGE_NO_EXECUTE : DWORD = 0x11000000;
2701 pub const SEC_LARGE_PAGES : DWORD = 0x80000000;
2702 pub const SEC_NOCACHE : DWORD = 0x10000000;
2703 pub const SEC_RESERVE : DWORD = 0x4000000;
2704 pub const SEC_WRITECOMBINE : DWORD = 0x40000000;
2705
2706 pub const FILE_MAP_ALL_ACCESS : DWORD = 0xf001f;
2707 pub const FILE_MAP_READ : DWORD = 0x4;
2708 pub const FILE_MAP_WRITE : DWORD = 0x2;
2709 pub const FILE_MAP_COPY : DWORD = 0x1;
2710 pub const FILE_MAP_EXECUTE : DWORD = 0x20;
2711
2712 pub const PROCESSOR_ARCHITECTURE_INTEL : WORD = 0;
2713 pub const PROCESSOR_ARCHITECTURE_ARM : WORD = 5;
2714 pub const PROCESSOR_ARCHITECTURE_IA64 : WORD = 6;
2715 pub const PROCESSOR_ARCHITECTURE_AMD64 : WORD = 9;
2716 pub const PROCESSOR_ARCHITECTURE_UNKNOWN : WORD = 0xffff;
2717
2718 pub const MOVEFILE_COPY_ALLOWED: DWORD = 2;
2719 pub const MOVEFILE_CREATE_HARDLINK: DWORD = 16;
2720 pub const MOVEFILE_DELAY_UNTIL_REBOOT: DWORD = 4;
2721 pub const MOVEFILE_FAIL_IF_NOT_TRACKABLE: DWORD = 32;
2722 pub const MOVEFILE_REPLACE_EXISTING: DWORD = 1;
2723 pub const MOVEFILE_WRITE_THROUGH: DWORD = 8;
2724
2725 pub const SYMBOLIC_LINK_FLAG_DIRECTORY: DWORD = 1;
2726
2727 pub const FILE_SHARE_DELETE: DWORD = 0x4;
2728 pub const FILE_SHARE_READ: DWORD = 0x1;
2729 pub const FILE_SHARE_WRITE: DWORD = 0x2;
2730
2731 pub const CREATE_ALWAYS: DWORD = 2;
2732 pub const CREATE_NEW: DWORD = 1;
2733 pub const OPEN_ALWAYS: DWORD = 4;
2734 pub const OPEN_EXISTING: DWORD = 3;
2735 pub const TRUNCATE_EXISTING: DWORD = 5;
2736
2737 pub const FILE_APPEND_DATA: DWORD = 0x00000004;
2738 pub const FILE_READ_DATA: DWORD = 0x00000001;
2739 pub const FILE_WRITE_DATA: DWORD = 0x00000002;
2740
2741 pub const FILE_ATTRIBUTE_ARCHIVE: DWORD = 0x20;
2742 pub const FILE_ATTRIBUTE_COMPRESSED: DWORD = 0x800;
2743 pub const FILE_ATTRIBUTE_DEVICE: DWORD = 0x40;
2744 pub const FILE_ATTRIBUTE_DIRECTORY: DWORD = 0x10;
2745 pub const FILE_ATTRIBUTE_ENCRYPTED: DWORD = 0x4000;
2746 pub const FILE_ATTRIBUTE_HIDDEN: DWORD = 0x2;
2747 pub const FILE_ATTRIBUTE_INTEGRITY_STREAM: DWORD = 0x8000;
2748 pub const FILE_ATTRIBUTE_NORMAL: DWORD = 0x80;
2749 pub const FILE_ATTRIBUTE_NOT_CONTENT_INDEXED: DWORD = 0x2000;
2750 pub const FILE_ATTRIBUTE_NO_SCRUB_DATA: DWORD = 0x20000;
2751 pub const FILE_ATTRIBUTE_OFFLINE: DWORD = 0x1000;
2752 pub const FILE_ATTRIBUTE_READONLY: DWORD = 0x1;
2753 pub const FILE_ATTRIBUTE_REPARSE_POINT: DWORD = 0x400;
2754 pub const FILE_ATTRIBUTE_SPARSE_FILE: DWORD = 0x200;
2755 pub const FILE_ATTRIBUTE_SYSTEM: DWORD = 0x4;
2756 pub const FILE_ATTRIBUTE_TEMPORARY: DWORD = 0x100;
2757 pub const FILE_ATTRIBUTE_VIRTUAL: DWORD = 0x10000;
2758
2759 pub const FILE_FLAG_BACKUP_SEMANTICS: DWORD = 0x02000000;
2760 pub const FILE_FLAG_DELETE_ON_CLOSE: DWORD = 0x04000000;
2761 pub const FILE_FLAG_NO_BUFFERING: DWORD = 0x20000000;
2762 pub const FILE_FLAG_OPEN_NO_RECALL: DWORD = 0x00100000;
2763 pub const FILE_FLAG_OPEN_REPARSE_POINT: DWORD = 0x00200000;
2764 pub const FILE_FLAG_OVERLAPPED: DWORD = 0x40000000;
2765 pub const FILE_FLAG_POSIX_SEMANTICS: DWORD = 0x0100000;
2766 pub const FILE_FLAG_RANDOM_ACCESS: DWORD = 0x10000000;
2767 pub const FILE_FLAG_SESSION_AWARE: DWORD = 0x00800000;
2768 pub const FILE_FLAG_SEQUENTIAL_SCAN: DWORD = 0x08000000;
2769 pub const FILE_FLAG_WRITE_THROUGH: DWORD = 0x80000000;
2770 pub const FILE_FLAG_FIRST_PIPE_INSTANCE: DWORD = 0x00080000;
2771
2772 pub const FILE_NAME_NORMALIZED: DWORD = 0x0;
2773 pub const FILE_NAME_OPENED: DWORD = 0x8;
2774
2775 pub const VOLUME_NAME_DOS: DWORD = 0x0;
2776 pub const VOLUME_NAME_GUID: DWORD = 0x1;
2777 pub const VOLUME_NAME_NONE: DWORD = 0x4;
2778 pub const VOLUME_NAME_NT: DWORD = 0x2;
2779
2780 pub const GENERIC_READ: DWORD = 0x80000000;
2781 pub const GENERIC_WRITE: DWORD = 0x40000000;
2782 pub const GENERIC_EXECUTE: DWORD = 0x20000000;
2783 pub const GENERIC_ALL: DWORD = 0x10000000;
2784 pub const FILE_WRITE_ATTRIBUTES: DWORD = 0x00000100;
2785 pub const FILE_READ_ATTRIBUTES: DWORD = 0x00000080;
2786
2787 pub const STANDARD_RIGHTS_READ: DWORD = 0x20000;
2788 pub const STANDARD_RIGHTS_WRITE: DWORD = 0x20000;
2789 pub const FILE_WRITE_EA: DWORD = 0x00000010;
2790 pub const FILE_READ_EA: DWORD = 0x00000008;
2791 pub const FILE_GENERIC_READ: DWORD =
2792 STANDARD_RIGHTS_READ | FILE_READ_DATA |
2793 FILE_READ_ATTRIBUTES | FILE_READ_EA | SYNCHRONIZE;
2794 pub const FILE_GENERIC_WRITE: DWORD =
2795 STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA |
2796 FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | FILE_APPEND_DATA |
2797 SYNCHRONIZE;
2798
2799 pub const FILE_BEGIN: DWORD = 0;
2800 pub const FILE_CURRENT: DWORD = 1;
2801 pub const FILE_END: DWORD = 2;
2802
2803 pub const MAX_PROTOCOL_CHAIN: DWORD = 7;
2804 pub const WSAPROTOCOL_LEN: DWORD = 255;
2805 pub const INVALID_SOCKET: SOCKET = !0;
2806
2807 pub const DETACHED_PROCESS: DWORD = 0x00000008;
2808 pub const CREATE_NEW_PROCESS_GROUP: DWORD = 0x00000200;
2809 pub const CREATE_UNICODE_ENVIRONMENT: DWORD = 0x00000400;
2810
2811 pub const PIPE_ACCESS_DUPLEX: DWORD = 0x00000003;
2812 pub const PIPE_ACCESS_INBOUND: DWORD = 0x00000001;
2813 pub const PIPE_ACCESS_OUTBOUND: DWORD = 0x00000002;
2814 pub const PIPE_TYPE_BYTE: DWORD = 0x00000000;
2815 pub const PIPE_TYPE_MESSAGE: DWORD = 0x00000004;
2816 pub const PIPE_READMODE_BYTE: DWORD = 0x00000000;
2817 pub const PIPE_READMODE_MESSAGE: DWORD = 0x00000002;
2818 pub const PIPE_WAIT: DWORD = 0x00000000;
2819 pub const PIPE_NOWAIT: DWORD = 0x00000001;
2820 pub const PIPE_ACCEPT_REMOTE_CLIENTS: DWORD = 0x00000000;
2821 pub const PIPE_REJECT_REMOTE_CLIENTS: DWORD = 0x00000008;
2822 pub const PIPE_UNLIMITED_INSTANCES: DWORD = 255;
2823
2824 pub const IPPROTO_RAW: c_int = 255;
2825
2826 pub const FIONBIO: c_long = -0x7FFB9982;
2827 }
2828 pub mod sysconf {
2829 }
2830 }
2831
2832
2833 #[cfg(any(target_os = "linux", target_os = "android", target_os = "nacl"))]
2834 pub mod os {
2835 pub mod c95 {
2836 use types::os::arch::c95::{c_int, c_uint};
2837
2838 pub const EXIT_FAILURE : c_int = 1;
2839 pub const EXIT_SUCCESS : c_int = 0;
2840 pub const RAND_MAX : c_int = 2147483647;
2841 pub const EOF : c_int = -1;
2842 pub const SEEK_SET : c_int = 0;
2843 pub const SEEK_CUR : c_int = 1;
2844 pub const SEEK_END : c_int = 2;
2845 pub const _IOFBF : c_int = 0;
2846 pub const _IONBF : c_int = 2;
2847 pub const _IOLBF : c_int = 1;
2848 pub const BUFSIZ : c_uint = 8192;
2849 pub const FOPEN_MAX : c_uint = 16;
2850 pub const FILENAME_MAX : c_uint = 4096;
2851 pub const L_tmpnam : c_uint = 20;
2852 pub const TMP_MAX : c_uint = 238328;
2853 }
2854 pub mod c99 {
2855 }
2856 #[cfg(any(target_arch = "x86",
2857 target_arch = "x86_64",
2858 target_arch = "arm",
2859 target_arch = "aarch64",
2860 target_arch = "le32",
2861 target_arch = "powerpc"))]
2862 pub mod posix88 {
2863 use types::os::arch::c95::c_int;
2864 use types::common::c95::c_void;
2865 use types::os::arch::posix88::mode_t;
2866
2867 pub const O_RDONLY : c_int = 0;
2868 pub const O_WRONLY : c_int = 1;
2869 pub const O_RDWR : c_int = 2;
2870 pub const O_APPEND : c_int = 1024;
2871 pub const O_CREAT : c_int = 64;
2872 pub const O_EXCL : c_int = 128;
2873 pub const O_NOCTTY : c_int = 256;
2874 pub const O_TRUNC : c_int = 512;
2875 pub const S_IFIFO : mode_t = 4096;
2876 pub const S_IFCHR : mode_t = 8192;
2877 pub const S_IFBLK : mode_t = 24576;
2878 pub const S_IFDIR : mode_t = 16384;
2879 pub const S_IFREG : mode_t = 32768;
2880 pub const S_IFLNK : mode_t = 40960;
2881 pub const S_IFMT : mode_t = 61440;
2882 pub const S_IEXEC : mode_t = 64;
2883 pub const S_IWRITE : mode_t = 128;
2884 pub const S_IREAD : mode_t = 256;
2885 pub const S_IRWXU : mode_t = 448;
2886 pub const S_IXUSR : mode_t = 64;
2887 pub const S_IWUSR : mode_t = 128;
2888 pub const S_IRUSR : mode_t = 256;
2889 pub const S_IRWXG : mode_t = 56;
2890 pub const S_IXGRP : mode_t = 8;
2891 pub const S_IWGRP : mode_t = 16;
2892 pub const S_IRGRP : mode_t = 32;
2893 pub const S_IRWXO : mode_t = 7;
2894 pub const S_IXOTH : mode_t = 1;
2895 pub const S_IWOTH : mode_t = 2;
2896 pub const S_IROTH : mode_t = 4;
2897 pub const F_OK : c_int = 0;
2898 pub const R_OK : c_int = 4;
2899 pub const W_OK : c_int = 2;
2900 pub const X_OK : c_int = 1;
2901 pub const STDIN_FILENO : c_int = 0;
2902 pub const STDOUT_FILENO : c_int = 1;
2903 pub const STDERR_FILENO : c_int = 2;
2904 pub const F_LOCK : c_int = 1;
2905 pub const F_TEST : c_int = 3;
2906 pub const F_TLOCK : c_int = 2;
2907 pub const F_ULOCK : c_int = 0;
2908 pub const SIGHUP : c_int = 1;
2909 pub const SIGINT : c_int = 2;
2910 pub const SIGQUIT : c_int = 3;
2911 pub const SIGILL : c_int = 4;
2912 pub const SIGABRT : c_int = 6;
2913 pub const SIGFPE : c_int = 8;
2914 pub const SIGKILL : c_int = 9;
2915 pub const SIGSEGV : c_int = 11;
2916 pub const SIGPIPE : c_int = 13;
2917 pub const SIGALRM : c_int = 14;
2918 pub const SIGTERM : c_int = 15;
2919
2920 pub const PROT_NONE : c_int = 0;
2921 pub const PROT_READ : c_int = 1;
2922 pub const PROT_WRITE : c_int = 2;
2923 pub const PROT_EXEC : c_int = 4;
2924
2925 pub const MAP_FILE : c_int = 0x0000;
2926 pub const MAP_SHARED : c_int = 0x0001;
2927 pub const MAP_PRIVATE : c_int = 0x0002;
2928 pub const MAP_FIXED : c_int = 0x0010;
2929 pub const MAP_ANON : c_int = 0x0020;
2930
2931 pub const MAP_FAILED : *mut c_void = !0 as *mut c_void;
2932
2933 pub const MCL_CURRENT : c_int = 0x0001;
2934 pub const MCL_FUTURE : c_int = 0x0002;
2935
2936 pub const MS_ASYNC : c_int = 0x0001;
2937 pub const MS_INVALIDATE : c_int = 0x0002;
2938 pub const MS_SYNC : c_int = 0x0004;
2939
2940 pub const EPERM : c_int = 1;
2941 pub const ENOENT : c_int = 2;
2942 pub const ESRCH : c_int = 3;
2943 pub const EINTR : c_int = 4;
2944 pub const EIO : c_int = 5;
2945 pub const ENXIO : c_int = 6;
2946 pub const E2BIG : c_int = 7;
2947 pub const ENOEXEC : c_int = 8;
2948 pub const EBADF : c_int = 9;
2949 pub const ECHILD : c_int = 10;
2950 pub const EAGAIN : c_int = 11;
2951 pub const ENOMEM : c_int = 12;
2952 pub const EACCES : c_int = 13;
2953 pub const EFAULT : c_int = 14;
2954 pub const ENOTBLK : c_int = 15;
2955 pub const EBUSY : c_int = 16;
2956 pub const EEXIST : c_int = 17;
2957 pub const EXDEV : c_int = 18;
2958 pub const ENODEV : c_int = 19;
2959 pub const ENOTDIR : c_int = 20;
2960 pub const EISDIR : c_int = 21;
2961 pub const EINVAL : c_int = 22;
2962 pub const ENFILE : c_int = 23;
2963 pub const EMFILE : c_int = 24;
2964 pub const ENOTTY : c_int = 25;
2965 pub const ETXTBSY : c_int = 26;
2966 pub const EFBIG : c_int = 27;
2967 pub const ENOSPC : c_int = 28;
2968 pub const ESPIPE : c_int = 29;
2969 pub const EROFS : c_int = 30;
2970 pub const EMLINK : c_int = 31;
2971 pub const EPIPE : c_int = 32;
2972 pub const EDOM : c_int = 33;
2973 pub const ERANGE : c_int = 34;
2974
2975 pub const EDEADLK: c_int = 35;
2976 pub const ENAMETOOLONG: c_int = 36;
2977 pub const ENOLCK: c_int = 37;
2978 pub const ENOSYS: c_int = 38;
2979 pub const ENOTEMPTY: c_int = 39;
2980 pub const ELOOP: c_int = 40;
2981 pub const EWOULDBLOCK: c_int = EAGAIN;
2982 pub const ENOMSG: c_int = 42;
2983 pub const EIDRM: c_int = 43;
2984 pub const ECHRNG: c_int = 44;
2985 pub const EL2NSYNC: c_int = 45;
2986 pub const EL3HLT: c_int = 46;
2987 pub const EL3RST: c_int = 47;
2988 pub const ELNRNG: c_int = 48;
2989 pub const EUNATCH: c_int = 49;
2990 pub const ENOCSI: c_int = 50;
2991 pub const EL2HLT: c_int = 51;
2992 pub const EBADE: c_int = 52;
2993 pub const EBADR: c_int = 53;
2994 pub const EXFULL: c_int = 54;
2995 pub const ENOANO: c_int = 55;
2996 pub const EBADRQC: c_int = 56;
2997 pub const EBADSLT: c_int = 57;
2998
2999 pub const EDEADLOCK: c_int = EDEADLK;
3000
3001 pub const EBFONT: c_int = 59;
3002 pub const ENOSTR: c_int = 60;
3003 pub const ENODATA: c_int = 61;
3004 pub const ETIME: c_int = 62;
3005 pub const ENOSR: c_int = 63;
3006 pub const ENONET: c_int = 64;
3007 pub const ENOPKG: c_int = 65;
3008 pub const EREMOTE: c_int = 66;
3009 pub const ENOLINK: c_int = 67;
3010 pub const EADV: c_int = 68;
3011 pub const ESRMNT: c_int = 69;
3012 pub const ECOMM: c_int = 70;
3013 pub const EPROTO: c_int = 71;
3014 pub const EMULTIHOP: c_int = 72;
3015 pub const EDOTDOT: c_int = 73;
3016 pub const EBADMSG: c_int = 74;
3017 pub const EOVERFLOW: c_int = 75;
3018 pub const ENOTUNIQ: c_int = 76;
3019 pub const EBADFD: c_int = 77;
3020 pub const EREMCHG: c_int = 78;
3021 pub const ELIBACC: c_int = 79;
3022 pub const ELIBBAD: c_int = 80;
3023 pub const ELIBSCN: c_int = 81;
3024 pub const ELIBMAX: c_int = 82;
3025 pub const ELIBEXEC: c_int = 83;
3026 pub const EILSEQ: c_int = 84;
3027 pub const ERESTART: c_int = 85;
3028 pub const ESTRPIPE: c_int = 86;
3029 pub const EUSERS: c_int = 87;
3030 pub const ENOTSOCK: c_int = 88;
3031 pub const EDESTADDRREQ: c_int = 89;
3032 pub const EMSGSIZE: c_int = 90;
3033 pub const EPROTOTYPE: c_int = 91;
3034 pub const ENOPROTOOPT: c_int = 92;
3035 pub const EPROTONOSUPPORT: c_int = 93;
3036 pub const ESOCKTNOSUPPORT: c_int = 94;
3037 pub const EOPNOTSUPP: c_int = 95;
3038 pub const EPFNOSUPPORT: c_int = 96;
3039 pub const EAFNOSUPPORT: c_int = 97;
3040 pub const EADDRINUSE: c_int = 98;
3041 pub const EADDRNOTAVAIL: c_int = 99;
3042 pub const ENETDOWN: c_int = 100;
3043 pub const ENETUNREACH: c_int = 101;
3044 pub const ENETRESET: c_int = 102;
3045 pub const ECONNABORTED: c_int = 103;
3046 pub const ECONNRESET: c_int = 104;
3047 pub const ENOBUFS: c_int = 105;
3048 pub const EISCONN: c_int = 106;
3049 pub const ENOTCONN: c_int = 107;
3050 pub const ESHUTDOWN: c_int = 108;
3051 pub const ETOOMANYREFS: c_int = 109;
3052 pub const ETIMEDOUT: c_int = 110;
3053 pub const ECONNREFUSED: c_int = 111;
3054 pub const EHOSTDOWN: c_int = 112;
3055 pub const EHOSTUNREACH: c_int = 113;
3056 pub const EALREADY: c_int = 114;
3057 pub const EINPROGRESS: c_int = 115;
3058 pub const ESTALE: c_int = 116;
3059 pub const EUCLEAN: c_int = 117;
3060 pub const ENOTNAM: c_int = 118;
3061 pub const ENAVAIL: c_int = 119;
3062 pub const EISNAM: c_int = 120;
3063 pub const EREMOTEIO: c_int = 121;
3064 pub const EDQUOT: c_int = 122;
3065
3066 pub const ENOMEDIUM: c_int = 123;
3067 pub const EMEDIUMTYPE: c_int = 124;
3068 pub const ECANCELED: c_int = 125;
3069 pub const ENOKEY: c_int = 126;
3070 pub const EKEYEXPIRED: c_int = 127;
3071 pub const EKEYREVOKED: c_int = 128;
3072 pub const EKEYREJECTED: c_int = 129;
3073
3074 pub const EOWNERDEAD: c_int = 130;
3075 pub const ENOTRECOVERABLE: c_int = 131;
3076
3077 pub const ERFKILL: c_int = 132;
3078
3079 pub const EHWPOISON: c_int = 133;
3080 }
3081
3082 #[cfg(any(target_arch = "mips",
3083 target_arch = "mipsel"))]
3084 pub mod posix88 {
3085 use types::os::arch::c95::c_int;
3086 use types::common::c95::c_void;
3087 use types::os::arch::posix88::mode_t;
3088
3089 pub const O_RDONLY : c_int = 0;
3090 pub const O_WRONLY : c_int = 1;
3091 pub const O_RDWR : c_int = 2;
3092 pub const O_APPEND : c_int = 8;
3093 pub const O_CREAT : c_int = 256;
3094 pub const O_EXCL : c_int = 1024;
3095 pub const O_NOCTTY : c_int = 2048;
3096 pub const O_TRUNC : c_int = 512;
3097 pub const S_IFIFO : mode_t = 4096;
3098 pub const S_IFCHR : mode_t = 8192;
3099 pub const S_IFBLK : mode_t = 24576;
3100 pub const S_IFDIR : mode_t = 16384;
3101 pub const S_IFREG : mode_t = 32768;
3102 pub const S_IFLNK : mode_t = 40960;
3103 pub const S_IFMT : mode_t = 61440;
3104 pub const S_IEXEC : mode_t = 64;
3105 pub const S_IWRITE : mode_t = 128;
3106 pub const S_IREAD : mode_t = 256;
3107 pub const S_IRWXU : mode_t = 448;
3108 pub const S_IXUSR : mode_t = 64;
3109 pub const S_IWUSR : mode_t = 128;
3110 pub const S_IRUSR : mode_t = 256;
3111 pub const S_IRWXG : mode_t = 56;
3112 pub const S_IXGRP : mode_t = 8;
3113 pub const S_IWGRP : mode_t = 16;
3114 pub const S_IRGRP : mode_t = 32;
3115 pub const S_IRWXO : mode_t = 7;
3116 pub const S_IXOTH : mode_t = 1;
3117 pub const S_IWOTH : mode_t = 2;
3118 pub const S_IROTH : mode_t = 4;
3119 pub const F_OK : c_int = 0;
3120 pub const R_OK : c_int = 4;
3121 pub const W_OK : c_int = 2;
3122 pub const X_OK : c_int = 1;
3123 pub const STDIN_FILENO : c_int = 0;
3124 pub const STDOUT_FILENO : c_int = 1;
3125 pub const STDERR_FILENO : c_int = 2;
3126 pub const F_LOCK : c_int = 1;
3127 pub const F_TEST : c_int = 3;
3128 pub const F_TLOCK : c_int = 2;
3129 pub const F_ULOCK : c_int = 0;
3130 pub const SIGHUP : c_int = 1;
3131 pub const SIGINT : c_int = 2;
3132 pub const SIGQUIT : c_int = 3;
3133 pub const SIGILL : c_int = 4;
3134 pub const SIGABRT : c_int = 6;
3135 pub const SIGFPE : c_int = 8;
3136 pub const SIGKILL : c_int = 9;
3137 pub const SIGSEGV : c_int = 11;
3138 pub const SIGPIPE : c_int = 13;
3139 pub const SIGALRM : c_int = 14;
3140 pub const SIGTERM : c_int = 15;
3141
3142 pub const PROT_NONE : c_int = 0;
3143 pub const PROT_READ : c_int = 1;
3144 pub const PROT_WRITE : c_int = 2;
3145 pub const PROT_EXEC : c_int = 4;
3146
3147 pub const MAP_FILE : c_int = 0x0000;
3148 pub const MAP_SHARED : c_int = 0x0001;
3149 pub const MAP_PRIVATE : c_int = 0x0002;
3150 pub const MAP_FIXED : c_int = 0x0010;
3151 pub const MAP_ANON : c_int = 0x0800;
3152
3153 pub const MAP_FAILED : *mut c_void = !0 as *mut c_void;
3154
3155 pub const MCL_CURRENT : c_int = 0x0001;
3156 pub const MCL_FUTURE : c_int = 0x0002;
3157
3158 pub const MS_ASYNC : c_int = 0x0001;
3159 pub const MS_INVALIDATE : c_int = 0x0002;
3160 pub const MS_SYNC : c_int = 0x0004;
3161
3162 pub const EPERM : c_int = 1;
3163 pub const ENOENT : c_int = 2;
3164 pub const ESRCH : c_int = 3;
3165 pub const EINTR : c_int = 4;
3166 pub const EIO : c_int = 5;
3167 pub const ENXIO : c_int = 6;
3168 pub const E2BIG : c_int = 7;
3169 pub const ENOEXEC : c_int = 8;
3170 pub const EBADF : c_int = 9;
3171 pub const ECHILD : c_int = 10;
3172 pub const EAGAIN : c_int = 11;
3173 pub const ENOMEM : c_int = 12;
3174 pub const EACCES : c_int = 13;
3175 pub const EFAULT : c_int = 14;
3176 pub const ENOTBLK : c_int = 15;
3177 pub const EBUSY : c_int = 16;
3178 pub const EEXIST : c_int = 17;
3179 pub const EXDEV : c_int = 18;
3180 pub const ENODEV : c_int = 19;
3181 pub const ENOTDIR : c_int = 20;
3182 pub const EISDIR : c_int = 21;
3183 pub const EINVAL : c_int = 22;
3184 pub const ENFILE : c_int = 23;
3185 pub const EMFILE : c_int = 24;
3186 pub const ENOTTY : c_int = 25;
3187 pub const ETXTBSY : c_int = 26;
3188 pub const EFBIG : c_int = 27;
3189 pub const ENOSPC : c_int = 28;
3190 pub const ESPIPE : c_int = 29;
3191 pub const EROFS : c_int = 30;
3192 pub const EMLINK : c_int = 31;
3193 pub const EPIPE : c_int = 32;
3194 pub const EDOM : c_int = 33;
3195 pub const ERANGE : c_int = 34;
3196
3197 pub const ENOMSG: c_int = 35;
3198 pub const EIDRM: c_int = 36;
3199 pub const ECHRNG: c_int = 37;
3200 pub const EL2NSYNC: c_int = 38;
3201 pub const EL3HLT: c_int = 39;
3202 pub const EL3RST: c_int = 40;
3203 pub const ELNRNG: c_int = 41;
3204 pub const EUNATCH: c_int = 42;
3205 pub const ENOCSI: c_int = 43;
3206 pub const EL2HLT: c_int = 44;
3207 pub const EDEADLK: c_int = 45;
3208 pub const ENOLCK: c_int = 46;
3209 pub const EBADE: c_int = 50;
3210 pub const EBADR: c_int = 51;
3211 pub const EXFULL: c_int = 52;
3212 pub const ENOANO: c_int = 53;
3213 pub const EBADRQC: c_int = 54;
3214 pub const EBADSLT: c_int = 55;
3215 pub const EDEADLOCK: c_int = 56;
3216 pub const EBFONT: c_int = 59;
3217 pub const ENOSTR: c_int = 60;
3218 pub const ENODATA: c_int = 61;
3219 pub const ETIME: c_int = 62;
3220 pub const ENOSR: c_int = 63;
3221 pub const ENONET: c_int = 64;
3222 pub const ENOPKG: c_int = 65;
3223 pub const EREMOTE: c_int = 66;
3224 pub const ENOLINK: c_int = 67;
3225 pub const EADV: c_int = 68;
3226 pub const ESRMNT: c_int = 69;
3227 pub const ECOMM: c_int = 70;
3228 pub const EPROTO: c_int = 71;
3229 pub const EDOTDOT: c_int = 73;
3230 pub const EMULTIHOP: c_int = 74;
3231 pub const EBADMSG: c_int = 77;
3232 pub const ENAMETOOLONG: c_int = 78;
3233 pub const EOVERFLOW: c_int = 79;
3234 pub const ENOTUNIQ: c_int = 80;
3235 pub const EBADFD: c_int = 81;
3236 pub const EREMCHG: c_int = 82;
3237 pub const ELIBACC: c_int = 83;
3238 pub const ELIBBAD: c_int = 84;
3239 pub const ELIBSCN: c_int = 95;
3240 pub const ELIBMAX: c_int = 86;
3241 pub const ELIBEXEC: c_int = 87;
3242 pub const EILSEQ: c_int = 88;
3243 pub const ENOSYS: c_int = 89;
3244 pub const ELOOP: c_int = 90;
3245 pub const ERESTART: c_int = 91;
3246 pub const ESTRPIPE: c_int = 92;
3247 pub const ENOTEMPTY: c_int = 93;
3248 pub const EUSERS: c_int = 94;
3249 pub const ENOTSOCK: c_int = 95;
3250 pub const EDESTADDRREQ: c_int = 96;
3251 pub const EMSGSIZE: c_int = 97;
3252 pub const EPROTOTYPE: c_int = 98;
3253 pub const ENOPROTOOPT: c_int = 99;
3254 pub const EPROTONOSUPPORT: c_int = 120;
3255 pub const ESOCKTNOSUPPORT: c_int = 121;
3256 pub const EOPNOTSUPP: c_int = 122;
3257 pub const EPFNOSUPPORT: c_int = 123;
3258 pub const EAFNOSUPPORT: c_int = 124;
3259 pub const EADDRINUSE: c_int = 125;
3260 pub const EADDRNOTAVAIL: c_int = 126;
3261 pub const ENETDOWN: c_int = 127;
3262 pub const ENETUNREACH: c_int = 128;
3263 pub const ENETRESET: c_int = 129;
3264 pub const ECONNABORTED: c_int = 130;
3265 pub const ECONNRESET: c_int = 131;
3266 pub const ENOBUFS: c_int = 132;
3267 pub const EISCONN: c_int = 133;
3268 pub const ENOTCONN: c_int = 134;
3269 pub const EUCLEAN: c_int = 135;
3270 pub const ENOTNAM: c_int = 137;
3271 pub const ENAVAIL: c_int = 138;
3272 pub const EISNAM: c_int = 139;
3273 pub const EREMOTEIO: c_int = 140;
3274 pub const ESHUTDOWN: c_int = 143;
3275 pub const ETOOMANYREFS: c_int = 144;
3276 pub const ETIMEDOUT: c_int = 145;
3277 pub const ECONNREFUSED: c_int = 146;
3278 pub const EHOSTDOWN: c_int = 147;
3279 pub const EHOSTUNREACH: c_int = 148;
3280 pub const EWOULDBLOCK: c_int = EAGAIN;
3281 pub const EALREADY: c_int = 149;
3282 pub const EINPROGRESS: c_int = 150;
3283 pub const ESTALE: c_int = 151;
3284 pub const ECANCELED: c_int = 158;
3285
3286 pub const ENOMEDIUM: c_int = 159;
3287 pub const EMEDIUMTYPE: c_int = 160;
3288 pub const ENOKEY: c_int = 161;
3289 pub const EKEYEXPIRED: c_int = 162;
3290 pub const EKEYREVOKED: c_int = 163;
3291 pub const EKEYREJECTED: c_int = 164;
3292
3293 pub const EOWNERDEAD: c_int = 165;
3294 pub const ENOTRECOVERABLE: c_int = 166;
3295
3296 pub const ERFKILL: c_int = 167;
3297
3298 pub const EHWPOISON: c_int = 168;
3299
3300 pub const EDQUOT: c_int = 1133;
3301 }
3302 #[cfg(not(target_os = "nacl"))]
3303 pub mod posix01 {
3304 use types::os::arch::c95::{c_int, size_t};
3305 use types::os::common::posix01::rlim_t;
3306
3307 pub const F_DUPFD : c_int = 0;
3308 pub const F_GETFD : c_int = 1;
3309 pub const F_SETFD : c_int = 2;
3310 pub const F_GETFL : c_int = 3;
3311 pub const F_SETFL : c_int = 4;
3312
3313 pub const O_ACCMODE : c_int = 3;
3314
3315 pub const SIGTRAP : c_int = 5;
3316 pub const SIG_IGN: size_t = 1;
3317
3318 pub const GLOB_ERR : c_int = 1 << 0;
3319 pub const GLOB_MARK : c_int = 1 << 1;
3320 pub const GLOB_NOSORT : c_int = 1 << 2;
3321 pub const GLOB_DOOFFS : c_int = 1 << 3;
3322 pub const GLOB_NOCHECK : c_int = 1 << 4;
3323 pub const GLOB_APPEND : c_int = 1 << 5;
3324 pub const GLOB_NOESCAPE : c_int = 1 << 6;
3325
3326 pub const GLOB_NOSPACE : c_int = 1;
3327 pub const GLOB_ABORTED : c_int = 2;
3328 pub const GLOB_NOMATCH : c_int = 3;
3329
3330 pub const POSIX_MADV_NORMAL : c_int = 0;
3331 pub const POSIX_MADV_RANDOM : c_int = 1;
3332 pub const POSIX_MADV_SEQUENTIAL : c_int = 2;
3333 pub const POSIX_MADV_WILLNEED : c_int = 3;
3334 pub const POSIX_MADV_DONTNEED : c_int = 4;
3335
3336 pub const _SC_MQ_PRIO_MAX : c_int = 28;
3337 pub const _SC_IOV_MAX : c_int = 60;
3338 pub const _SC_GETGR_R_SIZE_MAX : c_int = 69;
3339 pub const _SC_GETPW_R_SIZE_MAX : c_int = 70;
3340 pub const _SC_LOGIN_NAME_MAX : c_int = 71;
3341 pub const _SC_TTY_NAME_MAX : c_int = 72;
3342 pub const _SC_THREADS : c_int = 67;
3343 pub const _SC_THREAD_SAFE_FUNCTIONS : c_int = 68;
3344 pub const _SC_THREAD_DESTRUCTOR_ITERATIONS : c_int = 73;
3345 pub const _SC_THREAD_KEYS_MAX : c_int = 74;
3346 pub const _SC_THREAD_STACK_MIN : c_int = 75;
3347 pub const _SC_THREAD_THREADS_MAX : c_int = 76;
3348 pub const _SC_THREAD_ATTR_STACKADDR : c_int = 77;
3349 pub const _SC_THREAD_ATTR_STACKSIZE : c_int = 78;
3350 pub const _SC_THREAD_PRIORITY_SCHEDULING : c_int = 79;
3351 pub const _SC_THREAD_PRIO_INHERIT : c_int = 80;
3352 pub const _SC_THREAD_PRIO_PROTECT : c_int = 81;
3353 pub const _SC_THREAD_PROCESS_SHARED : c_int = 82;
3354 pub const _SC_ATEXIT_MAX : c_int = 87;
3355 pub const _SC_XOPEN_VERSION : c_int = 89;
3356 pub const _SC_XOPEN_XCU_VERSION : c_int = 90;
3357 pub const _SC_XOPEN_UNIX : c_int = 91;
3358 pub const _SC_XOPEN_CRYPT : c_int = 92;
3359 pub const _SC_XOPEN_ENH_I18N : c_int = 93;
3360 pub const _SC_XOPEN_SHM : c_int = 94;
3361 pub const _SC_XOPEN_LEGACY : c_int = 129;
3362 pub const _SC_XOPEN_REALTIME : c_int = 130;
3363 pub const _SC_XOPEN_REALTIME_THREADS : c_int = 131;
3364
3365
3366
3367 pub const PTHREAD_CREATE_JOINABLE: c_int = 0;
3368 pub const PTHREAD_CREATE_DETACHED: c_int = 1;
3369
3370 #[cfg(target_os = "android")]
3371 pub const PTHREAD_STACK_MIN: size_t = 8192;
3372
3373 #[cfg(all(target_os = "linux",
3374 any(target_arch = "arm",
3375 target_arch = "x86",
3376 target_arch = "x86_64")))]
3377 pub const PTHREAD_STACK_MIN: size_t = 16384;
3378
3379 #[cfg(all(target_os = "linux",
3380 any(target_arch = "mips",
3381 target_arch = "mipsel",
3382 target_arch = "aarch64",
3383 target_arch = "powerpc")))]
3384 pub const PTHREAD_STACK_MIN: size_t = 131072;
3385
3386 pub const CLOCK_REALTIME: c_int = 0;
3387 pub const CLOCK_MONOTONIC: c_int = 1;
3388
3389 pub const RLIMIT_CPU: c_int = 0;
3390 pub const RLIMIT_FSIZE: c_int = 1;
3391 pub const RLIMIT_DATA: c_int = 2;
3392 pub const RLIMIT_STACK: c_int = 3;
3393 pub const RLIMIT_CORE: c_int = 4;
3394 pub const RLIMIT_RSS: c_int = 5;
3395 pub const RLIMIT_NOFILE: c_int = 7;
3396 pub const RLIMIT_AS: c_int = 9;
3397 pub const RLIMIT_NPROC: c_int = 6;
3398 pub const RLIMIT_MEMLOCK: c_int = 8;
3399 pub const RLIMIT_LOCKS: c_int = 10;
3400 pub const RLIMIT_SIGPENDING: c_int = 11;
3401 pub const RLIMIT_MSGQUEUE: c_int = 12;
3402 pub const RLIMIT_NICE: c_int = 13;
3403 pub const RLIMIT_RTPRIO: c_int = 14;
3404 pub const RLIMIT_RTTIME: c_int = 15;
3405 pub const RLIMIT_NLIMITS: c_int = 16;
3406 pub const RLIM_INFINITY: rlim_t = 0xffff_ffff_ffff_ffff;
3407 pub const RLIM_SAVED_MAX: rlim_t = RLIM_INFINITY;
3408 pub const RLIM_SAVED_CUR: rlim_t = RLIM_INFINITY;
3409
3410 pub const RUSAGE_SELF: c_int = 0;
3411 pub const RUSAGE_CHILDREN: c_int = -1;
3412 pub const RUSAGE_THREAD: c_int = 1;
3413 }
3414 #[cfg(target_os = "nacl")]
3415 pub mod posix01 {
3416 use types::os::arch::c95::{c_int, size_t};
3417 use types::os::common::posix01::rlim_t;
3418
3419 pub const F_DUPFD : c_int = 0;
3420 pub const F_GETFD : c_int = 1;
3421 pub const F_SETFD : c_int = 2;
3422 pub const F_GETFL : c_int = 3;
3423 pub const F_SETFL : c_int = 4;
3424
3425 pub const SIGTRAP : c_int = 5;
3426 pub const SIG_IGN: size_t = 1;
3427
3428 pub const GLOB_ERR : c_int = 1 << 0;
3429 pub const GLOB_MARK : c_int = 1 << 1;
3430 pub const GLOB_NOSORT : c_int = 1 << 2;
3431 pub const GLOB_DOOFFS : c_int = 1 << 3;
3432 pub const GLOB_NOCHECK : c_int = 1 << 4;
3433 pub const GLOB_APPEND : c_int = 1 << 5;
3434 pub const GLOB_NOESCAPE : c_int = 1 << 6;
3435
3436 pub const GLOB_NOSPACE : c_int = 1;
3437 pub const GLOB_ABORTED : c_int = 2;
3438 pub const GLOB_NOMATCH : c_int = 3;
3439
3440 pub const POSIX_MADV_NORMAL : c_int = 0;
3441 pub const POSIX_MADV_RANDOM : c_int = 1;
3442 pub const POSIX_MADV_SEQUENTIAL : c_int = 2;
3443 pub const POSIX_MADV_WILLNEED : c_int = 3;
3444 pub const POSIX_MADV_DONTNEED : c_int = 4;
3445
3446 pub const _SC_MQ_PRIO_MAX : c_int = 28;
3447 pub const _SC_IOV_MAX : c_int = 60;
3448 pub const _SC_GETGR_R_SIZE_MAX : c_int = 69;
3449 pub const _SC_GETPW_R_SIZE_MAX : c_int = 70;
3450 pub const _SC_LOGIN_NAME_MAX : c_int = 71;
3451 pub const _SC_TTY_NAME_MAX : c_int = 72;
3452 pub const _SC_THREADS : c_int = 67;
3453 pub const _SC_THREAD_SAFE_FUNCTIONS : c_int = 68;
3454 pub const _SC_THREAD_DESTRUCTOR_ITERATIONS : c_int = 73;
3455 pub const _SC_THREAD_KEYS_MAX : c_int = 74;
3456 pub const _SC_THREAD_STACK_MIN : c_int = 75;
3457 pub const _SC_THREAD_THREADS_MAX : c_int = 76;
3458 pub const _SC_THREAD_ATTR_STACKADDR : c_int = 77;
3459 pub const _SC_THREAD_ATTR_STACKSIZE : c_int = 78;
3460 pub const _SC_THREAD_PRIORITY_SCHEDULING : c_int = 79;
3461 pub const _SC_THREAD_PRIO_INHERIT : c_int = 80;
3462 pub const _SC_THREAD_PRIO_PROTECT : c_int = 81;
3463 pub const _SC_THREAD_PROCESS_SHARED : c_int = 82;
3464 pub const _SC_ATEXIT_MAX : c_int = 87;
3465 pub const _SC_XOPEN_VERSION : c_int = 89;
3466 pub const _SC_XOPEN_XCU_VERSION : c_int = 90;
3467 pub const _SC_XOPEN_UNIX : c_int = 91;
3468 pub const _SC_XOPEN_CRYPT : c_int = 92;
3469 pub const _SC_XOPEN_ENH_I18N : c_int = 93;
3470 pub const _SC_XOPEN_SHM : c_int = 94;
3471 pub const _SC_XOPEN_LEGACY : c_int = 129;
3472 pub const _SC_XOPEN_REALTIME : c_int = 130;
3473 pub const _SC_XOPEN_REALTIME_THREADS : c_int = 131;
3474
3475 pub const PTHREAD_CREATE_JOINABLE: c_int = 1;
3476 pub const PTHREAD_CREATE_DETACHED: c_int = 0;
3477
3478 pub const PTHREAD_STACK_MIN: size_t = 1024;
3479
3480 pub const CLOCK_REALTIME: c_int = 0;
3481 pub const CLOCK_MONOTONIC: c_int = 1;
3482
3483 pub const RLIMIT_CPU: c_int = 0;
3484 pub const RLIMIT_FSIZE: c_int = 1;
3485 pub const RLIMIT_DATA: c_int = 2;
3486 pub const RLIMIT_STACK: c_int = 3;
3487 pub const RLIMIT_CORE: c_int = 4;
3488 pub const RLIMIT_RSS: c_int = 5;
3489 pub const RLIMIT_NOFILE: c_int = 7;
3490 pub const RLIMIT_AS: c_int = 9;
3491 pub const RLIMIT_NPROC: c_int = 6;
3492 pub const RLIMIT_MEMLOCK: c_int = 8;
3493 pub const RLIMIT_LOCKS: c_int = 10;
3494 pub const RLIMIT_SIGPENDING: c_int = 11;
3495 pub const RLIMIT_MSGQUEUE: c_int = 12;
3496 pub const RLIMIT_NICE: c_int = 13;
3497 pub const RLIMIT_RTPRIO: c_int = 14;
3498 pub const RLIMIT_RTTIME: c_int = 15;
3499 pub const RLIMIT_NLIMITS: c_int = 16;
3500
3501 pub const RLIM_INFINITY: rlim_t = 0xffff_ffff_ffff_ffff;
3502 pub const RLIM_SAVED_MAX: rlim_t = RLIM_INFINITY;
3503 pub const RLIM_SAVED_CUR: rlim_t = RLIM_INFINITY;
3504
3505 pub const RUSAGE_SELF: c_int = 0;
3506 pub const RUSAGE_CHILDREN: c_int = -1;
3507 pub const RUSAGE_THREAD: c_int = 1;
3508 }
3509 pub mod posix08 {
3510 }
3511 #[cfg(any(target_arch = "arm",
3512 target_arch = "aarch64",
3513 target_arch = "x86",
3514 target_arch = "x86_64",
3515 target_arch = "le32",
3516 target_arch = "powerpc"))]
3517 pub mod bsd44 {
3518 use types::os::arch::c95::c_int;
3519
3520 pub const MADV_NORMAL : c_int = 0;
3521 pub const MADV_RANDOM : c_int = 1;
3522 pub const MADV_SEQUENTIAL : c_int = 2;
3523 pub const MADV_WILLNEED : c_int = 3;
3524 pub const MADV_DONTNEED : c_int = 4;
3525 pub const MADV_REMOVE : c_int = 9;
3526 pub const MADV_DONTFORK : c_int = 10;
3527 pub const MADV_DOFORK : c_int = 11;
3528 pub const MADV_MERGEABLE : c_int = 12;
3529 pub const MADV_UNMERGEABLE : c_int = 13;
3530 pub const MADV_HWPOISON : c_int = 100;
3531
3532 pub const IFF_LOOPBACK: c_int = 0x8;
3533
3534 pub const AF_UNIX: c_int = 1;
3535 pub const AF_INET: c_int = 2;
3536 pub const AF_INET6: c_int = 10;
3537 pub const SOCK_STREAM: c_int = 1;
3538 pub const SOCK_DGRAM: c_int = 2;
3539 pub const SOCK_RAW: c_int = 3;
3540 pub const IPPROTO_TCP: c_int = 6;
3541 pub const IPPROTO_IP: c_int = 0;
3542 pub const IPPROTO_IPV6: c_int = 41;
3543 pub const IP_MULTICAST_TTL: c_int = 33;
3544 pub const IP_MULTICAST_LOOP: c_int = 34;
3545 pub const IP_TTL: c_int = 2;
3546 pub const IP_HDRINCL: c_int = 3;
3547 pub const IP_ADD_MEMBERSHIP: c_int = 35;
3548 pub const IP_DROP_MEMBERSHIP: c_int = 36;
3549 pub const IPV6_ADD_MEMBERSHIP: c_int = 20;
3550 pub const IPV6_DROP_MEMBERSHIP: c_int = 21;
3551
3552 pub const TCP_NODELAY: c_int = 1;
3553 pub const TCP_MAXSEG: c_int = 2;
3554 pub const TCP_CORK: c_int = 3;
3555 pub const TCP_KEEPIDLE: c_int = 4;
3556 pub const TCP_KEEPINTVL: c_int = 5;
3557 pub const TCP_KEEPCNT: c_int = 6;
3558 pub const TCP_SYNCNT: c_int = 7;
3559 pub const TCP_LINGER2: c_int = 8;
3560 pub const TCP_DEFER_ACCEPT: c_int = 9;
3561 pub const TCP_WINDOW_CLAMP: c_int = 10;
3562 pub const TCP_INFO: c_int = 11;
3563 pub const TCP_QUICKACK: c_int = 12;
3564 pub const TCP_CONGESTION: c_int = 13;
3565 pub const TCP_MD5SIG: c_int = 14;
3566 pub const TCP_COOKIE_TRANSACTIONS: c_int = 15;
3567 pub const TCP_THIN_LINEAR_TIMEOUTS: c_int = 16;
3568 pub const TCP_THIN_DUPACK: c_int = 17;
3569 pub const TCP_USER_TIMEOUT: c_int = 18;
3570 pub const TCP_REPAIR: c_int = 19;
3571 pub const TCP_REPAIR_QUEUE: c_int = 20;
3572 pub const TCP_QUEUE_SEQ: c_int = 21;
3573 pub const TCP_REPAIR_OPTIONS: c_int = 22;
3574 pub const TCP_FASTOPEN: c_int = 23;
3575 pub const TCP_TIMESTAMP: c_int = 24;
3576
3577 pub const SOL_SOCKET: c_int = 1;
3578
3579 pub const SO_DEBUG: c_int = 1;
3580 pub const SO_REUSEADDR: c_int = 2;
3581 pub const SO_TYPE: c_int = 3;
3582 pub const SO_ERROR: c_int = 4;
3583 pub const SO_DONTROUTE: c_int = 5;
3584 pub const SO_BROADCAST: c_int = 6;
3585 pub const SO_SNDBUF: c_int = 7;
3586 pub const SO_RCVBUF: c_int = 8;
3587 pub const SO_KEEPALIVE: c_int = 9;
3588 pub const SO_OOBINLINE: c_int = 10;
3589 pub const SO_LINGER: c_int = 13;
3590 pub const SO_REUSEPORT: c_int = 15;
3591 pub const SO_RCVLOWAT: c_int = 18;
3592 pub const SO_SNDLOWAT: c_int = 19;
3593 pub const SO_RCVTIMEO: c_int = 20;
3594 pub const SO_SNDTIMEO: c_int = 21;
3595 pub const SO_ACCEPTCONN: c_int = 30;
3596
3597 pub const SHUT_RD: c_int = 0;
3598 pub const SHUT_WR: c_int = 1;
3599 pub const SHUT_RDWR: c_int = 2;
3600 }
3601 #[cfg(any(target_arch = "mips",
3602 target_arch = "mipsel"))]
3603 pub mod bsd44 {
3604 use types::os::arch::c95::c_int;
3605
3606 pub const MADV_NORMAL : c_int = 0;
3607 pub const MADV_RANDOM : c_int = 1;
3608 pub const MADV_SEQUENTIAL : c_int = 2;
3609 pub const MADV_WILLNEED : c_int = 3;
3610 pub const MADV_DONTNEED : c_int = 4;
3611 pub const MADV_REMOVE : c_int = 9;
3612 pub const MADV_DONTFORK : c_int = 10;
3613 pub const MADV_DOFORK : c_int = 11;
3614 pub const MADV_MERGEABLE : c_int = 12;
3615 pub const MADV_UNMERGEABLE : c_int = 13;
3616 pub const MADV_HWPOISON : c_int = 100;
3617
3618 pub const AF_UNIX: c_int = 1;
3619 pub const AF_INET: c_int = 2;
3620 pub const AF_INET6: c_int = 10;
3621 pub const SOCK_STREAM: c_int = 2;
3622 pub const SOCK_DGRAM: c_int = 1;
3623 pub const SOCK_RAW: c_int = 3;
3624 pub const IPPROTO_TCP: c_int = 6;
3625 pub const IPPROTO_IP: c_int = 0;
3626 pub const IPPROTO_IPV6: c_int = 41;
3627 pub const IP_MULTICAST_TTL: c_int = 33;
3628 pub const IP_MULTICAST_LOOP: c_int = 34;
3629 pub const IP_TTL: c_int = 2;
3630 pub const IP_HDRINCL: c_int = 3;
3631 pub const IP_ADD_MEMBERSHIP: c_int = 35;
3632 pub const IP_DROP_MEMBERSHIP: c_int = 36;
3633 pub const IPV6_ADD_MEMBERSHIP: c_int = 20;
3634 pub const IPV6_DROP_MEMBERSHIP: c_int = 21;
3635
3636 pub const TCP_NODELAY: c_int = 1;
3637 pub const TCP_MAXSEG: c_int = 2;
3638 pub const TCP_CORK: c_int = 3;
3639 pub const TCP_KEEPIDLE: c_int = 4;
3640 pub const TCP_KEEPINTVL: c_int = 5;
3641 pub const TCP_KEEPCNT: c_int = 6;
3642 pub const TCP_SYNCNT: c_int = 7;
3643 pub const TCP_LINGER2: c_int = 8;
3644 pub const TCP_DEFER_ACCEPT: c_int = 9;
3645 pub const TCP_WINDOW_CLAMP: c_int = 10;
3646 pub const TCP_INFO: c_int = 11;
3647 pub const TCP_QUICKACK: c_int = 12;
3648 pub const TCP_CONGESTION: c_int = 13;
3649 pub const TCP_MD5SIG: c_int = 14;
3650 pub const TCP_COOKIE_TRANSACTIONS: c_int = 15;
3651 pub const TCP_THIN_LINEAR_TIMEOUTS: c_int = 16;
3652 pub const TCP_THIN_DUPACK: c_int = 17;
3653 pub const TCP_USER_TIMEOUT: c_int = 18;
3654 pub const TCP_REPAIR: c_int = 19;
3655 pub const TCP_REPAIR_QUEUE: c_int = 20;
3656 pub const TCP_QUEUE_SEQ: c_int = 21;
3657 pub const TCP_REPAIR_OPTIONS: c_int = 22;
3658 pub const TCP_FASTOPEN: c_int = 23;
3659 pub const TCP_TIMESTAMP: c_int = 24;
3660
3661 pub const SOL_SOCKET: c_int = 65535;
3662
3663 pub const SO_DEBUG: c_int = 0x0001;
3664 pub const SO_REUSEADDR: c_int = 0x0004;
3665 pub const SO_KEEPALIVE: c_int = 0x0008;
3666 pub const SO_DONTROUTE: c_int = 0x0010;
3667 pub const SO_BROADCAST: c_int = 0x0020;
3668 pub const SO_LINGER: c_int = 0x0080;
3669 pub const SO_OOBINLINE: c_int = 0x100;
3670 pub const SO_REUSEPORT: c_int = 0x0200;
3671 pub const SO_SNDBUF: c_int = 0x1001;
3672 pub const SO_RCVBUF: c_int = 0x1002;
3673 pub const SO_SNDLOWAT: c_int = 0x1003;
3674 pub const SO_RCVLOWAT: c_int = 0x1004;
3675 pub const SO_SNDTIMEO: c_int = 0x1005;
3676 pub const SO_RCVTIMEO: c_int = 0x1006;
3677 pub const SO_ERROR: c_int = 0x1007;
3678 pub const SO_TYPE: c_int = 0x1008;
3679 pub const SO_ACCEPTCONN: c_int = 0x1009;
3680
3681 pub const SHUT_RD: c_int = 0;
3682 pub const SHUT_WR: c_int = 1;
3683 pub const SHUT_RDWR: c_int = 2;
3684 }
3685 #[cfg(any(target_arch = "x86",
3686 target_arch = "x86_64",
3687 target_arch = "arm",
3688 target_arch = "aarch64",
3689 target_arch = "le32",
3690 target_arch = "powerpc"))]
3691 pub mod extra {
3692 use types::os::arch::c95::c_int;
3693
3694 pub const AF_PACKET : c_int = 17;
3695 pub const IPPROTO_RAW : c_int = 255;
3696
3697 pub const O_RSYNC : c_int = 1052672;
3698 pub const O_DSYNC : c_int = 4096;
3699 pub const O_NONBLOCK : c_int = 2048;
3700 pub const O_SYNC : c_int = 1052672;
3701
3702 pub const PROT_GROWSDOWN : c_int = 0x010000000;
3703 pub const PROT_GROWSUP : c_int = 0x020000000;
3704
3705 pub const MAP_TYPE : c_int = 0x000f;
3706 pub const MAP_ANONYMOUS : c_int = 0x0020;
3707 pub const MAP_32BIT : c_int = 0x0040;
3708 pub const MAP_GROWSDOWN : c_int = 0x0100;
3709 pub const MAP_DENYWRITE : c_int = 0x0800;
3710 pub const MAP_EXECUTABLE : c_int = 0x01000;
3711 pub const MAP_LOCKED : c_int = 0x02000;
3712 pub const MAP_NORESERVE : c_int = 0x04000;
3713 pub const MAP_POPULATE : c_int = 0x08000;
3714 pub const MAP_NONBLOCK : c_int = 0x010000;
3715 pub const MAP_STACK : c_int = 0x020000;
3716 }
3717 #[cfg(any(target_arch = "mips",
3718 target_arch = "mipsel"))]
3719 pub mod extra {
3720 use types::os::arch::c95::c_int;
3721
3722 pub const AF_PACKET : c_int = 17;
3723 pub const IPPROTO_RAW : c_int = 255;
3724
3725 pub const O_RSYNC : c_int = 16400;
3726 pub const O_DSYNC : c_int = 16;
3727 pub const O_NONBLOCK : c_int = 128;
3728 pub const O_SYNC : c_int = 16400;
3729
3730 pub const PROT_GROWSDOWN : c_int = 0x01000000;
3731 pub const PROT_GROWSUP : c_int = 0x02000000;
3732
3733 pub const MAP_TYPE : c_int = 0x000f;
3734 pub const MAP_ANONYMOUS : c_int = 0x0800;
3735 pub const MAP_GROWSDOWN : c_int = 0x01000;
3736 pub const MAP_DENYWRITE : c_int = 0x02000;
3737 pub const MAP_EXECUTABLE : c_int = 0x04000;
3738 pub const MAP_LOCKED : c_int = 0x08000;
3739 pub const MAP_NORESERVE : c_int = 0x0400;
3740 pub const MAP_POPULATE : c_int = 0x010000;
3741 pub const MAP_NONBLOCK : c_int = 0x020000;
3742 pub const MAP_STACK : c_int = 0x040000;
3743 }
3744 #[cfg(target_os = "linux")]
3745 pub mod sysconf {
3746 use types::os::arch::c95::c_int;
3747
3748 pub const _SC_ARG_MAX : c_int = 0;
3749 pub const _SC_CHILD_MAX : c_int = 1;
3750 pub const _SC_CLK_TCK : c_int = 2;
3751 pub const _SC_NGROUPS_MAX : c_int = 3;
3752 pub const _SC_OPEN_MAX : c_int = 4;
3753 pub const _SC_STREAM_MAX : c_int = 5;
3754 pub const _SC_TZNAME_MAX : c_int = 6;
3755 pub const _SC_JOB_CONTROL : c_int = 7;
3756 pub const _SC_SAVED_IDS : c_int = 8;
3757 pub const _SC_REALTIME_SIGNALS : c_int = 9;
3758 pub const _SC_PRIORITY_SCHEDULING : c_int = 10;
3759 pub const _SC_TIMERS : c_int = 11;
3760 pub const _SC_ASYNCHRONOUS_IO : c_int = 12;
3761 pub const _SC_PRIORITIZED_IO : c_int = 13;
3762 pub const _SC_SYNCHRONIZED_IO : c_int = 14;
3763 pub const _SC_FSYNC : c_int = 15;
3764 pub const _SC_MAPPED_FILES : c_int = 16;
3765 pub const _SC_MEMLOCK : c_int = 17;
3766 pub const _SC_MEMLOCK_RANGE : c_int = 18;
3767 pub const _SC_MEMORY_PROTECTION : c_int = 19;
3768 pub const _SC_MESSAGE_PASSING : c_int = 20;
3769 pub const _SC_SEMAPHORES : c_int = 21;
3770 pub const _SC_SHARED_MEMORY_OBJECTS : c_int = 22;
3771 pub const _SC_AIO_LISTIO_MAX : c_int = 23;
3772 pub const _SC_AIO_MAX : c_int = 24;
3773 pub const _SC_AIO_PRIO_DELTA_MAX : c_int = 25;
3774 pub const _SC_DELAYTIMER_MAX : c_int = 26;
3775 pub const _SC_MQ_OPEN_MAX : c_int = 27;
3776 pub const _SC_VERSION : c_int = 29;
3777 pub const _SC_PAGESIZE : c_int = 30;
3778 pub const _SC_RTSIG_MAX : c_int = 31;
3779 pub const _SC_SEM_NSEMS_MAX : c_int = 32;
3780 pub const _SC_SEM_VALUE_MAX : c_int = 33;
3781 pub const _SC_SIGQUEUE_MAX : c_int = 34;
3782 pub const _SC_TIMER_MAX : c_int = 35;
3783 pub const _SC_BC_BASE_MAX : c_int = 36;
3784 pub const _SC_BC_DIM_MAX : c_int = 37;
3785 pub const _SC_BC_SCALE_MAX : c_int = 38;
3786 pub const _SC_BC_STRING_MAX : c_int = 39;
3787 pub const _SC_COLL_WEIGHTS_MAX : c_int = 40;
3788 pub const _SC_EXPR_NEST_MAX : c_int = 42;
3789 pub const _SC_LINE_MAX : c_int = 43;
3790 pub const _SC_RE_DUP_MAX : c_int = 44;
3791 pub const _SC_2_VERSION : c_int = 46;
3792 pub const _SC_2_C_BIND : c_int = 47;
3793 pub const _SC_2_C_DEV : c_int = 48;
3794 pub const _SC_2_FORT_DEV : c_int = 49;
3795 pub const _SC_2_FORT_RUN : c_int = 50;
3796 pub const _SC_2_SW_DEV : c_int = 51;
3797 pub const _SC_2_LOCALEDEF : c_int = 52;
3798 pub const _SC_NPROCESSORS_ONLN : c_int = 84;
3799 pub const _SC_2_CHAR_TERM : c_int = 95;
3800 pub const _SC_2_C_VERSION : c_int = 96;
3801 pub const _SC_2_UPE : c_int = 97;
3802 pub const _SC_XBS5_ILP32_OFF32 : c_int = 125;
3803 pub const _SC_XBS5_ILP32_OFFBIG : c_int = 126;
3804 pub const _SC_XBS5_LPBIG_OFFBIG : c_int = 128;
3805
3806 }
3807 #[cfg(target_os = "nacl")]
3808 pub mod sysconf {
3809 use types::os::arch::c95::c_int;
3810
3811 pub static _SC_SENDMSG_MAX_SIZE : c_int = 0;
3812 pub static _SC_NPROCESSORS_ONLN : c_int = 1;
3813 pub static _SC_PAGESIZE : c_int = 2;
3814 }
3815
3816 #[cfg(target_os = "android")]
3817 pub mod sysconf {
3818 use types::os::arch::c95::c_int;
3819
3820 pub const _SC_ARG_MAX : c_int = 0;
3821 pub const _SC_BC_BASE_MAX : c_int = 1;
3822 pub const _SC_BC_DIM_MAX : c_int = 2;
3823 pub const _SC_BC_SCALE_MAX : c_int = 3;
3824 pub const _SC_BC_STRING_MAX : c_int = 4;
3825 pub const _SC_CHILD_MAX : c_int = 5;
3826 pub const _SC_CLK_TCK : c_int = 6;
3827 pub const _SC_COLL_WEIGHTS_MAX : c_int = 7;
3828 pub const _SC_EXPR_NEST_MAX : c_int = 8;
3829 pub const _SC_LINE_MAX : c_int = 9;
3830 pub const _SC_NGROUPS_MAX : c_int = 10;
3831 pub const _SC_OPEN_MAX : c_int = 11;
3832 pub const _SC_2_C_BIND : c_int = 13;
3833 pub const _SC_2_C_DEV : c_int = 14;
3834 pub const _SC_2_C_VERSION : c_int = 15;
3835 pub const _SC_2_CHAR_TERM : c_int = 16;
3836 pub const _SC_2_FORT_DEV : c_int = 17;
3837 pub const _SC_2_FORT_RUN : c_int = 18;
3838 pub const _SC_2_LOCALEDEF : c_int = 19;
3839 pub const _SC_2_SW_DEV : c_int = 20;
3840 pub const _SC_2_UPE : c_int = 21;
3841 pub const _SC_2_VERSION : c_int = 22;
3842 pub const _SC_JOB_CONTROL : c_int = 23;
3843 pub const _SC_SAVED_IDS : c_int = 24;
3844 pub const _SC_VERSION : c_int = 25;
3845 pub const _SC_RE_DUP_MAX : c_int = 26;
3846 pub const _SC_STREAM_MAX : c_int = 27;
3847 pub const _SC_TZNAME_MAX : c_int = 28;
3848 pub const _SC_PAGESIZE : c_int = 39;
3849 }
3850 }
3851
3852 #[cfg(any(target_os = "freebsd",
3853 target_os = "dragonfly"))]
3854 pub mod os {
3855 pub mod c95 {
3856 use types::os::arch::c95::{c_int, c_uint};
3857
3858 pub const EXIT_FAILURE : c_int = 1;
3859 pub const EXIT_SUCCESS : c_int = 0;
3860 pub const RAND_MAX : c_int = 2147483647;
3861 pub const EOF : c_int = -1;
3862 pub const SEEK_SET : c_int = 0;
3863 pub const SEEK_CUR : c_int = 1;
3864 pub const SEEK_END : c_int = 2;
3865 pub const _IOFBF : c_int = 0;
3866 pub const _IONBF : c_int = 2;
3867 pub const _IOLBF : c_int = 1;
3868 pub const BUFSIZ : c_uint = 1024;
3869 pub const FOPEN_MAX : c_uint = 20;
3870 pub const FILENAME_MAX : c_uint = 1024;
3871 pub const L_tmpnam : c_uint = 1024;
3872 pub const TMP_MAX : c_uint = 308915776;
3873 }
3874 pub mod c99 {
3875 }
3876 pub mod posix88 {
3877 use types::common::c95::c_void;
3878 use types::os::arch::c95::c_int;
3879 use types::os::arch::posix88::mode_t;
3880
3881 pub const O_RDONLY : c_int = 0;
3882 pub const O_WRONLY : c_int = 1;
3883 pub const O_RDWR : c_int = 2;
3884 pub const O_APPEND : c_int = 8;
3885 pub const O_CREAT : c_int = 512;
3886 pub const O_EXCL : c_int = 2048;
3887 pub const O_NOCTTY : c_int = 32768;
3888 pub const O_TRUNC : c_int = 1024;
3889 pub const S_IFIFO : mode_t = 4096;
3890 pub const S_IFCHR : mode_t = 8192;
3891 pub const S_IFBLK : mode_t = 24576;
3892 pub const S_IFDIR : mode_t = 16384;
3893 pub const S_IFREG : mode_t = 32768;
3894 pub const S_IFLNK : mode_t = 40960;
3895 pub const S_IFMT : mode_t = 61440;
3896 pub const S_IEXEC : mode_t = 64;
3897 pub const S_IWRITE : mode_t = 128;
3898 pub const S_IREAD : mode_t = 256;
3899 pub const S_IRWXU : mode_t = 448;
3900 pub const S_IXUSR : mode_t = 64;
3901 pub const S_IWUSR : mode_t = 128;
3902 pub const S_IRUSR : mode_t = 256;
3903 pub const S_IRWXG : mode_t = 56;
3904 pub const S_IXGRP : mode_t = 8;
3905 pub const S_IWGRP : mode_t = 16;
3906 pub const S_IRGRP : mode_t = 32;
3907 pub const S_IRWXO : mode_t = 7;
3908 pub const S_IXOTH : mode_t = 1;
3909 pub const S_IWOTH : mode_t = 2;
3910 pub const S_IROTH : mode_t = 4;
3911 pub const F_OK : c_int = 0;
3912 pub const R_OK : c_int = 4;
3913 pub const W_OK : c_int = 2;
3914 pub const X_OK : c_int = 1;
3915 pub const STDIN_FILENO : c_int = 0;
3916 pub const STDOUT_FILENO : c_int = 1;
3917 pub const STDERR_FILENO : c_int = 2;
3918 pub const F_LOCK : c_int = 1;
3919 pub const F_TEST : c_int = 3;
3920 pub const F_TLOCK : c_int = 2;
3921 pub const F_ULOCK : c_int = 0;
3922 pub const SIGHUP : c_int = 1;
3923 pub const SIGINT : c_int = 2;
3924 pub const SIGQUIT : c_int = 3;
3925 pub const SIGILL : c_int = 4;
3926 pub const SIGABRT : c_int = 6;
3927 pub const SIGFPE : c_int = 8;
3928 pub const SIGKILL : c_int = 9;
3929 pub const SIGSEGV : c_int = 11;
3930 pub const SIGPIPE : c_int = 13;
3931 pub const SIGALRM : c_int = 14;
3932 pub const SIGTERM : c_int = 15;
3933
3934 pub const PROT_NONE : c_int = 0;
3935 pub const PROT_READ : c_int = 1;
3936 pub const PROT_WRITE : c_int = 2;
3937 pub const PROT_EXEC : c_int = 4;
3938
3939 pub const MAP_FILE : c_int = 0x0000;
3940 pub const MAP_SHARED : c_int = 0x0001;
3941 pub const MAP_PRIVATE : c_int = 0x0002;
3942 pub const MAP_FIXED : c_int = 0x0010;
3943 pub const MAP_ANON : c_int = 0x1000;
3944
3945 pub const MAP_FAILED : *mut c_void = !0 as *mut c_void;
3946
3947 pub const MCL_CURRENT : c_int = 0x0001;
3948 pub const MCL_FUTURE : c_int = 0x0002;
3949
3950 pub const MS_SYNC : c_int = 0x0000;
3951 pub const MS_ASYNC : c_int = 0x0001;
3952 pub const MS_INVALIDATE : c_int = 0x0002;
3953
3954 pub const EPERM : c_int = 1;
3955 pub const ENOENT : c_int = 2;
3956 pub const ESRCH : c_int = 3;
3957 pub const EINTR : c_int = 4;
3958 pub const EIO : c_int = 5;
3959 pub const ENXIO : c_int = 6;
3960 pub const E2BIG : c_int = 7;
3961 pub const ENOEXEC : c_int = 8;
3962 pub const EBADF : c_int = 9;
3963 pub const ECHILD : c_int = 10;
3964 pub const EDEADLK : c_int = 11;
3965 pub const ENOMEM : c_int = 12;
3966 pub const EACCES : c_int = 13;
3967 pub const EFAULT : c_int = 14;
3968 pub const ENOTBLK : c_int = 15;
3969 pub const EBUSY : c_int = 16;
3970 pub const EEXIST : c_int = 17;
3971 pub const EXDEV : c_int = 18;
3972 pub const ENODEV : c_int = 19;
3973 pub const ENOTDIR : c_int = 20;
3974 pub const EISDIR : c_int = 21;
3975 pub const EINVAL : c_int = 22;
3976 pub const ENFILE : c_int = 23;
3977 pub const EMFILE : c_int = 24;
3978 pub const ENOTTY : c_int = 25;
3979 pub const ETXTBSY : c_int = 26;
3980 pub const EFBIG : c_int = 27;
3981 pub const ENOSPC : c_int = 28;
3982 pub const ESPIPE : c_int = 29;
3983 pub const EROFS : c_int = 30;
3984 pub const EMLINK : c_int = 31;
3985 pub const EPIPE : c_int = 32;
3986 pub const EDOM : c_int = 33;
3987 pub const ERANGE : c_int = 34;
3988 pub const EAGAIN : c_int = 35;
3989 pub const EWOULDBLOCK : c_int = 35;
3990 pub const EINPROGRESS : c_int = 36;
3991 pub const EALREADY : c_int = 37;
3992 pub const ENOTSOCK : c_int = 38;
3993 pub const EDESTADDRREQ : c_int = 39;
3994 pub const EMSGSIZE : c_int = 40;
3995 pub const EPROTOTYPE : c_int = 41;
3996 pub const ENOPROTOOPT : c_int = 42;
3997 pub const EPROTONOSUPPORT : c_int = 43;
3998 pub const ESOCKTNOSUPPORT : c_int = 44;
3999 pub const EOPNOTSUPP : c_int = 45;
4000 pub const EPFNOSUPPORT : c_int = 46;
4001 pub const EAFNOSUPPORT : c_int = 47;
4002 pub const EADDRINUSE : c_int = 48;
4003 pub const EADDRNOTAVAIL : c_int = 49;
4004 pub const ENETDOWN : c_int = 50;
4005 pub const ENETUNREACH : c_int = 51;
4006 pub const ENETRESET : c_int = 52;
4007 pub const ECONNABORTED : c_int = 53;
4008 pub const ECONNRESET : c_int = 54;
4009 pub const ENOBUFS : c_int = 55;
4010 pub const EISCONN : c_int = 56;
4011 pub const ENOTCONN : c_int = 57;
4012 pub const ESHUTDOWN : c_int = 58;
4013 pub const ETOOMANYREFS : c_int = 59;
4014 pub const ETIMEDOUT : c_int = 60;
4015 pub const ECONNREFUSED : c_int = 61;
4016 pub const ELOOP : c_int = 62;
4017 pub const ENAMETOOLONG : c_int = 63;
4018 pub const EHOSTDOWN : c_int = 64;
4019 pub const EHOSTUNREACH : c_int = 65;
4020 pub const ENOTEMPTY : c_int = 66;
4021 pub const EPROCLIM : c_int = 67;
4022 pub const EUSERS : c_int = 68;
4023 pub const EDQUOT : c_int = 69;
4024 pub const ESTALE : c_int = 70;
4025 pub const EREMOTE : c_int = 71;
4026 pub const EBADRPC : c_int = 72;
4027 pub const ERPCMISMATCH : c_int = 73;
4028 pub const EPROGUNAVAIL : c_int = 74;
4029 pub const EPROGMISMATCH : c_int = 75;
4030 pub const EPROCUNAVAIL : c_int = 76;
4031 pub const ENOLCK : c_int = 77;
4032 pub const ENOSYS : c_int = 78;
4033 pub const EFTYPE : c_int = 79;
4034 pub const EAUTH : c_int = 80;
4035 pub const ENEEDAUTH : c_int = 81;
4036 pub const EIDRM : c_int = 82;
4037 pub const ENOMSG : c_int = 83;
4038 pub const EOVERFLOW : c_int = 84;
4039 pub const ECANCELED : c_int = 85;
4040 pub const EILSEQ : c_int = 86;
4041 pub const ENOATTR : c_int = 87;
4042 pub const EDOOFUS : c_int = 88;
4043 pub const EBADMSG : c_int = 89;
4044 pub const EMULTIHOP : c_int = 90;
4045 pub const ENOLINK : c_int = 91;
4046 pub const EPROTO : c_int = 92;
4047 pub const ENOMEDIUM : c_int = 93;
4048 pub const EUNUSED94 : c_int = 94;
4049 pub const EUNUSED95 : c_int = 95;
4050 pub const EUNUSED96 : c_int = 96;
4051 pub const EUNUSED97 : c_int = 97;
4052 pub const EUNUSED98 : c_int = 98;
4053 pub const EASYNC : c_int = 99;
4054 pub const ELAST : c_int = 99;
4055 }
4056 pub mod posix01 {
4057 use types::os::arch::c95::{c_int, size_t};
4058 use types::os::common::posix01::rlim_t;
4059
4060 pub const F_DUPFD : c_int = 0;
4061 pub const F_GETFD : c_int = 1;
4062 pub const F_SETFD : c_int = 2;
4063 pub const F_GETFL : c_int = 3;
4064 pub const F_SETFL : c_int = 4;
4065
4066 pub const SIGTRAP : c_int = 5;
4067 pub const SIG_IGN: size_t = 1;
4068
4069 pub const GLOB_APPEND : c_int = 0x0001;
4070 pub const GLOB_DOOFFS : c_int = 0x0002;
4071 pub const GLOB_ERR : c_int = 0x0004;
4072 pub const GLOB_MARK : c_int = 0x0008;
4073 pub const GLOB_NOCHECK : c_int = 0x0010;
4074 pub const GLOB_NOSORT : c_int = 0x0020;
4075 pub const GLOB_NOESCAPE : c_int = 0x2000;
4076
4077 pub const GLOB_NOSPACE : c_int = -1;
4078 pub const GLOB_ABORTED : c_int = -2;
4079 pub const GLOB_NOMATCH : c_int = -3;
4080
4081 pub const POSIX_MADV_NORMAL : c_int = 0;
4082 pub const POSIX_MADV_RANDOM : c_int = 1;
4083 pub const POSIX_MADV_SEQUENTIAL : c_int = 2;
4084 pub const POSIX_MADV_WILLNEED : c_int = 3;
4085 pub const POSIX_MADV_DONTNEED : c_int = 4;
4086
4087 pub const _SC_IOV_MAX : c_int = 56;
4088 pub const _SC_GETGR_R_SIZE_MAX : c_int = 70;
4089 pub const _SC_GETPW_R_SIZE_MAX : c_int = 71;
4090 pub const _SC_LOGIN_NAME_MAX : c_int = 73;
4091 pub const _SC_MQ_PRIO_MAX : c_int = 75;
4092 pub const _SC_THREAD_ATTR_STACKADDR : c_int = 82;
4093 pub const _SC_THREAD_ATTR_STACKSIZE : c_int = 83;
4094 pub const _SC_THREAD_DESTRUCTOR_ITERATIONS : c_int = 85;
4095 pub const _SC_THREAD_KEYS_MAX : c_int = 86;
4096 pub const _SC_THREAD_PRIO_INHERIT : c_int = 87;
4097 pub const _SC_THREAD_PRIO_PROTECT : c_int = 88;
4098 pub const _SC_THREAD_PRIORITY_SCHEDULING : c_int = 89;
4099 pub const _SC_THREAD_PROCESS_SHARED : c_int = 90;
4100 pub const _SC_THREAD_SAFE_FUNCTIONS : c_int = 91;
4101 pub const _SC_THREAD_STACK_MIN : c_int = 93;
4102 pub const _SC_THREAD_THREADS_MAX : c_int = 94;
4103 pub const _SC_THREADS : c_int = 96;
4104 pub const _SC_TTY_NAME_MAX : c_int = 101;
4105 pub const _SC_ATEXIT_MAX : c_int = 107;
4106 pub const _SC_XOPEN_CRYPT : c_int = 108;
4107 pub const _SC_XOPEN_ENH_I18N : c_int = 109;
4108 pub const _SC_XOPEN_LEGACY : c_int = 110;
4109 pub const _SC_XOPEN_REALTIME : c_int = 111;
4110 pub const _SC_XOPEN_REALTIME_THREADS : c_int = 112;
4111 pub const _SC_XOPEN_SHM : c_int = 113;
4112 pub const _SC_XOPEN_UNIX : c_int = 115;
4113 pub const _SC_XOPEN_VERSION : c_int = 116;
4114 pub const _SC_XOPEN_XCU_VERSION : c_int = 117;
4115
4116 pub const PTHREAD_CREATE_JOINABLE: c_int = 0;
4117 pub const PTHREAD_CREATE_DETACHED: c_int = 1;
4118
4119 #[cfg(target_arch = "arm")]
4120 pub const PTHREAD_STACK_MIN: size_t = 4096;
4121
4122 #[cfg(all(target_os = "freebsd",
4123 any(target_arch = "mips",
4124 target_arch = "mipsel",
4125 target_arch = "x86",
4126 target_arch = "x86_64")))]
4127 pub const PTHREAD_STACK_MIN: size_t = 2048;
4128
4129 #[cfg(target_os = "dragonfly")]
4130 pub const PTHREAD_STACK_MIN: size_t = 1024;
4131
4132 pub const CLOCK_REALTIME: c_int = 0;
4133 pub const CLOCK_MONOTONIC: c_int = 4;
4134
4135 pub const RLIMIT_CPU: c_int = 0;
4136 pub const RLIMIT_FSIZE: c_int = 1;
4137 pub const RLIMIT_DATA: c_int = 2;
4138 pub const RLIMIT_STACK: c_int = 3;
4139 pub const RLIMIT_CORE: c_int = 4;
4140 pub const RLIMIT_RSS: c_int = 5;
4141 pub const RLIMIT_MEMLOCK: c_int = 6;
4142 pub const RLIMIT_NPROC: c_int = 7;
4143 pub const RLIMIT_NOFILE: c_int = 8;
4144 pub const RLIMIT_SBSIZE: c_int = 9;
4145 pub const RLIMIT_VMEM: c_int = 10;
4146 pub const RLIMIT_AS: c_int = RLIMIT_VMEM;
4147 pub const RLIMIT_NPTS: c_int = 11;
4148 pub const RLIMIT_SWAP: c_int = 12;
4149 pub const RLIMIT_KQUEUES: c_int = 13;
4150
4151 pub const RLIM_NLIMITS: rlim_t = 14;
4152 pub const RLIM_INFINITY: rlim_t = 0x7fff_ffff_ffff_ffff;
4153
4154 pub const RUSAGE_SELF: c_int = 0;
4155 pub const RUSAGE_CHILDREN: c_int = -1;
4156 pub const RUSAGE_THREAD: c_int = 1;
4157 }
4158 pub mod posix08 {
4159 }
4160 pub mod bsd44 {
4161 use types::os::arch::c95::c_int;
4162
4163 pub const MADV_NORMAL : c_int = 0;
4164 pub const MADV_RANDOM : c_int = 1;
4165 pub const MADV_SEQUENTIAL : c_int = 2;
4166 pub const MADV_WILLNEED : c_int = 3;
4167 pub const MADV_DONTNEED : c_int = 4;
4168 pub const MADV_FREE : c_int = 5;
4169 pub const MADV_NOSYNC : c_int = 6;
4170 pub const MADV_AUTOSYNC : c_int = 7;
4171 pub const MADV_NOCORE : c_int = 8;
4172 pub const MADV_CORE : c_int = 9;
4173 pub const MADV_PROTECT : c_int = 10;
4174
4175 pub const MINCORE_INCORE : c_int = 0x1;
4176 pub const MINCORE_REFERENCED : c_int = 0x2;
4177 pub const MINCORE_MODIFIED : c_int = 0x4;
4178 pub const MINCORE_REFERENCED_OTHER : c_int = 0x8;
4179 pub const MINCORE_MODIFIED_OTHER : c_int = 0x10;
4180 pub const MINCORE_SUPER : c_int = 0x20;
4181
4182 pub const AF_INET: c_int = 2;
4183 pub const AF_INET6: c_int = 28;
4184 pub const AF_UNIX: c_int = 1;
4185 pub const SOCK_STREAM: c_int = 1;
4186 pub const SOCK_DGRAM: c_int = 2;
4187 pub const SOCK_RAW: c_int = 3;
4188 pub const IPPROTO_TCP: c_int = 6;
4189 pub const IPPROTO_IP: c_int = 0;
4190 pub const IPPROTO_IPV6: c_int = 41;
4191 pub const IP_MULTICAST_TTL: c_int = 10;
4192 pub const IP_MULTICAST_LOOP: c_int = 11;
4193 pub const IP_TTL: c_int = 4;
4194 pub const IP_HDRINCL: c_int = 2;
4195 pub const IP_ADD_MEMBERSHIP: c_int = 12;
4196 pub const IP_DROP_MEMBERSHIP: c_int = 13;
4197 pub const IPV6_ADD_MEMBERSHIP: c_int = 12;
4198 pub const IPV6_DROP_MEMBERSHIP: c_int = 13;
4199
4200 pub const TCP_NODELAY: c_int = 1;
4201 pub const TCP_KEEPIDLE: c_int = 256;
4202 pub const SOL_SOCKET: c_int = 0xffff;
4203 pub const SO_DEBUG: c_int = 0x01;
4204 pub const SO_ACCEPTCONN: c_int = 0x0002;
4205 pub const SO_REUSEADDR: c_int = 0x0004;
4206 pub const SO_KEEPALIVE: c_int = 0x0008;
4207 pub const SO_DONTROUTE: c_int = 0x0010;
4208 pub const SO_BROADCAST: c_int = 0x0020;
4209 pub const SO_USELOOPBACK: c_int = 0x0040;
4210 pub const SO_LINGER: c_int = 0x0080;
4211 pub const SO_OOBINLINE: c_int = 0x0100;
4212 pub const SO_REUSEPORT: c_int = 0x0200;
4213 pub const SO_SNDBUF: c_int = 0x1001;
4214 pub const SO_RCVBUF: c_int = 0x1002;
4215 pub const SO_SNDLOWAT: c_int = 0x1003;
4216 pub const SO_RCVLOWAT: c_int = 0x1004;
4217 pub const SO_SNDTIMEO: c_int = 0x1005;
4218 pub const SO_RCVTIMEO: c_int = 0x1006;
4219 pub const SO_ERROR: c_int = 0x1007;
4220 pub const SO_TYPE: c_int = 0x1008;
4221
4222 pub const IFF_LOOPBACK: c_int = 0x8;
4223
4224 pub const SHUT_RD: c_int = 0;
4225 pub const SHUT_WR: c_int = 1;
4226 pub const SHUT_RDWR: c_int = 2;
4227 }
4228 pub mod extra {
4229 use types::os::arch::c95::c_int;
4230
4231 pub const O_SYNC : c_int = 128;
4232 pub const O_NONBLOCK : c_int = 4;
4233 pub const CTL_KERN: c_int = 1;
4234 pub const KERN_PROC: c_int = 14;
4235 #[cfg(target_os = "freebsd")]
4236 pub const KERN_PROC_PATHNAME: c_int = 12;
4237 #[cfg(target_os = "dragonfly")]
4238 pub const KERN_PROC_PATHNAME: c_int = 9;
4239
4240 pub const MAP_COPY : c_int = 0x0002;
4241 pub const MAP_RENAME : c_int = 0x0020;
4242 pub const MAP_NORESERVE : c_int = 0x0040;
4243 pub const MAP_HASSEMAPHORE : c_int = 0x0200;
4244 pub const MAP_STACK : c_int = 0x0400;
4245 pub const MAP_NOSYNC : c_int = 0x0800;
4246 pub const MAP_NOCORE : c_int = 0x020000;
4247
4248 pub const IPPROTO_RAW : c_int = 255;
4249 }
4250 pub mod sysconf {
4251 use types::os::arch::c95::c_int;
4252
4253 pub const _SC_ARG_MAX : c_int = 1;
4254 pub const _SC_CHILD_MAX : c_int = 2;
4255 pub const _SC_CLK_TCK : c_int = 3;
4256 pub const _SC_NGROUPS_MAX : c_int = 4;
4257 pub const _SC_OPEN_MAX : c_int = 5;
4258 pub const _SC_JOB_CONTROL : c_int = 6;
4259 pub const _SC_SAVED_IDS : c_int = 7;
4260 pub const _SC_VERSION : c_int = 8;
4261 pub const _SC_BC_BASE_MAX : c_int = 9;
4262 pub const _SC_BC_DIM_MAX : c_int = 10;
4263 pub const _SC_BC_SCALE_MAX : c_int = 11;
4264 pub const _SC_BC_STRING_MAX : c_int = 12;
4265 pub const _SC_COLL_WEIGHTS_MAX : c_int = 13;
4266 pub const _SC_EXPR_NEST_MAX : c_int = 14;
4267 pub const _SC_LINE_MAX : c_int = 15;
4268 pub const _SC_RE_DUP_MAX : c_int = 16;
4269 pub const _SC_2_VERSION : c_int = 17;
4270 pub const _SC_2_C_BIND : c_int = 18;
4271 pub const _SC_2_C_DEV : c_int = 19;
4272 pub const _SC_2_CHAR_TERM : c_int = 20;
4273 pub const _SC_2_FORT_DEV : c_int = 21;
4274 pub const _SC_2_FORT_RUN : c_int = 22;
4275 pub const _SC_2_LOCALEDEF : c_int = 23;
4276 pub const _SC_2_SW_DEV : c_int = 24;
4277 pub const _SC_2_UPE : c_int = 25;
4278 pub const _SC_STREAM_MAX : c_int = 26;
4279 pub const _SC_TZNAME_MAX : c_int = 27;
4280 pub const _SC_ASYNCHRONOUS_IO : c_int = 28;
4281 pub const _SC_MAPPED_FILES : c_int = 29;
4282 pub const _SC_MEMLOCK : c_int = 30;
4283 pub const _SC_MEMLOCK_RANGE : c_int = 31;
4284 pub const _SC_MEMORY_PROTECTION : c_int = 32;
4285 pub const _SC_MESSAGE_PASSING : c_int = 33;
4286 pub const _SC_PRIORITIZED_IO : c_int = 34;
4287 pub const _SC_PRIORITY_SCHEDULING : c_int = 35;
4288 pub const _SC_REALTIME_SIGNALS : c_int = 36;
4289 pub const _SC_SEMAPHORES : c_int = 37;
4290 pub const _SC_FSYNC : c_int = 38;
4291 pub const _SC_SHARED_MEMORY_OBJECTS : c_int = 39;
4292 pub const _SC_SYNCHRONIZED_IO : c_int = 40;
4293 pub const _SC_TIMERS : c_int = 41;
4294 pub const _SC_AIO_LISTIO_MAX : c_int = 42;
4295 pub const _SC_AIO_MAX : c_int = 43;
4296 pub const _SC_AIO_PRIO_DELTA_MAX : c_int = 44;
4297 pub const _SC_DELAYTIMER_MAX : c_int = 45;
4298 pub const _SC_MQ_OPEN_MAX : c_int = 46;
4299 pub const _SC_PAGESIZE : c_int = 47;
4300 pub const _SC_RTSIG_MAX : c_int = 48;
4301 pub const _SC_SEM_NSEMS_MAX : c_int = 49;
4302 pub const _SC_SEM_VALUE_MAX : c_int = 50;
4303 pub const _SC_SIGQUEUE_MAX : c_int = 51;
4304 pub const _SC_TIMER_MAX : c_int = 52;
4305 }
4306 }
4307
4308 #[cfg(any(target_os = "bitrig", target_os = "openbsd"))]
4309 pub mod os {
4310 pub mod c95 {
4311 use types::os::arch::c95::{c_int, c_uint};
4312
4313 pub const EXIT_FAILURE : c_int = 1;
4314 pub const EXIT_SUCCESS : c_int = 0;
4315 pub const RAND_MAX : c_int = 2147483647;
4316 pub const EOF : c_int = -1;
4317 pub const SEEK_SET : c_int = 0;
4318 pub const SEEK_CUR : c_int = 1;
4319 pub const SEEK_END : c_int = 2;
4320 pub const _IOFBF : c_int = 0;
4321 pub const _IONBF : c_int = 2;
4322 pub const _IOLBF : c_int = 1;
4323 pub const BUFSIZ : c_uint = 1024;
4324 pub const FOPEN_MAX : c_uint = 20;
4325 pub const FILENAME_MAX : c_uint = 1024;
4326 pub const L_tmpnam : c_uint = 1024;
4327 pub const TMP_MAX : c_uint = 308915776;
4328 }
4329 pub mod c99 {
4330 }
4331 pub mod posix88 {
4332 use types::common::c95::c_void;
4333 use types::os::arch::c95::c_int;
4334 use types::os::arch::posix88::mode_t;
4335
4336 pub const O_RDONLY : c_int = 0;
4337 pub const O_WRONLY : c_int = 1;
4338 pub const O_RDWR : c_int = 2;
4339 pub const O_APPEND : c_int = 8;
4340 pub const O_CREAT : c_int = 512;
4341 pub const O_EXCL : c_int = 2048;
4342 pub const O_NOCTTY : c_int = 32768;
4343 pub const O_TRUNC : c_int = 1024;
4344 pub const S_IFIFO : mode_t = 4096;
4345 pub const S_IFCHR : mode_t = 8192;
4346 pub const S_IFBLK : mode_t = 24576;
4347 pub const S_IFDIR : mode_t = 16384;
4348 pub const S_IFREG : mode_t = 32768;
4349 pub const S_IFLNK : mode_t = 40960;
4350 pub const S_IFMT : mode_t = 61440;
4351 pub const S_IEXEC : mode_t = 64;
4352 pub const S_IWRITE : mode_t = 128;
4353 pub const S_IREAD : mode_t = 256;
4354 pub const S_IRWXU : mode_t = 448;
4355 pub const S_IXUSR : mode_t = 64;
4356 pub const S_IWUSR : mode_t = 128;
4357 pub const S_IRUSR : mode_t = 256;
4358 pub const S_IRWXG : mode_t = 56;
4359 pub const S_IXGRP : mode_t = 8;
4360 pub const S_IWGRP : mode_t = 16;
4361 pub const S_IRGRP : mode_t = 32;
4362 pub const S_IRWXO : mode_t = 7;
4363 pub const S_IXOTH : mode_t = 1;
4364 pub const S_IWOTH : mode_t = 2;
4365 pub const S_IROTH : mode_t = 4;
4366 pub const F_OK : c_int = 0;
4367 pub const R_OK : c_int = 4;
4368 pub const W_OK : c_int = 2;
4369 pub const X_OK : c_int = 1;
4370 pub const STDIN_FILENO : c_int = 0;
4371 pub const STDOUT_FILENO : c_int = 1;
4372 pub const STDERR_FILENO : c_int = 2;
4373 pub const F_LOCK : c_int = 1;
4374 pub const F_TEST : c_int = 3;
4375 pub const F_TLOCK : c_int = 2;
4376 pub const F_ULOCK : c_int = 0;
4377 pub const SIGHUP : c_int = 1;
4378 pub const SIGINT : c_int = 2;
4379 pub const SIGQUIT : c_int = 3;
4380 pub const SIGILL : c_int = 4;
4381 pub const SIGABRT : c_int = 6;
4382 pub const SIGFPE : c_int = 8;
4383 pub const SIGKILL : c_int = 9;
4384 pub const SIGSEGV : c_int = 11;
4385 pub const SIGPIPE : c_int = 13;
4386 pub const SIGALRM : c_int = 14;
4387 pub const SIGTERM : c_int = 15;
4388
4389 pub const PROT_NONE : c_int = 0;
4390 pub const PROT_READ : c_int = 1;
4391 pub const PROT_WRITE : c_int = 2;
4392 pub const PROT_EXEC : c_int = 4;
4393
4394 pub const MAP_FILE : c_int = 0x0000;
4395 pub const MAP_SHARED : c_int = 0x0001;
4396 pub const MAP_PRIVATE : c_int = 0x0002;
4397 pub const MAP_FIXED : c_int = 0x0010;
4398 pub const MAP_ANON : c_int = 0x1000;
4399
4400 pub const MAP_FAILED : *mut c_void = !0 as *mut c_void;
4401
4402 pub const MCL_CURRENT : c_int = 0x0001;
4403 pub const MCL_FUTURE : c_int = 0x0002;
4404
4405 pub const MS_ASYNC : c_int = 0x0001;
4406 pub const MS_SYNC : c_int = 0x0002;
4407 pub const MS_INVALIDATE : c_int = 0x0004;
4408
4409 pub const EPERM : c_int = 1;
4410 pub const ENOENT : c_int = 2;
4411 pub const ESRCH : c_int = 3;
4412 pub const EINTR : c_int = 4;
4413 pub const EIO : c_int = 5;
4414 pub const ENXIO : c_int = 6;
4415 pub const E2BIG : c_int = 7;
4416 pub const ENOEXEC : c_int = 8;
4417 pub const EBADF : c_int = 9;
4418 pub const ECHILD : c_int = 10;
4419 pub const EDEADLK : c_int = 11;
4420 pub const ENOMEM : c_int = 12;
4421 pub const EACCES : c_int = 13;
4422 pub const EFAULT : c_int = 14;
4423 pub const ENOTBLK : c_int = 15;
4424 pub const EBUSY : c_int = 16;
4425 pub const EEXIST : c_int = 17;
4426 pub const EXDEV : c_int = 18;
4427 pub const ENODEV : c_int = 19;
4428 pub const ENOTDIR : c_int = 20;
4429 pub const EISDIR : c_int = 21;
4430 pub const EINVAL : c_int = 22;
4431 pub const ENFILE : c_int = 23;
4432 pub const EMFILE : c_int = 24;
4433 pub const ENOTTY : c_int = 25;
4434 pub const ETXTBSY : c_int = 26;
4435 pub const EFBIG : c_int = 27;
4436 pub const ENOSPC : c_int = 28;
4437 pub const ESPIPE : c_int = 29;
4438 pub const EROFS : c_int = 30;
4439 pub const EMLINK : c_int = 31;
4440 pub const EPIPE : c_int = 32;
4441 pub const EDOM : c_int = 33;
4442 pub const ERANGE : c_int = 34;
4443 pub const EAGAIN : c_int = 35;
4444 pub const EWOULDBLOCK : c_int = 35;
4445 pub const EINPROGRESS : c_int = 36;
4446 pub const EALREADY : c_int = 37;
4447 pub const ENOTSOCK : c_int = 38;
4448 pub const EDESTADDRREQ : c_int = 39;
4449 pub const EMSGSIZE : c_int = 40;
4450 pub const EPROTOTYPE : c_int = 41;
4451 pub const ENOPROTOOPT : c_int = 42;
4452 pub const EPROTONOSUPPORT : c_int = 43;
4453 pub const ESOCKTNOSUPPORT : c_int = 44;
4454 pub const EOPNOTSUPP : c_int = 45;
4455 pub const EPFNOSUPPORT : c_int = 46;
4456 pub const EAFNOSUPPORT : c_int = 47;
4457 pub const EADDRINUSE : c_int = 48;
4458 pub const EADDRNOTAVAIL : c_int = 49;
4459 pub const ENETDOWN : c_int = 50;
4460 pub const ENETUNREACH : c_int = 51;
4461 pub const ENETRESET : c_int = 52;
4462 pub const ECONNABORTED : c_int = 53;
4463 pub const ECONNRESET : c_int = 54;
4464 pub const ENOBUFS : c_int = 55;
4465 pub const EISCONN : c_int = 56;
4466 pub const ENOTCONN : c_int = 57;
4467 pub const ESHUTDOWN : c_int = 58;
4468 pub const ETOOMANYREFS : c_int = 59;
4469 pub const ETIMEDOUT : c_int = 60;
4470 pub const ECONNREFUSED : c_int = 61;
4471 pub const ELOOP : c_int = 62;
4472 pub const ENAMETOOLONG : c_int = 63;
4473 pub const EHOSTDOWN : c_int = 64;
4474 pub const EHOSTUNREACH : c_int = 65;
4475 pub const ENOTEMPTY : c_int = 66;
4476 pub const EPROCLIM : c_int = 67;
4477 pub const EUSERS : c_int = 68;
4478 pub const EDQUOT : c_int = 69;
4479 pub const ESTALE : c_int = 70;
4480 pub const EREMOTE : c_int = 71;
4481 pub const EBADRPC : c_int = 72;
4482 pub const ERPCMISMATCH : c_int = 73;
4483 pub const EPROGUNAVAIL : c_int = 74;
4484 pub const EPROGMISMATCH : c_int = 75;
4485 pub const EPROCUNAVAIL : c_int = 76;
4486 pub const ENOLCK : c_int = 77;
4487 pub const ENOSYS : c_int = 78;
4488 pub const EFTYPE : c_int = 79;
4489 pub const EAUTH : c_int = 80;
4490 pub const ENEEDAUTH : c_int = 81;
4491 pub const EIPSEC : c_int = 82;
4492 pub const ENOATTR : c_int = 83;
4493 pub const EILSEQ : c_int = 84;
4494 pub const ENOMEDIUM : c_int = 85;
4495 pub const EMEDIUMTYPE : c_int = 86;
4496 pub const EOVERFLOW : c_int = 87;
4497 pub const ECANCELED : c_int = 88;
4498 pub const EIDRM : c_int = 89;
4499 pub const ENOMSG : c_int = 90;
4500 pub const ENOTSUP : c_int = 91;
4501 pub const ELAST : c_int = 91; // must be equal to largest errno
4502 }
4503 pub mod posix01 {
4504 use types::os::arch::c95::{c_int, size_t};
4505 use types::os::common::posix01::rlim_t;
4506
4507 pub const F_DUPFD : c_int = 0;
4508 pub const F_GETFD : c_int = 1;
4509 pub const F_SETFD : c_int = 2;
4510 pub const F_GETFL : c_int = 3;
4511 pub const F_SETFL : c_int = 4;
4512 pub const F_GETOWN : c_int = 5;
4513 pub const F_SETOWN : c_int = 6;
4514 pub const F_GETLK : c_int = 7;
4515 pub const F_SETLK : c_int = 8;
4516 pub const F_SETLKW : c_int = 9;
4517 pub const F_DUPFD_CLOEXEC : c_int = 10;
4518
4519 pub const SIGTRAP : c_int = 5;
4520 pub const SIG_IGN: size_t = 1;
4521
4522 pub const GLOB_APPEND : c_int = 0x0001;
4523 pub const GLOB_DOOFFS : c_int = 0x0002;
4524 pub const GLOB_ERR : c_int = 0x0004;
4525 pub const GLOB_MARK : c_int = 0x0008;
4526 pub const GLOB_NOCHECK : c_int = 0x0010;
4527 pub const GLOB_NOSORT : c_int = 0x0020;
4528 pub const GLOB_NOESCAPE : c_int = 0x1000;
4529
4530 pub const GLOB_NOSPACE : c_int = -1;
4531 pub const GLOB_ABORTED : c_int = -2;
4532 pub const GLOB_NOMATCH : c_int = -3;
4533 pub const GLOB_NOSYS : c_int = -4;
4534
4535 pub const POSIX_MADV_NORMAL : c_int = 0;
4536 pub const POSIX_MADV_RANDOM : c_int = 1;
4537 pub const POSIX_MADV_SEQUENTIAL : c_int = 2;
4538 pub const POSIX_MADV_WILLNEED : c_int = 3;
4539 pub const POSIX_MADV_DONTNEED : c_int = 4;
4540
4541 pub const _SC_IOV_MAX : c_int = 51;
4542 pub const _SC_GETGR_R_SIZE_MAX : c_int = 100;
4543 pub const _SC_GETPW_R_SIZE_MAX : c_int = 101;
4544 pub const _SC_LOGIN_NAME_MAX : c_int = 102;
4545 pub const _SC_MQ_PRIO_MAX : c_int = 59;
4546 pub const _SC_THREAD_ATTR_STACKADDR : c_int = 77;
4547 pub const _SC_THREAD_ATTR_STACKSIZE : c_int = 78;
4548 pub const _SC_THREAD_DESTRUCTOR_ITERATIONS : c_int = 80;
4549 pub const _SC_THREAD_KEYS_MAX : c_int = 81;
4550 pub const _SC_THREAD_PRIO_INHERIT : c_int = 82;
4551 pub const _SC_THREAD_PRIO_PROTECT : c_int = 83;
4552 pub const _SC_THREAD_PRIORITY_SCHEDULING : c_int = 84;
4553 pub const _SC_THREAD_PROCESS_SHARED : c_int = 85;
4554 pub const _SC_THREAD_SAFE_FUNCTIONS : c_int = 103;
4555 pub const _SC_THREAD_STACK_MIN : c_int = 89;
4556 pub const _SC_THREAD_THREADS_MAX : c_int = 90;
4557 pub const _SC_THREADS : c_int = 91;
4558 pub const _SC_TTY_NAME_MAX : c_int = 107;
4559 pub const _SC_ATEXIT_MAX : c_int = 46;
4560 pub const _SC_XOPEN_CRYPT : c_int = 117;
4561 pub const _SC_XOPEN_ENH_I18N : c_int = 118;
4562 pub const _SC_XOPEN_LEGACY : c_int = 119;
4563 pub const _SC_XOPEN_REALTIME : c_int = 120;
4564 pub const _SC_XOPEN_REALTIME_THREADS : c_int = 121;
4565 pub const _SC_XOPEN_SHM : c_int = 30;
4566 pub const _SC_XOPEN_UNIX : c_int = 123;
4567 pub const _SC_XOPEN_VERSION : c_int = 125;
4568
4569 pub const PTHREAD_CREATE_JOINABLE : c_int = 0;
4570 pub const PTHREAD_CREATE_DETACHED : c_int = 1;
4571 pub const PTHREAD_STACK_MIN : size_t = 2048;
4572
4573 pub const CLOCK_REALTIME : c_int = 0;
4574 pub const CLOCK_MONOTONIC : c_int = 3;
4575
4576 pub const RLIMIT_CPU: c_int = 0;
4577 pub const RLIMIT_FSIZE: c_int = 1;
4578 pub const RLIMIT_DATA: c_int = 2;
4579 pub const RLIMIT_STACK: c_int = 3;
4580 pub const RLIMIT_CORE: c_int = 4;
4581 pub const RLIMIT_RSS: c_int = 5;
4582 pub const RLIMIT_MEMLOCK: c_int = 6;
4583 pub const RLIMIT_NPROC: c_int = 7;
4584 pub const RLIMIT_NOFILE: c_int = 8;
4585 pub const RLIM_NLIMITS: c_int = 9;
4586
4587 pub const RLIM_INFINITY: rlim_t = 0x7fff_ffff_ffff_ffff;
4588 pub const RLIM_SAVED_MAX: rlim_t = RLIM_INFINITY;
4589 pub const RLIM_SAVED_CUR: rlim_t = RLIM_INFINITY;
4590
4591 pub const RUSAGE_SELF: c_int = 0;
4592 pub const RUSAGE_CHILDREN: c_int = -1;
4593 pub const RUSAGE_THREAD: c_int = 1;
4594 }
4595 pub mod posix08 {
4596 }
4597 pub mod bsd44 {
4598 use types::os::arch::c95::c_int;
4599
4600 pub const MADV_NORMAL : c_int = 0;
4601 pub const MADV_RANDOM : c_int = 1;
4602 pub const MADV_SEQUENTIAL : c_int = 2;
4603 pub const MADV_WILLNEED : c_int = 3;
4604 pub const MADV_DONTNEED : c_int = 4;
4605 pub const MADV_FREE : c_int = 6;
4606
4607 pub const AF_UNIX: c_int = 1;
4608 pub const AF_INET: c_int = 2;
4609 pub const AF_INET6: c_int = 24;
4610 pub const SOCK_STREAM: c_int = 1;
4611 pub const SOCK_DGRAM: c_int = 2;
4612 pub const SOCK_RAW: c_int = 3;
4613 pub const IPPROTO_TCP: c_int = 6;
4614 pub const IPPROTO_IP: c_int = 0;
4615 pub const IPPROTO_IPV6: c_int = 41;
4616 pub const IP_MULTICAST_TTL: c_int = 10;
4617 pub const IP_MULTICAST_LOOP: c_int = 11;
4618 pub const IP_TTL: c_int = 4;
4619 pub const IP_HDRINCL: c_int = 2;
4620 pub const IP_ADD_MEMBERSHIP: c_int = 12;
4621 pub const IP_DROP_MEMBERSHIP: c_int = 13;
4622 pub const IPV6_ADD_MEMBERSHIP: c_int = 12; // don't exist
4623 pub const IPV6_DROP_MEMBERSHIP: c_int = 13; // don't exist
4624
4625 pub const TCP_NODELAY: c_int = 0x01;
4626 pub const SOL_SOCKET: c_int = 0xffff;
4627 pub const SO_DEBUG: c_int = 0x01;
4628 pub const SO_ACCEPTCONN: c_int = 0x0002;
4629 pub const SO_REUSEADDR: c_int = 0x0004;
4630 pub const SO_KEEPALIVE: c_int = 0x0008;
4631 pub const SO_DONTROUTE: c_int = 0x0010;
4632 pub const SO_BROADCAST: c_int = 0x0020;
4633 pub const SO_USELOOPBACK: c_int = 0x0040;
4634 pub const SO_LINGER: c_int = 0x0080;
4635 pub const SO_OOBINLINE: c_int = 0x0100;
4636 pub const SO_REUSEPORT: c_int = 0x0200;
4637 pub const SO_SNDBUF: c_int = 0x1001;
4638 pub const SO_RCVBUF: c_int = 0x1002;
4639 pub const SO_SNDLOWAT: c_int = 0x1003;
4640 pub const SO_RCVLOWAT: c_int = 0x1004;
4641 pub const SO_SNDTIMEO: c_int = 0x1005;
4642 pub const SO_RCVTIMEO: c_int = 0x1006;
4643 pub const SO_ERROR: c_int = 0x1007;
4644 pub const SO_TYPE: c_int = 0x1008;
4645
4646 pub const IFF_LOOPBACK: c_int = 0x8;
4647
4648 pub const SHUT_RD: c_int = 0;
4649 pub const SHUT_WR: c_int = 1;
4650 pub const SHUT_RDWR: c_int = 2;
4651 }
4652 pub mod extra {
4653 use types::os::arch::c95::c_int;
4654
4655 pub const O_DSYNC : c_int = 128; // same as SYNC
4656 pub const O_SYNC : c_int = 128;
4657 pub const O_NONBLOCK : c_int = 4;
4658 pub const CTL_KERN : c_int = 1;
4659 pub const KERN_PROC : c_int = 66;
4660
4661 pub const MAP_COPY : c_int = 0x0002;
4662 pub const MAP_RENAME : c_int = 0x0000;
4663 pub const MAP_NORESERVE : c_int = 0x0000;
4664 pub const MAP_NOEXTEND : c_int = 0x0000;
4665 pub const MAP_HASSEMAPHORE : c_int = 0x0000;
4666
4667 pub const IPPROTO_RAW : c_int = 255;
4668
4669 pub const PATH_MAX: c_int = 1024;
4670 }
4671 pub mod sysconf {
4672 use types::os::arch::c95::c_int;
4673
4674 pub const _SC_ARG_MAX : c_int = 1;
4675 pub const _SC_CHILD_MAX : c_int = 2;
4676 pub const _SC_CLK_TCK : c_int = 3;
4677 pub const _SC_NGROUPS_MAX : c_int = 4;
4678 pub const _SC_OPEN_MAX : c_int = 5;
4679 pub const _SC_JOB_CONTROL : c_int = 6;
4680 pub const _SC_SAVED_IDS : c_int = 7;
4681 pub const _SC_VERSION : c_int = 8;
4682 pub const _SC_BC_BASE_MAX : c_int = 9;
4683 pub const _SC_BC_DIM_MAX : c_int = 10;
4684 pub const _SC_BC_SCALE_MAX : c_int = 11;
4685 pub const _SC_BC_STRING_MAX : c_int = 12;
4686 pub const _SC_COLL_WEIGHTS_MAX : c_int = 13;
4687 pub const _SC_EXPR_NEST_MAX : c_int = 14;
4688 pub const _SC_LINE_MAX : c_int = 15;
4689 pub const _SC_RE_DUP_MAX : c_int = 16;
4690 pub const _SC_2_VERSION : c_int = 17;
4691 pub const _SC_2_C_BIND : c_int = 18;
4692 pub const _SC_2_C_DEV : c_int = 19;
4693 pub const _SC_2_CHAR_TERM : c_int = 20;
4694 pub const _SC_2_FORT_DEV : c_int = 21;
4695 pub const _SC_2_FORT_RUN : c_int = 22;
4696 pub const _SC_2_LOCALEDEF : c_int = 23;
4697 pub const _SC_2_SW_DEV : c_int = 24;
4698 pub const _SC_2_UPE : c_int = 25;
4699 pub const _SC_STREAM_MAX : c_int = 26;
4700 pub const _SC_TZNAME_MAX : c_int = 27;
4701 pub const _SC_PAGESIZE : c_int = 28;
4702 pub const _SC_FSYNC : c_int = 29;
4703 pub const _SC_SEM_NSEMS_MAX : c_int = 31;
4704 pub const _SC_SEM_VALUE_MAX : c_int = 32;
4705 pub const _SC_AIO_LISTIO_MAX : c_int = 42;
4706 pub const _SC_AIO_MAX : c_int = 43;
4707 pub const _SC_AIO_PRIO_DELTA_MAX : c_int = 44;
4708 pub const _SC_ASYNCHRONOUS_IO : c_int = 45;
4709 pub const _SC_DELAYTIMER_MAX : c_int = 50;
4710 pub const _SC_MAPPED_FILES : c_int = 53;
4711 pub const _SC_MEMLOCK : c_int = 54;
4712 pub const _SC_MEMLOCK_RANGE : c_int = 55;
4713 pub const _SC_MEMORY_PROTECTION : c_int = 56;
4714 pub const _SC_MESSAGE_PASSING : c_int = 57;
4715 pub const _SC_MQ_OPEN_MAX : c_int = 58;
4716 pub const _SC_PRIORITIZED_IO : c_int = 60;
4717 pub const _SC_PRIORITY_SCHEDULING : c_int = 61;
4718 pub const _SC_REALTIME_SIGNALS : c_int = 64;
4719 pub const _SC_RTSIG_MAX : c_int = 66;
4720 pub const _SC_SEMAPHORES : c_int = 67;
4721 pub const _SC_SHARED_MEMORY_OBJECTS : c_int = 68;
4722 pub const _SC_SIGQUEUE_MAX : c_int = 70;
4723 pub const _SC_SYNCHRONIZED_IO : c_int = 75;
4724 pub const _SC_TIMER_MAX : c_int = 93;
4725 pub const _SC_TIMERS : c_int = 94;
4726 }
4727 }
4728
4729 #[cfg(any(target_os = "macos", target_os = "ios"))]
4730 pub mod os {
4731 pub mod c95 {
4732 use types::os::arch::c95::{c_int, c_uint};
4733
4734 pub const EXIT_FAILURE : c_int = 1;
4735 pub const EXIT_SUCCESS : c_int = 0;
4736 pub const RAND_MAX : c_int = 2147483647;
4737 pub const EOF : c_int = -1;
4738 pub const SEEK_SET : c_int = 0;
4739 pub const SEEK_CUR : c_int = 1;
4740 pub const SEEK_END : c_int = 2;
4741 pub const _IOFBF : c_int = 0;
4742 pub const _IONBF : c_int = 2;
4743 pub const _IOLBF : c_int = 1;
4744 pub const BUFSIZ : c_uint = 1024;
4745 pub const FOPEN_MAX : c_uint = 20;
4746 pub const FILENAME_MAX : c_uint = 1024;
4747 pub const L_tmpnam : c_uint = 1024;
4748 pub const TMP_MAX : c_uint = 308915776;
4749 }
4750 pub mod c99 {
4751 }
4752 pub mod posix88 {
4753 use types::common::c95::c_void;
4754 use types::os::arch::c95::c_int;
4755 use types::os::arch::posix88::mode_t;
4756
4757 pub const O_RDONLY : c_int = 0;
4758 pub const O_WRONLY : c_int = 1;
4759 pub const O_RDWR : c_int = 2;
4760 pub const O_APPEND : c_int = 8;
4761 pub const O_CREAT : c_int = 512;
4762 pub const O_EXCL : c_int = 2048;
4763 pub const O_NOCTTY : c_int = 131072;
4764 pub const O_TRUNC : c_int = 1024;
4765 pub const S_IFIFO : mode_t = 4096;
4766 pub const S_IFCHR : mode_t = 8192;
4767 pub const S_IFBLK : mode_t = 24576;
4768 pub const S_IFDIR : mode_t = 16384;
4769 pub const S_IFREG : mode_t = 32768;
4770 pub const S_IFLNK : mode_t = 40960;
4771 pub const S_IFMT : mode_t = 61440;
4772 pub const S_IEXEC : mode_t = 64;
4773 pub const S_IWRITE : mode_t = 128;
4774 pub const S_IREAD : mode_t = 256;
4775 pub const S_IRWXU : mode_t = 448;
4776 pub const S_IXUSR : mode_t = 64;
4777 pub const S_IWUSR : mode_t = 128;
4778 pub const S_IRUSR : mode_t = 256;
4779 pub const S_IRWXG : mode_t = 56;
4780 pub const S_IXGRP : mode_t = 8;
4781 pub const S_IWGRP : mode_t = 16;
4782 pub const S_IRGRP : mode_t = 32;
4783 pub const S_IRWXO : mode_t = 7;
4784 pub const S_IXOTH : mode_t = 1;
4785 pub const S_IWOTH : mode_t = 2;
4786 pub const S_IROTH : mode_t = 4;
4787 pub const F_OK : c_int = 0;
4788 pub const R_OK : c_int = 4;
4789 pub const W_OK : c_int = 2;
4790 pub const X_OK : c_int = 1;
4791 pub const STDIN_FILENO : c_int = 0;
4792 pub const STDOUT_FILENO : c_int = 1;
4793 pub const STDERR_FILENO : c_int = 2;
4794 pub const F_LOCK : c_int = 1;
4795 pub const F_TEST : c_int = 3;
4796 pub const F_TLOCK : c_int = 2;
4797 pub const F_ULOCK : c_int = 0;
4798 pub const SIGHUP : c_int = 1;
4799 pub const SIGINT : c_int = 2;
4800 pub const SIGQUIT : c_int = 3;
4801 pub const SIGILL : c_int = 4;
4802 pub const SIGABRT : c_int = 6;
4803 pub const SIGFPE : c_int = 8;
4804 pub const SIGKILL : c_int = 9;
4805 pub const SIGSEGV : c_int = 11;
4806 pub const SIGPIPE : c_int = 13;
4807 pub const SIGALRM : c_int = 14;
4808 pub const SIGTERM : c_int = 15;
4809
4810 pub const PROT_NONE : c_int = 0;
4811 pub const PROT_READ : c_int = 1;
4812 pub const PROT_WRITE : c_int = 2;
4813 pub const PROT_EXEC : c_int = 4;
4814
4815 pub const MAP_FILE : c_int = 0x0000;
4816 pub const MAP_SHARED : c_int = 0x0001;
4817 pub const MAP_PRIVATE : c_int = 0x0002;
4818 pub const MAP_FIXED : c_int = 0x0010;
4819 pub const MAP_ANON : c_int = 0x1000;
4820
4821 pub const MAP_FAILED : *mut c_void = !0 as *mut c_void;
4822
4823 pub const MCL_CURRENT : c_int = 0x0001;
4824 pub const MCL_FUTURE : c_int = 0x0002;
4825
4826 pub const MS_ASYNC : c_int = 0x0001;
4827 pub const MS_INVALIDATE : c_int = 0x0002;
4828 pub const MS_SYNC : c_int = 0x0010;
4829
4830 pub const MS_KILLPAGES : c_int = 0x0004;
4831 pub const MS_DEACTIVATE : c_int = 0x0008;
4832
4833 pub const EPERM : c_int = 1;
4834 pub const ENOENT : c_int = 2;
4835 pub const ESRCH : c_int = 3;
4836 pub const EINTR : c_int = 4;
4837 pub const EIO : c_int = 5;
4838 pub const ENXIO : c_int = 6;
4839 pub const E2BIG : c_int = 7;
4840 pub const ENOEXEC : c_int = 8;
4841 pub const EBADF : c_int = 9;
4842 pub const ECHILD : c_int = 10;
4843 pub const EDEADLK : c_int = 11;
4844 pub const ENOMEM : c_int = 12;
4845 pub const EACCES : c_int = 13;
4846 pub const EFAULT : c_int = 14;
4847 pub const ENOTBLK : c_int = 15;
4848 pub const EBUSY : c_int = 16;
4849 pub const EEXIST : c_int = 17;
4850 pub const EXDEV : c_int = 18;
4851 pub const ENODEV : c_int = 19;
4852 pub const ENOTDIR : c_int = 20;
4853 pub const EISDIR : c_int = 21;
4854 pub const EINVAL : c_int = 22;
4855 pub const ENFILE : c_int = 23;
4856 pub const EMFILE : c_int = 24;
4857 pub const ENOTTY : c_int = 25;
4858 pub const ETXTBSY : c_int = 26;
4859 pub const EFBIG : c_int = 27;
4860 pub const ENOSPC : c_int = 28;
4861 pub const ESPIPE : c_int = 29;
4862 pub const EROFS : c_int = 30;
4863 pub const EMLINK : c_int = 31;
4864 pub const EPIPE : c_int = 32;
4865 pub const EDOM : c_int = 33;
4866 pub const ERANGE : c_int = 34;
4867 pub const EAGAIN : c_int = 35;
4868 pub const EWOULDBLOCK : c_int = EAGAIN;
4869 pub const EINPROGRESS : c_int = 36;
4870 pub const EALREADY : c_int = 37;
4871 pub const ENOTSOCK : c_int = 38;
4872 pub const EDESTADDRREQ : c_int = 39;
4873 pub const EMSGSIZE : c_int = 40;
4874 pub const EPROTOTYPE : c_int = 41;
4875 pub const ENOPROTOOPT : c_int = 42;
4876 pub const EPROTONOSUPPORT : c_int = 43;
4877 pub const ESOCKTNOSUPPORT : c_int = 44;
4878 pub const ENOTSUP : c_int = 45;
4879 pub const EPFNOSUPPORT : c_int = 46;
4880 pub const EAFNOSUPPORT : c_int = 47;
4881 pub const EADDRINUSE : c_int = 48;
4882 pub const EADDRNOTAVAIL : c_int = 49;
4883 pub const ENETDOWN : c_int = 50;
4884 pub const ENETUNREACH : c_int = 51;
4885 pub const ENETRESET : c_int = 52;
4886 pub const ECONNABORTED : c_int = 53;
4887 pub const ECONNRESET : c_int = 54;
4888 pub const ENOBUFS : c_int = 55;
4889 pub const EISCONN : c_int = 56;
4890 pub const ENOTCONN : c_int = 57;
4891 pub const ESHUTDOWN : c_int = 58;
4892 pub const ETOOMANYREFS : c_int = 59;
4893 pub const ETIMEDOUT : c_int = 60;
4894 pub const ECONNREFUSED : c_int = 61;
4895 pub const ELOOP : c_int = 62;
4896 pub const ENAMETOOLONG : c_int = 63;
4897 pub const EHOSTDOWN : c_int = 64;
4898 pub const EHOSTUNREACH : c_int = 65;
4899 pub const ENOTEMPTY : c_int = 66;
4900 pub const EPROCLIM : c_int = 67;
4901 pub const EUSERS : c_int = 68;
4902 pub const EDQUOT : c_int = 69;
4903 pub const ESTALE : c_int = 70;
4904 pub const EREMOTE : c_int = 71;
4905 pub const EBADRPC : c_int = 72;
4906 pub const ERPCMISMATCH : c_int = 73;
4907 pub const EPROGUNAVAIL : c_int = 74;
4908 pub const EPROGMISMATCH : c_int = 75;
4909 pub const EPROCUNAVAIL : c_int = 76;
4910 pub const ENOLCK : c_int = 77;
4911 pub const ENOSYS : c_int = 78;
4912 pub const EFTYPE : c_int = 79;
4913 pub const EAUTH : c_int = 80;
4914 pub const ENEEDAUTH : c_int = 81;
4915 pub const EPWROFF : c_int = 82;
4916 pub const EDEVERR : c_int = 83;
4917 pub const EOVERFLOW : c_int = 84;
4918 pub const EBADEXEC : c_int = 85;
4919 pub const EBADARCH : c_int = 86;
4920 pub const ESHLIBVERS : c_int = 87;
4921 pub const EBADMACHO : c_int = 88;
4922 pub const ECANCELED : c_int = 89;
4923 pub const EIDRM : c_int = 90;
4924 pub const ENOMSG : c_int = 91;
4925 pub const EILSEQ : c_int = 92;
4926 pub const ENOATTR : c_int = 93;
4927 pub const EBADMSG : c_int = 94;
4928 pub const EMULTIHOP : c_int = 95;
4929 pub const ENODATA : c_int = 96;
4930 pub const ENOLINK : c_int = 97;
4931 pub const ENOSR : c_int = 98;
4932 pub const ENOSTR : c_int = 99;
4933 pub const EPROTO : c_int = 100;
4934 pub const ETIME : c_int = 101;
4935 pub const EOPNOTSUPP : c_int = 102;
4936 pub const ENOPOLICY : c_int = 103;
4937 pub const ENOTRECOVERABLE : c_int = 104;
4938 pub const EOWNERDEAD : c_int = 105;
4939 pub const EQFULL : c_int = 106;
4940 pub const ELAST : c_int = 106;
4941 }
4942 pub mod posix01 {
4943 use types::os::arch::c95::{c_int, size_t};
4944 use types::os::common::posix01::rlim_t;
4945
4946 pub const F_DUPFD : c_int = 0;
4947 pub const F_GETFD : c_int = 1;
4948 pub const F_SETFD : c_int = 2;
4949 pub const F_GETFL : c_int = 3;
4950 pub const F_SETFL : c_int = 4;
4951
4952 pub const SIGTRAP : c_int = 5;
4953 pub const SIG_IGN: size_t = 1;
4954
4955 pub const GLOB_APPEND : c_int = 0x0001;
4956 pub const GLOB_DOOFFS : c_int = 0x0002;
4957 pub const GLOB_ERR : c_int = 0x0004;
4958 pub const GLOB_MARK : c_int = 0x0008;
4959 pub const GLOB_NOCHECK : c_int = 0x0010;
4960 pub const GLOB_NOSORT : c_int = 0x0020;
4961 pub const GLOB_NOESCAPE : c_int = 0x2000;
4962
4963 pub const GLOB_NOSPACE : c_int = -1;
4964 pub const GLOB_ABORTED : c_int = -2;
4965 pub const GLOB_NOMATCH : c_int = -3;
4966
4967 pub const POSIX_MADV_NORMAL : c_int = 0;
4968 pub const POSIX_MADV_RANDOM : c_int = 1;
4969 pub const POSIX_MADV_SEQUENTIAL : c_int = 2;
4970 pub const POSIX_MADV_WILLNEED : c_int = 3;
4971 pub const POSIX_MADV_DONTNEED : c_int = 4;
4972
4973 pub const _SC_IOV_MAX : c_int = 56;
4974 pub const _SC_GETGR_R_SIZE_MAX : c_int = 70;
4975 pub const _SC_GETPW_R_SIZE_MAX : c_int = 71;
4976 pub const _SC_LOGIN_NAME_MAX : c_int = 73;
4977 pub const _SC_MQ_PRIO_MAX : c_int = 75;
4978 pub const _SC_THREAD_ATTR_STACKADDR : c_int = 82;
4979 pub const _SC_THREAD_ATTR_STACKSIZE : c_int = 83;
4980 pub const _SC_THREAD_DESTRUCTOR_ITERATIONS : c_int = 85;
4981 pub const _SC_THREAD_KEYS_MAX : c_int = 86;
4982 pub const _SC_THREAD_PRIO_INHERIT : c_int = 87;
4983 pub const _SC_THREAD_PRIO_PROTECT : c_int = 88;
4984 pub const _SC_THREAD_PRIORITY_SCHEDULING : c_int = 89;
4985 pub const _SC_THREAD_PROCESS_SHARED : c_int = 90;
4986 pub const _SC_THREAD_SAFE_FUNCTIONS : c_int = 91;
4987 pub const _SC_THREAD_STACK_MIN : c_int = 93;
4988 pub const _SC_THREAD_THREADS_MAX : c_int = 94;
4989 pub const _SC_THREADS : c_int = 96;
4990 pub const _SC_TTY_NAME_MAX : c_int = 101;
4991 pub const _SC_ATEXIT_MAX : c_int = 107;
4992 pub const _SC_XOPEN_CRYPT : c_int = 108;
4993 pub const _SC_XOPEN_ENH_I18N : c_int = 109;
4994 pub const _SC_XOPEN_LEGACY : c_int = 110;
4995 pub const _SC_XOPEN_REALTIME : c_int = 111;
4996 pub const _SC_XOPEN_REALTIME_THREADS : c_int = 112;
4997 pub const _SC_XOPEN_SHM : c_int = 113;
4998 pub const _SC_XOPEN_UNIX : c_int = 115;
4999 pub const _SC_XOPEN_VERSION : c_int = 116;
5000 pub const _SC_XOPEN_XCU_VERSION : c_int = 121;
5001
5002 pub const PTHREAD_CREATE_JOINABLE: c_int = 1;
5003 pub const PTHREAD_CREATE_DETACHED: c_int = 2;
5004 pub const PTHREAD_STACK_MIN: size_t = 8192;
5005
5006 pub const RLIMIT_CPU: c_int = 0;
5007 pub const RLIMIT_FSIZE: c_int = 1;
5008 pub const RLIMIT_DATA: c_int = 2;
5009 pub const RLIMIT_STACK: c_int = 3;
5010 pub const RLIMIT_CORE: c_int = 4;
5011 pub const RLIMIT_AS: c_int = 5;
5012 pub const RLIMIT_MEMLOCK: c_int = 6;
5013 pub const RLIMIT_NPROC: c_int = 7;
5014 pub const RLIMIT_NOFILE: c_int = 8;
5015 pub const RLIM_NLIMITS: c_int = 9;
5016 pub const _RLIMIT_POSIX_FLAG: c_int = 0x1000;
5017
5018 pub const RLIM_INFINITY: rlim_t = 0xffff_ffff_ffff_ffff;
5019
5020 pub const RUSAGE_SELF: c_int = 0;
5021 pub const RUSAGE_CHILDREN: c_int = -1;
5022 pub const RUSAGE_THREAD: c_int = 1;
5023 }
5024 pub mod posix08 {
5025 }
5026 pub mod bsd44 {
5027 use types::os::arch::c95::c_int;
5028
5029 pub const MADV_NORMAL : c_int = 0;
5030 pub const MADV_RANDOM : c_int = 1;
5031 pub const MADV_SEQUENTIAL : c_int = 2;
5032 pub const MADV_WILLNEED : c_int = 3;
5033 pub const MADV_DONTNEED : c_int = 4;
5034 pub const MADV_FREE : c_int = 5;
5035 pub const MADV_ZERO_WIRED_PAGES : c_int = 6;
5036 pub const MADV_FREE_REUSABLE : c_int = 7;
5037 pub const MADV_FREE_REUSE : c_int = 8;
5038 pub const MADV_CAN_REUSE : c_int = 9;
5039
5040 pub const MINCORE_INCORE : c_int = 0x1;
5041 pub const MINCORE_REFERENCED : c_int = 0x2;
5042 pub const MINCORE_MODIFIED : c_int = 0x4;
5043 pub const MINCORE_REFERENCED_OTHER : c_int = 0x8;
5044 pub const MINCORE_MODIFIED_OTHER : c_int = 0x10;
5045
5046 pub const AF_UNIX: c_int = 1;
5047 pub const AF_INET: c_int = 2;
5048 pub const AF_INET6: c_int = 30;
5049 pub const SOCK_STREAM: c_int = 1;
5050 pub const SOCK_DGRAM: c_int = 2;
5051 pub const SOCK_RAW: c_int = 3;
5052 pub const IPPROTO_TCP: c_int = 6;
5053 pub const IPPROTO_IP: c_int = 0;
5054 pub const IPPROTO_IPV6: c_int = 41;
5055 pub const IP_MULTICAST_TTL: c_int = 10;
5056 pub const IP_MULTICAST_LOOP: c_int = 11;
5057 pub const IP_TTL: c_int = 4;
5058 pub const IP_HDRINCL: c_int = 2;
5059 pub const IP_ADD_MEMBERSHIP: c_int = 12;
5060 pub const IP_DROP_MEMBERSHIP: c_int = 13;
5061 pub const IPV6_ADD_MEMBERSHIP: c_int = 12;
5062 pub const IPV6_DROP_MEMBERSHIP: c_int = 13;
5063
5064 pub const TCP_NODELAY: c_int = 0x01;
5065 pub const TCP_KEEPALIVE: c_int = 0x10;
5066 pub const SOL_SOCKET: c_int = 0xffff;
5067
5068 pub const SO_DEBUG: c_int = 0x01;
5069 pub const SO_ACCEPTCONN: c_int = 0x0002;
5070 pub const SO_REUSEADDR: c_int = 0x0004;
5071 pub const SO_KEEPALIVE: c_int = 0x0008;
5072 pub const SO_DONTROUTE: c_int = 0x0010;
5073 pub const SO_BROADCAST: c_int = 0x0020;
5074 pub const SO_USELOOPBACK: c_int = 0x0040;
5075 pub const SO_LINGER: c_int = 0x0080;
5076 pub const SO_OOBINLINE: c_int = 0x0100;
5077 pub const SO_REUSEPORT: c_int = 0x0200;
5078 pub const SO_SNDBUF: c_int = 0x1001;
5079 pub const SO_RCVBUF: c_int = 0x1002;
5080 pub const SO_SNDLOWAT: c_int = 0x1003;
5081 pub const SO_RCVLOWAT: c_int = 0x1004;
5082 pub const SO_SNDTIMEO: c_int = 0x1005;
5083 pub const SO_RCVTIMEO: c_int = 0x1006;
5084 pub const SO_ERROR: c_int = 0x1007;
5085 pub const SO_TYPE: c_int = 0x1008;
5086
5087 pub const IFF_LOOPBACK: c_int = 0x8;
5088
5089 pub const SHUT_RD: c_int = 0;
5090 pub const SHUT_WR: c_int = 1;
5091 pub const SHUT_RDWR: c_int = 2;
5092 }
5093 pub mod extra {
5094 use types::os::arch::c95::c_int;
5095
5096 pub const O_DSYNC : c_int = 4194304;
5097 pub const O_SYNC : c_int = 128;
5098 pub const O_NONBLOCK : c_int = 4;
5099 pub const F_FULLFSYNC : c_int = 51;
5100
5101 pub const MAP_COPY : c_int = 0x0002;
5102 pub const MAP_RENAME : c_int = 0x0020;
5103 pub const MAP_NORESERVE : c_int = 0x0040;
5104 pub const MAP_NOEXTEND : c_int = 0x0100;
5105 pub const MAP_HASSEMAPHORE : c_int = 0x0200;
5106 pub const MAP_NOCACHE : c_int = 0x0400;
5107 pub const MAP_JIT : c_int = 0x0800;
5108 pub const MAP_STACK : c_int = 0;
5109
5110 pub const IPPROTO_RAW : c_int = 255;
5111
5112 pub const SO_NREAD: c_int = 0x1020;
5113 pub const SO_NKE: c_int = 0x1021;
5114 pub const SO_NOSIGPIPE: c_int = 0x1022;
5115 pub const SO_NOADDRERR: c_int = 0x1023;
5116 pub const SO_NWRITE: c_int = 0x1024;
5117 pub const SO_DONTTRUNC: c_int = 0x2000;
5118 pub const SO_WANTMORE: c_int = 0x4000;
5119 pub const SO_WANTOOBFLAG: c_int = 0x8000;
5120 }
5121 pub mod sysconf {
5122 use types::os::arch::c95::c_int;
5123
5124 pub const _SC_ARG_MAX : c_int = 1;
5125 pub const _SC_CHILD_MAX : c_int = 2;
5126 pub const _SC_CLK_TCK : c_int = 3;
5127 pub const _SC_NGROUPS_MAX : c_int = 4;
5128 pub const _SC_OPEN_MAX : c_int = 5;
5129 pub const _SC_JOB_CONTROL : c_int = 6;
5130 pub const _SC_SAVED_IDS : c_int = 7;
5131 pub const _SC_VERSION : c_int = 8;
5132 pub const _SC_BC_BASE_MAX : c_int = 9;
5133 pub const _SC_BC_DIM_MAX : c_int = 10;
5134 pub const _SC_BC_SCALE_MAX : c_int = 11;
5135 pub const _SC_BC_STRING_MAX : c_int = 12;
5136 pub const _SC_COLL_WEIGHTS_MAX : c_int = 13;
5137 pub const _SC_EXPR_NEST_MAX : c_int = 14;
5138 pub const _SC_LINE_MAX : c_int = 15;
5139 pub const _SC_RE_DUP_MAX : c_int = 16;
5140 pub const _SC_2_VERSION : c_int = 17;
5141 pub const _SC_2_C_BIND : c_int = 18;
5142 pub const _SC_2_C_DEV : c_int = 19;
5143 pub const _SC_2_CHAR_TERM : c_int = 20;
5144 pub const _SC_2_FORT_DEV : c_int = 21;
5145 pub const _SC_2_FORT_RUN : c_int = 22;
5146 pub const _SC_2_LOCALEDEF : c_int = 23;
5147 pub const _SC_2_SW_DEV : c_int = 24;
5148 pub const _SC_2_UPE : c_int = 25;
5149 pub const _SC_STREAM_MAX : c_int = 26;
5150 pub const _SC_TZNAME_MAX : c_int = 27;
5151 pub const _SC_ASYNCHRONOUS_IO : c_int = 28;
5152 pub const _SC_PAGESIZE : c_int = 29;
5153 pub const _SC_MEMLOCK : c_int = 30;
5154 pub const _SC_MEMLOCK_RANGE : c_int = 31;
5155 pub const _SC_MEMORY_PROTECTION : c_int = 32;
5156 pub const _SC_MESSAGE_PASSING : c_int = 33;
5157 pub const _SC_PRIORITIZED_IO : c_int = 34;
5158 pub const _SC_PRIORITY_SCHEDULING : c_int = 35;
5159 pub const _SC_REALTIME_SIGNALS : c_int = 36;
5160 pub const _SC_SEMAPHORES : c_int = 37;
5161 pub const _SC_FSYNC : c_int = 38;
5162 pub const _SC_SHARED_MEMORY_OBJECTS : c_int = 39;
5163 pub const _SC_SYNCHRONIZED_IO : c_int = 40;
5164 pub const _SC_TIMERS : c_int = 41;
5165 pub const _SC_AIO_LISTIO_MAX : c_int = 42;
5166 pub const _SC_AIO_MAX : c_int = 43;
5167 pub const _SC_AIO_PRIO_DELTA_MAX : c_int = 44;
5168 pub const _SC_DELAYTIMER_MAX : c_int = 45;
5169 pub const _SC_MQ_OPEN_MAX : c_int = 46;
5170 pub const _SC_MAPPED_FILES : c_int = 47;
5171 pub const _SC_RTSIG_MAX : c_int = 48;
5172 pub const _SC_SEM_NSEMS_MAX : c_int = 49;
5173 pub const _SC_SEM_VALUE_MAX : c_int = 50;
5174 pub const _SC_SIGQUEUE_MAX : c_int = 51;
5175 pub const _SC_TIMER_MAX : c_int = 52;
5176 pub const _SC_NPROCESSORS_CONF : c_int = 57;
5177 pub const _SC_NPROCESSORS_ONLN : c_int = 58;
5178 pub const _SC_2_PBS : c_int = 59;
5179 pub const _SC_2_PBS_ACCOUNTING : c_int = 60;
5180 pub const _SC_2_PBS_CHECKPOINT : c_int = 61;
5181 pub const _SC_2_PBS_LOCATE : c_int = 62;
5182 pub const _SC_2_PBS_MESSAGE : c_int = 63;
5183 pub const _SC_2_PBS_TRACK : c_int = 64;
5184 pub const _SC_ADVISORY_INFO : c_int = 65;
5185 pub const _SC_BARRIERS : c_int = 66;
5186 pub const _SC_CLOCK_SELECTION : c_int = 67;
5187 pub const _SC_CPUTIME : c_int = 68;
5188 pub const _SC_FILE_LOCKING : c_int = 69;
5189 pub const _SC_HOST_NAME_MAX : c_int = 72;
5190 pub const _SC_MONOTONIC_CLOCK : c_int = 74;
5191 pub const _SC_READER_WRITER_LOCKS : c_int = 76;
5192 pub const _SC_REGEXP : c_int = 77;
5193 pub const _SC_SHELL : c_int = 78;
5194 pub const _SC_SPAWN : c_int = 79;
5195 pub const _SC_SPIN_LOCKS : c_int = 80;
5196 pub const _SC_SPORADIC_SERVER : c_int = 81;
5197 pub const _SC_THREAD_CPUTIME : c_int = 84;
5198 pub const _SC_THREAD_SPORADIC_SERVER : c_int = 92;
5199 pub const _SC_TIMEOUTS : c_int = 95;
5200 pub const _SC_TRACE : c_int = 97;
5201 pub const _SC_TRACE_EVENT_FILTER : c_int = 98;
5202 pub const _SC_TRACE_INHERIT : c_int = 99;
5203 pub const _SC_TRACE_LOG : c_int = 100;
5204 pub const _SC_TYPED_MEMORY_OBJECTS : c_int = 102;
5205 pub const _SC_V6_ILP32_OFF32 : c_int = 103;
5206 pub const _SC_V6_ILP32_OFFBIG : c_int = 104;
5207 pub const _SC_V6_LP64_OFF64 : c_int = 105;
5208 pub const _SC_V6_LPBIG_OFFBIG : c_int = 106;
5209 pub const _SC_IPV6 : c_int = 118;
5210 pub const _SC_RAW_SOCKETS : c_int = 119;
5211 pub const _SC_SYMLOOP_MAX : c_int = 120;
5212 pub const _SC_PAGE_SIZE : c_int = _SC_PAGESIZE;
5213 pub const _SC_XOPEN_STREAMS : c_int = 114;
5214 pub const _SC_XBS5_ILP32_OFF32 : c_int = 122;
5215 pub const _SC_XBS5_ILP32_OFFBIG : c_int = 123;
5216 pub const _SC_XBS5_LP64_OFF64 : c_int = 124;
5217 pub const _SC_XBS5_LPBIG_OFFBIG : c_int = 125;
5218 pub const _SC_SS_REPL_MAX : c_int = 126;
5219 pub const _SC_TRACE_EVENT_NAME_MAX : c_int = 127;
5220 pub const _SC_TRACE_NAME_MAX : c_int = 128;
5221 pub const _SC_TRACE_SYS_MAX : c_int = 129;
5222 pub const _SC_TRACE_USER_EVENT_MAX : c_int = 130;
5223 pub const _SC_PASS_MAX : c_int = 131;
5224 }
5225 }
5226 }
5227
5228
5229 pub mod funcs {
5230 // Thankfully most of c95 is universally available and does not vary by OS
5231 // or anything. The same is not true of POSIX.
5232
5233 pub mod c95 {
5234 pub mod ctype {
5235 use types::os::arch::c95::{c_char, c_int};
5236
5237 extern {
5238 pub fn isalnum(c: c_int) -> c_int;
5239 pub fn isalpha(c: c_int) -> c_int;
5240 pub fn iscntrl(c: c_int) -> c_int;
5241 pub fn isdigit(c: c_int) -> c_int;
5242 pub fn isgraph(c: c_int) -> c_int;
5243 pub fn islower(c: c_int) -> c_int;
5244 pub fn isprint(c: c_int) -> c_int;
5245 pub fn ispunct(c: c_int) -> c_int;
5246 pub fn isspace(c: c_int) -> c_int;
5247 pub fn isupper(c: c_int) -> c_int;
5248 pub fn isxdigit(c: c_int) -> c_int;
5249 pub fn tolower(c: c_char) -> c_char;
5250 pub fn toupper(c: c_char) -> c_char;
5251 }
5252 }
5253
5254 pub mod stdio {
5255 use types::common::c95::{FILE, c_void, fpos_t};
5256 use types::os::arch::c95::{c_char, c_int, c_long, size_t};
5257
5258 extern {
5259 pub fn fopen(filename: *const c_char,
5260 mode: *const c_char) -> *mut FILE;
5261 pub fn freopen(filename: *const c_char, mode: *const c_char,
5262 file: *mut FILE)
5263 -> *mut FILE;
5264 pub fn fflush(file: *mut FILE) -> c_int;
5265 pub fn fclose(file: *mut FILE) -> c_int;
5266 pub fn remove(filename: *const c_char) -> c_int;
5267 pub fn rename(oldname: *const c_char,
5268 newname: *const c_char) -> c_int;
5269 pub fn tmpfile() -> *mut FILE;
5270 pub fn setvbuf(stream: *mut FILE,
5271 buffer: *mut c_char,
5272 mode: c_int,
5273 size: size_t)
5274 -> c_int;
5275 pub fn setbuf(stream: *mut FILE, buf: *mut c_char);
5276 // Omitted: printf and scanf variants.
5277 pub fn fgetc(stream: *mut FILE) -> c_int;
5278 pub fn fgets(buf: *mut c_char, n: c_int, stream: *mut FILE)
5279 -> *mut c_char;
5280 pub fn fputc(c: c_int, stream: *mut FILE) -> c_int;
5281 pub fn fputs(s: *const c_char, stream: *mut FILE)-> c_int;
5282 // Omitted: getc, getchar (might be macros).
5283
5284 // Omitted: gets, so ridiculously unsafe that it should not
5285 // survive.
5286
5287 // Omitted: putc, putchar (might be macros).
5288 pub fn puts(s: *const c_char) -> c_int;
5289 pub fn ungetc(c: c_int, stream: *mut FILE) -> c_int;
5290 pub fn fread(ptr: *mut c_void,
5291 size: size_t,
5292 nobj: size_t,
5293 stream: *mut FILE)
5294 -> size_t;
5295 pub fn fwrite(ptr: *const c_void,
5296 size: size_t,
5297 nobj: size_t,
5298 stream: *mut FILE)
5299 -> size_t;
5300 pub fn fseek(stream: *mut FILE, offset: c_long, whence: c_int)
5301 -> c_int;
5302 pub fn ftell(stream: *mut FILE) -> c_long;
5303 pub fn rewind(stream: *mut FILE);
5304 pub fn fgetpos(stream: *mut FILE, ptr: *mut fpos_t) -> c_int;
5305 pub fn fsetpos(stream: *mut FILE, ptr: *mut fpos_t) -> c_int;
5306 pub fn feof(stream: *mut FILE) -> c_int;
5307 pub fn ferror(stream: *mut FILE) -> c_int;
5308 pub fn perror(s: *const c_char);
5309 }
5310 }
5311
5312 pub mod stdlib {
5313 use types::common::c95::c_void;
5314 use types::os::arch::c95::{c_char, c_double, c_int};
5315 use types::os::arch::c95::{c_long, c_uint, c_ulong};
5316 use types::os::arch::c95::{size_t};
5317
5318 extern {
5319 pub fn abs(i: c_int) -> c_int;
5320 pub fn labs(i: c_long) -> c_long;
5321 // Omitted: div, ldiv (return pub type incomplete).
5322 pub fn atof(s: *const c_char) -> c_double;
5323 pub fn atoi(s: *const c_char) -> c_int;
5324 pub fn strtod(s: *const c_char,
5325 endp: *mut *mut c_char) -> c_double;
5326 pub fn strtol(s: *const c_char,
5327 endp: *mut *mut c_char, base: c_int) -> c_long;
5328 pub fn strtoul(s: *const c_char, endp: *mut *mut c_char,
5329 base: c_int) -> c_ulong;
5330 pub fn calloc(nobj: size_t, size: size_t) -> *mut c_void;
5331 pub fn malloc(size: size_t) -> *mut c_void;
5332 pub fn realloc(p: *mut c_void, size: size_t) -> *mut c_void;
5333 pub fn free(p: *mut c_void);
5334
5335 /// Exits the running program in a possibly dangerous manner.
5336 ///
5337 /// # Unsafety
5338 ///
5339 /// While this forces your program to exit, it does so in a way that has
5340 /// consequences. This will skip all unwinding code, which means that anything
5341 /// relying on unwinding for cleanup (such as flushing and closing a buffer to a
5342 /// file) may act in an unexpected way.
5343 ///
5344 /// # Examples
5345 ///
5346 /// ```no_run,ignore
5347 /// extern crate libc;
5348 ///
5349 /// fn main() {
5350 /// unsafe {
5351 /// libc::exit(1);
5352 /// }
5353 /// }
5354 /// ```
5355 pub fn exit(status: c_int) -> !;
5356 pub fn _exit(status: c_int) -> !;
5357 pub fn atexit(cb: extern fn()) -> c_int;
5358 pub fn system(s: *const c_char) -> c_int;
5359 pub fn getenv(s: *const c_char) -> *mut c_char;
5360 // Omitted: bsearch, qsort
5361 pub fn rand() -> c_int;
5362 pub fn srand(seed: c_uint);
5363 }
5364 }
5365
5366 pub mod string {
5367 use types::common::c95::c_void;
5368 use types::os::arch::c95::{c_char, c_int, size_t};
5369 use types::os::arch::c95::{wchar_t};
5370
5371 extern {
5372 pub fn strcpy(dst: *mut c_char,
5373 src: *const c_char) -> *mut c_char;
5374 pub fn strncpy(dst: *mut c_char, src: *const c_char, n: size_t)
5375 -> *mut c_char;
5376 pub fn strcat(s: *mut c_char, ct: *const c_char) -> *mut c_char;
5377 pub fn strncat(s: *mut c_char, ct: *const c_char,
5378 n: size_t) -> *mut c_char;
5379 pub fn strcmp(cs: *const c_char, ct: *const c_char) -> c_int;
5380 pub fn strncmp(cs: *const c_char, ct: *const c_char,
5381 n: size_t) -> c_int;
5382 pub fn strcoll(cs: *const c_char, ct: *const c_char) -> c_int;
5383 pub fn strchr(cs: *const c_char, c: c_int) -> *mut c_char;
5384 pub fn strrchr(cs: *const c_char, c: c_int) -> *mut c_char;
5385 pub fn strspn(cs: *const c_char, ct: *const c_char) -> size_t;
5386 pub fn strcspn(cs: *const c_char, ct: *const c_char) -> size_t;
5387 pub fn strpbrk(cs: *const c_char,
5388 ct: *const c_char) -> *mut c_char;
5389 pub fn strstr(cs: *const c_char,
5390 ct: *const c_char) -> *mut c_char;
5391 pub fn strlen(cs: *const c_char) -> size_t;
5392 pub fn strerror(n: c_int) -> *mut c_char;
5393 pub fn strtok(s: *mut c_char, t: *const c_char) -> *mut c_char;
5394 pub fn strxfrm(s: *mut c_char, ct: *const c_char,
5395 n: size_t) -> size_t;
5396 pub fn wcslen(buf: *const wchar_t) -> size_t;
5397
5398 // Omitted: memcpy, memmove, memset (provided by LLVM)
5399
5400 // These are fine to execute on the Rust stack. They must be,
5401 // in fact, because LLVM generates calls to them!
5402 pub fn memcmp(cx: *const c_void, ct: *const c_void,
5403 n: size_t) -> c_int;
5404 pub fn memchr(cx: *const c_void, c: c_int,
5405 n: size_t) -> *mut c_void;
5406 }
5407 }
5408 }
5409
5410 // Microsoft helpfully underscore-qualifies all of its POSIX-like symbols
5411 // to make sure you don't use them accidentally. It also randomly deviates
5412 // from the exact signatures you might otherwise expect, and omits much,
5413 // so be careful when trying to write portable code; it won't always work
5414 // with the same POSIX functions and types as other platforms.
5415
5416 #[cfg(target_os = "windows")]
5417 pub mod posix88 {
5418 pub mod stat_ {
5419 use types::os::common::posix01::{stat, utimbuf};
5420 use types::os::arch::c95::{c_int, c_char, wchar_t};
5421
5422 extern {
5423 #[link_name = "_chmod"]
5424 pub fn chmod(path: *const c_char, mode: c_int) -> c_int;
5425 #[link_name = "_wchmod"]
5426 pub fn wchmod(path: *const wchar_t, mode: c_int) -> c_int;
5427 #[link_name = "_mkdir"]
5428 pub fn mkdir(path: *const c_char) -> c_int;
5429 #[link_name = "_wrmdir"]
5430 pub fn wrmdir(path: *const wchar_t) -> c_int;
5431 #[link_name = "_fstat64"]
5432 pub fn fstat(fildes: c_int, buf: *mut stat) -> c_int;
5433 #[link_name = "_stat64"]
5434 pub fn stat(path: *const c_char, buf: *mut stat) -> c_int;
5435 #[link_name = "_wstat64"]
5436 pub fn wstat(path: *const wchar_t, buf: *mut stat) -> c_int;
5437 #[link_name = "_wutime64"]
5438 pub fn wutime(file: *const wchar_t, buf: *mut utimbuf) -> c_int;
5439 }
5440 }
5441
5442 pub mod stdio {
5443 use types::common::c95::FILE;
5444 use types::os::arch::c95::{c_int, c_char};
5445
5446 extern {
5447 #[link_name = "_popen"]
5448 pub fn popen(command: *const c_char,
5449 mode: *const c_char) -> *mut FILE;
5450 #[link_name = "_pclose"]
5451 pub fn pclose(stream: *mut FILE) -> c_int;
5452 #[link_name = "_fdopen"]
5453 pub fn fdopen(fd: c_int, mode: *const c_char) -> *mut FILE;
5454 #[link_name = "_fileno"]
5455 pub fn fileno(stream: *mut FILE) -> c_int;
5456 }
5457 }
5458
5459 pub mod fcntl {
5460 use types::os::arch::c95::{c_int, c_char, wchar_t};
5461 extern {
5462 #[link_name = "_open"]
5463 pub fn open(path: *const c_char, oflag: c_int, mode: c_int)
5464 -> c_int;
5465 #[link_name = "_wopen"]
5466 pub fn wopen(path: *const wchar_t, oflag: c_int, mode: c_int)
5467 -> c_int;
5468 #[link_name = "_creat"]
5469 pub fn creat(path: *const c_char, mode: c_int) -> c_int;
5470 }
5471 }
5472
5473 pub mod dirent {
5474 // Not supplied at all.
5475 }
5476
5477 pub mod unistd {
5478 use types::common::c95::c_void;
5479 use types::os::arch::c95::{c_int, c_uint, c_char,
5480 c_long, size_t};
5481 use types::os::arch::c99::intptr_t;
5482
5483 extern {
5484 #[link_name = "_access"]
5485 pub fn access(path: *const c_char, amode: c_int) -> c_int;
5486 #[link_name = "_chdir"]
5487 pub fn chdir(dir: *const c_char) -> c_int;
5488 #[link_name = "_close"]
5489 pub fn close(fd: c_int) -> c_int;
5490 #[link_name = "_dup"]
5491 pub fn dup(fd: c_int) -> c_int;
5492 #[link_name = "_dup2"]
5493 pub fn dup2(src: c_int, dst: c_int) -> c_int;
5494 #[link_name = "_execv"]
5495 pub fn execv(prog: *const c_char,
5496 argv: *const *const c_char) -> intptr_t;
5497 #[link_name = "_execve"]
5498 pub fn execve(prog: *const c_char, argv: *const *const c_char,
5499 envp: *const *const c_char)
5500 -> c_int;
5501 #[link_name = "_execvp"]
5502 pub fn execvp(c: *const c_char,
5503 argv: *const *const c_char) -> c_int;
5504 #[link_name = "_execvpe"]
5505 pub fn execvpe(c: *const c_char, argv: *const *const c_char,
5506 envp: *const *const c_char) -> c_int;
5507 #[link_name = "_getcwd"]
5508 pub fn getcwd(buf: *mut c_char, size: size_t) -> *mut c_char;
5509 #[link_name = "_getpid"]
5510 pub fn getpid() -> c_int;
5511 #[link_name = "_isatty"]
5512 pub fn isatty(fd: c_int) -> c_int;
5513 #[link_name = "_lseek"]
5514 pub fn lseek(fd: c_int, offset: c_long, origin: c_int)
5515 -> c_long;
5516 #[link_name = "_pipe"]
5517 pub fn pipe(fds: *mut c_int, psize: c_uint, textmode: c_int)
5518 -> c_int;
5519 #[link_name = "_read"]
5520 pub fn read(fd: c_int, buf: *mut c_void, count: c_uint)
5521 -> c_int;
5522 #[link_name = "_rmdir"]
5523 pub fn rmdir(path: *const c_char) -> c_int;
5524 #[link_name = "_unlink"]
5525 pub fn unlink(c: *const c_char) -> c_int;
5526 #[link_name = "_write"]
5527 pub fn write(fd: c_int, buf: *const c_void,
5528 count: c_uint) -> c_int;
5529 }
5530 }
5531
5532 pub mod mman {
5533 }
5534 }
5535
5536 #[cfg(any(target_os = "linux",
5537 target_os = "android",
5538 target_os = "macos",
5539 target_os = "ios",
5540 target_os = "freebsd",
5541 target_os = "dragonfly",
5542 target_os = "bitrig",
5543 target_os = "openbsd",
5544 target_os = "nacl"))]
5545 pub mod posix88 {
5546 pub mod stat_ {
5547 use types::os::arch::c95::{c_char, c_int};
5548 use types::os::arch::posix01::stat;
5549 use types::os::arch::posix88::mode_t;
5550
5551 extern {
5552 pub fn chmod(path: *const c_char, mode: mode_t) -> c_int;
5553 pub fn fchmod(fd: c_int, mode: mode_t) -> c_int;
5554
5555 #[cfg(any(target_os = "linux",
5556 target_os = "freebsd",
5557 target_os = "dragonfly",
5558 target_os = "bitrig",
5559 target_os = "openbsd",
5560 target_os = "android",
5561 target_os = "ios",
5562 target_os = "nacl"))]
5563 pub fn fstat(fildes: c_int, buf: *mut stat) -> c_int;
5564
5565 #[cfg(target_os = "macos")]
5566 #[link_name = "fstat64"]
5567 pub fn fstat(fildes: c_int, buf: *mut stat) -> c_int;
5568
5569 pub fn mkdir(path: *const c_char, mode: mode_t) -> c_int;
5570 #[cfg(not(target_os = "nacl"))]
5571 pub fn mkfifo(path: *const c_char, mode: mode_t) -> c_int;
5572
5573 #[cfg(any(target_os = "linux",
5574 target_os = "freebsd",
5575 target_os = "dragonfly",
5576 target_os = "bitrig",
5577 target_os = "openbsd",
5578 target_os = "android",
5579 target_os = "ios",
5580 target_os = "nacl"))]
5581 pub fn stat(path: *const c_char, buf: *mut stat) -> c_int;
5582
5583 #[cfg(target_os = "macos")]
5584 #[link_name = "stat64"]
5585 pub fn stat(path: *const c_char, buf: *mut stat) -> c_int;
5586 }
5587 }
5588
5589 pub mod stdio {
5590 use types::common::c95::FILE;
5591 use types::os::arch::c95::{c_char, c_int};
5592
5593 extern {
5594 pub fn popen(command: *const c_char,
5595 mode: *const c_char) -> *mut FILE;
5596 pub fn pclose(stream: *mut FILE) -> c_int;
5597 pub fn fdopen(fd: c_int, mode: *const c_char) -> *mut FILE;
5598 pub fn fileno(stream: *mut FILE) -> c_int;
5599 }
5600 }
5601
5602 pub mod fcntl {
5603 use types::os::arch::c95::{c_char, c_int};
5604 use types::os::arch::posix88::mode_t;
5605
5606 mod open_shim {
5607 extern {
5608 #[cfg(any(target_os = "macos",
5609 target_os = "ios"))]
5610 pub fn open(path: *const ::c_char, oflag: ::c_int, ...)
5611 -> ::c_int;
5612
5613 #[cfg(not(any(target_os = "macos",
5614 target_os = "ios")))]
5615 pub fn open(path: *const ::c_char, oflag: ::c_int, mode: ::mode_t)
5616 -> ::c_int;
5617 }
5618 }
5619
5620 #[cfg(any(target_os = "macos",
5621 target_os = "ios"))]
5622 #[inline]
5623 pub unsafe extern fn open(path: *const c_char, oflag: c_int, mode: mode_t) -> c_int {
5624 use types::os::arch::c95::c_uint;
5625 open_shim::open(path, oflag, mode as c_uint)
5626 }
5627
5628 #[cfg(not(any(target_os = "macos",
5629 target_os = "ios")))]
5630 #[inline]
5631 pub unsafe extern fn open(path: *const c_char, oflag: c_int, mode: mode_t) -> c_int {
5632 open_shim::open(path, oflag, mode)
5633 }
5634
5635 extern {
5636 pub fn creat(path: *const c_char, mode: mode_t) -> c_int;
5637 pub fn fcntl(fd: c_int, cmd: c_int, ...) -> c_int;
5638 }
5639 }
5640
5641 pub mod dirent {
5642 use types::common::posix88::{DIR, dirent_t};
5643 use types::os::arch::c95::{c_char, c_int, c_long};
5644
5645 // NB: On OS X opendir and readdir have two versions,
5646 // one for 32-bit kernelspace and one for 64.
5647 // We should be linking to the 64-bit ones, called
5648 // opendir$INODE64, etc. but for some reason rustc
5649 // doesn't link it correctly on i686, so we're going
5650 // through a C function that mysteriously does work.
5651
5652 extern {
5653 #[link_name="rust_opendir"]
5654 pub fn opendir(dirname: *const c_char) -> *mut DIR;
5655 #[link_name="rust_readdir_r"]
5656 pub fn readdir_r(dirp: *mut DIR, entry: *mut dirent_t,
5657 result: *mut *mut dirent_t) -> c_int;
5658 }
5659
5660 extern {
5661 pub fn closedir(dirp: *mut DIR) -> c_int;
5662 pub fn rewinddir(dirp: *mut DIR);
5663 pub fn seekdir(dirp: *mut DIR, loc: c_long);
5664 pub fn telldir(dirp: *mut DIR) -> c_long;
5665 }
5666 }
5667
5668 pub mod unistd {
5669 use types::common::c95::c_void;
5670 use types::os::arch::c95::{c_char, c_int, c_long, c_uint};
5671 use types::os::arch::c95::{size_t};
5672 use types::os::common::posix01::timespec;
5673 use types::os::arch::posix01::utimbuf;
5674 use types::os::arch::posix88::{gid_t, off_t, pid_t};
5675 use types::os::arch::posix88::{ssize_t, uid_t};
5676
5677 pub const _PC_NAME_MAX: c_int = 4;
5678
5679 #[cfg(not(target_os = "nacl"))]
5680 extern {
5681 pub fn access(path: *const c_char, amode: c_int) -> c_int;
5682 pub fn alarm(seconds: c_uint) -> c_uint;
5683 pub fn chdir(dir: *const c_char) -> c_int;
5684 pub fn chown(path: *const c_char, uid: uid_t,
5685 gid: gid_t) -> c_int;
5686 pub fn close(fd: c_int) -> c_int;
5687 pub fn dup(fd: c_int) -> c_int;
5688 pub fn dup2(src: c_int, dst: c_int) -> c_int;
5689 pub fn execv(prog: *const c_char,
5690 argv: *const *const c_char) -> c_int;
5691 pub fn execve(prog: *const c_char, argv: *const *const c_char,
5692 envp: *const *const c_char)
5693 -> c_int;
5694 pub fn execvp(c: *const c_char,
5695 argv: *const *const c_char) -> c_int;
5696 pub fn fork() -> pid_t;
5697 pub fn fpathconf(filedes: c_int, name: c_int) -> c_long;
5698 pub fn getcwd(buf: *mut c_char, size: size_t) -> *mut c_char;
5699 pub fn getegid() -> gid_t;
5700 pub fn geteuid() -> uid_t;
5701 pub fn getgid() -> gid_t;
5702 pub fn getgroups(ngroups_max: c_int, groups: *mut gid_t)
5703 -> c_int;
5704 pub fn getlogin() -> *mut c_char;
5705 // GNU getopt(3) modifies its arguments despite the
5706 // char * const [] prototype; see the manpage.
5707 pub fn getopt(argc: c_int, argv: *mut *mut c_char,
5708 optstr: *const c_char) -> c_int;
5709 pub fn getpgrp() -> pid_t;
5710 pub fn getpid() -> pid_t;
5711 pub fn getppid() -> pid_t;
5712 pub fn getuid() -> uid_t;
5713 pub fn getsid(pid: pid_t) -> pid_t;
5714 pub fn isatty(fd: c_int) -> c_int;
5715 pub fn link(src: *const c_char, dst: *const c_char) -> c_int;
5716 pub fn lseek(fd: c_int, offset: off_t, whence: c_int)
5717 -> off_t;
5718 pub fn pathconf(path: *mut c_char, name: c_int) -> c_long;
5719 pub fn pause() -> c_int;
5720 pub fn pipe(fds: *mut c_int) -> c_int;
5721 pub fn read(fd: c_int, buf: *mut c_void, count: size_t)
5722 -> ssize_t;
5723 pub fn rmdir(path: *const c_char) -> c_int;
5724 pub fn setgid(gid: gid_t) -> c_int;
5725 pub fn setpgid(pid: pid_t, pgid: pid_t) -> c_int;
5726 pub fn setsid() -> pid_t;
5727 pub fn setuid(uid: uid_t) -> c_int;
5728 pub fn sleep(secs: c_uint) -> c_uint;
5729 pub fn usleep(secs: c_uint) -> c_int;
5730 pub fn nanosleep(rqtp: *const timespec,
5731 rmtp: *mut timespec) -> c_int;
5732 pub fn sysconf(name: c_int) -> c_long;
5733 pub fn tcgetpgrp(fd: c_int) -> pid_t;
5734 pub fn ttyname(fd: c_int) -> *mut c_char;
5735 pub fn unlink(c: *const c_char) -> c_int;
5736 pub fn wait(status: *const c_int) -> pid_t;
5737 pub fn waitpid(pid: pid_t, status: *const c_int, options: c_int)
5738 -> pid_t;
5739 pub fn write(fd: c_int, buf: *const c_void, count: size_t)
5740 -> ssize_t;
5741 pub fn pread(fd: c_int, buf: *mut c_void, count: size_t,
5742 offset: off_t) -> ssize_t;
5743 pub fn pwrite(fd: c_int, buf: *const c_void, count: size_t,
5744 offset: off_t) -> ssize_t;
5745 pub fn utime(file: *const c_char, buf: *const utimbuf) -> c_int;
5746 }
5747 #[cfg(target_os = "nacl")]
5748 extern {
5749 pub fn access(path: *const c_char, amode: c_int) -> c_int;
5750 pub fn chdir(dir: *const c_char) -> c_int;
5751 pub fn chown(path: *const c_char, uid: uid_t,
5752 gid: gid_t) -> c_int;
5753 pub fn close(fd: c_int) -> c_int;
5754 pub fn dup(fd: c_int) -> c_int;
5755 pub fn dup2(src: c_int, dst: c_int) -> c_int;
5756 pub fn execv(prog: *const c_char,
5757 argv: *const *const c_char) -> c_int;
5758 pub fn execve(prog: *const c_char, argv: *const *const c_char,
5759 envp: *const *const c_char)
5760 -> c_int;
5761 pub fn execvp(c: *const c_char,
5762 argv: *const *const c_char) -> c_int;
5763 pub fn fork() -> pid_t;
5764 pub fn getcwd(buf: *mut c_char, size: size_t) -> *mut c_char;
5765 pub fn getegid() -> gid_t;
5766 pub fn geteuid() -> uid_t;
5767 pub fn getgid() -> gid_t;
5768 pub fn getlogin() -> *mut c_char;
5769 pub fn getopt(argc: c_int, argv: *const *const c_char,
5770 optstr: *const c_char) -> c_int;
5771 pub fn getuid() -> uid_t;
5772 pub fn getsid(pid: pid_t) -> pid_t;
5773 pub fn isatty(fd: c_int) -> c_int;
5774 pub fn link(src: *const c_char, dst: *const c_char) -> c_int;
5775 pub fn lseek(fd: c_int, offset: off_t, whence: c_int)
5776 -> off_t;
5777 pub fn pipe(fds: *mut c_int) -> c_int;
5778 pub fn read(fd: c_int, buf: *mut c_void, count: size_t)
5779 -> ssize_t;
5780 pub fn rmdir(path: *const c_char) -> c_int;
5781 pub fn setgid(gid: gid_t) -> c_int;
5782 pub fn setuid(uid: uid_t) -> c_int;
5783 pub fn sleep(secs: c_uint) -> c_uint;
5784 pub fn usleep(secs: c_uint) -> c_int;
5785 pub fn nanosleep(rqtp: *const timespec,
5786 rmtp: *mut timespec) -> c_int;
5787 pub fn sysconf(name: c_int) -> c_long;
5788 pub fn ttyname(fd: c_int) -> *mut c_char;
5789 pub fn unlink(c: *const c_char) -> c_int;
5790 pub fn wait(status: *const c_int) -> pid_t;
5791 pub fn waitpid(pid: pid_t, status: *const c_int, options: c_int)
5792 -> pid_t;
5793 pub fn write(fd: c_int, buf: *const c_void, count: size_t)
5794 -> ssize_t;
5795 pub fn pread(fd: c_int, buf: *mut c_void, count: size_t,
5796 offset: off_t) -> ssize_t;
5797 pub fn pwrite(fd: c_int, buf: *const c_void, count: size_t,
5798 offset: off_t) -> ssize_t;
5799 pub fn utime(file: *const c_char, buf: *const utimbuf) -> c_int;
5800 }
5801 }
5802
5803 pub mod signal {
5804 use types::os::arch::c95::{c_int};
5805 use types::os::arch::posix88::{pid_t};
5806
5807 extern {
5808 pub fn kill(pid: pid_t, sig: c_int) -> c_int;
5809 }
5810 }
5811
5812 pub mod mman {
5813 use types::common::c95::{c_void};
5814 use types::os::arch::c95::{size_t, c_int, c_char};
5815 use types::os::arch::posix88::{mode_t, off_t};
5816
5817 #[cfg(not(target_os = "nacl"))]
5818 extern {
5819 pub fn mlock(addr: *const c_void, len: size_t) -> c_int;
5820 pub fn munlock(addr: *const c_void, len: size_t) -> c_int;
5821 pub fn mlockall(flags: c_int) -> c_int;
5822 pub fn munlockall() -> c_int;
5823
5824 pub fn mprotect(addr: *mut c_void, len: size_t, prot: c_int)
5825 -> c_int;
5826
5827 pub fn msync(addr: *mut c_void, len: size_t, flags: c_int)
5828 -> c_int;
5829 pub fn shm_open(name: *const c_char, oflag: c_int, mode: mode_t)
5830 -> c_int;
5831 pub fn shm_unlink(name: *const c_char) -> c_int;
5832 }
5833
5834 extern {
5835 pub fn mmap(addr: *mut c_void,
5836 len: size_t,
5837 prot: c_int,
5838 flags: c_int,
5839 fd: c_int,
5840 offset: off_t)
5841 -> *mut c_void;
5842 pub fn munmap(addr: *mut c_void, len: size_t) -> c_int;
5843
5844 }
5845 }
5846
5847 pub mod net {
5848 use types::os::arch::c95::{c_char, c_uint};
5849
5850 extern {
5851 pub fn if_nametoindex(ifname: *const c_char) -> c_uint;
5852 }
5853 }
5854
5855 }
5856
5857 #[cfg(any(target_os = "linux",
5858 target_os = "android",
5859 target_os = "macos",
5860 target_os = "ios",
5861 target_os = "freebsd",
5862 target_os = "dragonfly",
5863 target_os = "bitrig",
5864 target_os = "openbsd",
5865 target_os = "nacl"))]
5866 pub mod posix01 {
5867 pub mod stat_ {
5868 use types::os::arch::c95::{c_char, c_int};
5869 use types::os::arch::posix01::stat;
5870
5871 extern {
5872 #[cfg(any(target_os = "linux",
5873 target_os = "freebsd",
5874 target_os = "dragonfly",
5875 target_os = "bitrig",
5876 target_os = "openbsd",
5877 target_os = "android",
5878 target_os = "ios",
5879 target_os = "nacl"))]
5880 pub fn lstat(path: *const c_char, buf: *mut stat) -> c_int;
5881
5882 #[cfg(target_os = "macos")]
5883 #[link_name = "lstat64"]
5884 pub fn lstat(path: *const c_char, buf: *mut stat) -> c_int;
5885 }
5886 }
5887
5888 pub mod unistd {
5889 use types::os::arch::c95::{c_char, c_int, size_t};
5890 use types::os::arch::posix88::{ssize_t, off_t};
5891
5892 extern {
5893 pub fn readlink(path: *const c_char,
5894 buf: *mut c_char,
5895 bufsz: size_t)
5896 -> ssize_t;
5897
5898 pub fn fsync(fd: c_int) -> c_int;
5899
5900 #[cfg(any(target_os = "linux", target_os = "android"))]
5901 pub fn fdatasync(fd: c_int) -> c_int;
5902
5903 pub fn setenv(name: *const c_char, val: *const c_char,
5904 overwrite: c_int) -> c_int;
5905 pub fn unsetenv(name: *const c_char) -> c_int;
5906 pub fn putenv(string: *mut c_char) -> c_int;
5907
5908 pub fn symlink(path1: *const c_char,
5909 path2: *const c_char) -> c_int;
5910
5911 pub fn ftruncate(fd: c_int, length: off_t) -> c_int;
5912 }
5913 }
5914
5915 pub mod signal {
5916 use types::os::arch::c95::c_int;
5917 use types::os::common::posix01::sighandler_t;
5918
5919 #[cfg(not(all(target_os = "android", target_arch = "arm")))]
5920 extern {
5921 pub fn signal(signum: c_int,
5922 handler: sighandler_t) -> sighandler_t;
5923 }
5924
5925 #[cfg(all(target_os = "android", target_arch = "arm"))]
5926 extern {
5927 #[link_name = "bsd_signal"]
5928 pub fn signal(signum: c_int,
5929 handler: sighandler_t) -> sighandler_t;
5930 }
5931 }
5932
5933 pub mod glob {
5934 use types::os::arch::c95::{c_char, c_int};
5935 use types::os::common::posix01::{glob_t};
5936
5937 extern {
5938 pub fn glob(pattern: *const c_char,
5939 flags: c_int,
5940 errfunc: ::core::option::Option<extern "C" fn(epath: *const c_char,
5941 errno: c_int) -> c_int>,
5942 pglob: *mut glob_t);
5943 pub fn globfree(pglob: *mut glob_t);
5944 }
5945 }
5946
5947 pub mod mman {
5948 use types::common::c95::{c_void};
5949 use types::os::arch::c95::{c_int, size_t};
5950
5951 #[cfg(not(target_os = "nacl"))]
5952 extern {
5953 pub fn posix_madvise(addr: *mut c_void,
5954 len: size_t,
5955 advice: c_int)
5956 -> c_int;
5957 }
5958 }
5959
5960 pub mod resource {
5961 use types::os::arch::c95::c_int;
5962 use types::os::common::posix01::rlimit;
5963 use types::os::common::bsd43::rusage;
5964 extern {
5965 pub fn getrlimit(resource: c_int, rlim: *mut rlimit) -> c_int;
5966 pub fn setrlimit(resource: c_int, rlim: *const rlimit) -> c_int;
5967 pub fn getrusage(resource: c_int, usage: *mut rusage) -> c_int;
5968
5969 }
5970 }
5971 }
5972
5973 #[cfg(target_os = "windows")]
5974 pub mod posix01 {
5975 pub mod stat_ {
5976 }
5977
5978 pub mod unistd {
5979 }
5980
5981 pub mod glob {
5982 }
5983
5984 pub mod mman {
5985 }
5986
5987 pub mod net {
5988 }
5989 }
5990
5991
5992 #[cfg(any(target_os = "windows",
5993 target_os = "linux",
5994 target_os = "android",
5995 target_os = "macos",
5996 target_os = "ios",
5997 target_os = "freebsd",
5998 target_os = "dragonfly",
5999 target_os = "bitrig",
6000 target_os = "openbsd",
6001 target_os = "nacl"))]
6002 pub mod posix08 {
6003 pub mod unistd {
6004 }
6005 }
6006
6007 #[cfg(not(windows))]
6008 pub mod bsd43 {
6009 use types::common::c95::{c_void};
6010 use types::os::common::bsd44::{socklen_t, sockaddr, ifaddrs};
6011 use types::os::arch::c95::{c_int, size_t};
6012 use types::os::arch::posix88::ssize_t;
6013
6014 extern "system" {
6015 pub fn socket(domain: c_int, ty: c_int, protocol: c_int) -> c_int;
6016 pub fn connect(socket: c_int, address: *const sockaddr,
6017 len: socklen_t) -> c_int;
6018 pub fn bind(socket: c_int, address: *const sockaddr,
6019 address_len: socklen_t) -> c_int;
6020 pub fn listen(socket: c_int, backlog: c_int) -> c_int;
6021 pub fn accept(socket: c_int, address: *mut sockaddr,
6022 address_len: *mut socklen_t) -> c_int;
6023 pub fn getpeername(socket: c_int, address: *mut sockaddr,
6024 address_len: *mut socklen_t) -> c_int;
6025 pub fn getsockname(socket: c_int, address: *mut sockaddr,
6026 address_len: *mut socklen_t) -> c_int;
6027 pub fn setsockopt(socket: c_int, level: c_int, name: c_int,
6028 value: *const c_void,
6029 option_len: socklen_t) -> c_int;
6030 pub fn recv(socket: c_int, buf: *mut c_void, len: size_t,
6031 flags: c_int) -> ssize_t;
6032 pub fn send(socket: c_int, buf: *const c_void, len: size_t,
6033 flags: c_int) -> ssize_t;
6034 pub fn recvfrom(socket: c_int, buf: *mut c_void, len: size_t,
6035 flags: c_int, addr: *mut sockaddr,
6036 addrlen: *mut socklen_t) -> ssize_t;
6037 pub fn sendto(socket: c_int, buf: *const c_void, len: size_t,
6038 flags: c_int, addr: *const sockaddr,
6039 addrlen: socklen_t) -> ssize_t;
6040 pub fn getifaddrs(ifap: *mut *mut ifaddrs) -> c_int;
6041 pub fn freeifaddrs(ifa: *mut ifaddrs);
6042 pub fn shutdown(socket: c_int, how: c_int) -> c_int;
6043 }
6044 }
6045
6046 #[cfg(windows)]
6047 pub mod bsd43 {
6048 use types::common::c95::{c_void};
6049 use types::os::common::bsd44::{socklen_t, sockaddr, SOCKET};
6050 use types::os::arch::c95::c_int;
6051
6052 extern "system" {
6053 pub fn socket(domain: c_int, ty: c_int, protocol: c_int) -> SOCKET;
6054 pub fn connect(socket: SOCKET, address: *const sockaddr,
6055 len: socklen_t) -> c_int;
6056 pub fn bind(socket: SOCKET, address: *const sockaddr,
6057 address_len: socklen_t) -> c_int;
6058 pub fn listen(socket: SOCKET, backlog: c_int) -> c_int;
6059 pub fn accept(socket: SOCKET, address: *mut sockaddr,
6060 address_len: *mut socklen_t) -> SOCKET;
6061 pub fn getpeername(socket: SOCKET, address: *mut sockaddr,
6062 address_len: *mut socklen_t) -> c_int;
6063 pub fn getsockname(socket: SOCKET, address: *mut sockaddr,
6064 address_len: *mut socklen_t) -> c_int;
6065 pub fn setsockopt(socket: SOCKET, level: c_int, name: c_int,
6066 value: *const c_void,
6067 option_len: socklen_t) -> c_int;
6068 pub fn closesocket(socket: SOCKET) -> c_int;
6069 pub fn recv(socket: SOCKET, buf: *mut c_void, len: c_int,
6070 flags: c_int) -> c_int;
6071 pub fn send(socket: SOCKET, buf: *const c_void, len: c_int,
6072 flags: c_int) -> c_int;
6073 pub fn recvfrom(socket: SOCKET, buf: *mut c_void, len: c_int,
6074 flags: c_int, addr: *mut sockaddr,
6075 addrlen: *mut c_int) -> c_int;
6076 pub fn sendto(socket: SOCKET, buf: *const c_void, len: c_int,
6077 flags: c_int, addr: *const sockaddr,
6078 addrlen: c_int) -> c_int;
6079 pub fn shutdown(socket: SOCKET, how: c_int) -> c_int;
6080 }
6081 }
6082
6083 #[cfg(any(target_os = "macos",
6084 target_os = "ios",
6085 target_os = "freebsd",
6086 target_os = "dragonfly",
6087 target_os = "bitrig",
6088 target_os = "openbsd"))]
6089 pub mod bsd44 {
6090 use types::common::c95::{c_void};
6091 use types::os::arch::c95::{c_char, c_uchar, c_int, c_uint, c_ulong, size_t};
6092
6093 extern {
6094 pub fn ioctl(d: c_int, request: c_ulong, ...) -> c_int;
6095 pub fn sysctl(name: *mut c_int,
6096 namelen: c_uint,
6097 oldp: *mut c_void,
6098 oldlenp: *mut size_t,
6099 newp: *mut c_void,
6100 newlen: size_t)
6101 -> c_int;
6102 pub fn sysctlbyname(name: *const c_char,
6103 oldp: *mut c_void,
6104 oldlenp: *mut size_t,
6105 newp: *mut c_void,
6106 newlen: size_t)
6107 -> c_int;
6108 pub fn sysctlnametomib(name: *const c_char,
6109 mibp: *mut c_int,
6110 sizep: *mut size_t)
6111 -> c_int;
6112 pub fn getdtablesize() -> c_int;
6113 pub fn madvise(addr: *mut c_void, len: size_t, advice: c_int)
6114 -> c_int;
6115 pub fn mincore(addr: *mut c_void, len: size_t, vec: *mut c_uchar)
6116 -> c_int;
6117 pub fn realpath(pathname: *const c_char, resolved: *mut c_char)
6118 -> *mut c_char;
6119 }
6120 }
6121
6122 #[cfg(any(target_os = "linux", target_os = "android"))]
6123 pub mod bsd44 {
6124 use types::common::c95::{c_void};
6125 use types::os::arch::c95::{c_uchar, c_int, size_t};
6126
6127 extern {
6128 #[cfg(not(all(target_os = "android", target_arch = "aarch64")))]
6129 pub fn getdtablesize() -> c_int;
6130 pub fn ioctl(d: c_int, request: c_int, ...) -> c_int;
6131 pub fn madvise(addr: *mut c_void, len: size_t, advice: c_int)
6132 -> c_int;
6133 pub fn mincore(addr: *mut c_void, len: size_t, vec: *mut c_uchar)
6134 -> c_int;
6135 }
6136 }
6137
6138 #[cfg(target_os = "nacl")]
6139 pub mod bsd44 {
6140 use types::os::arch::c95::c_int;
6141 extern {
6142 pub fn getdtablesize() -> c_int;
6143 }
6144 }
6145
6146 #[cfg(target_os = "windows")]
6147 pub mod bsd44 {
6148 }
6149
6150 #[cfg(any(target_os = "macos", target_os = "ios"))]
6151 pub mod extra {
6152 use types::os::arch::c95::{c_char, c_int};
6153
6154 extern {
6155 pub fn _NSGetExecutablePath(buf: *mut c_char, bufsize: *mut u32)
6156 -> c_int;
6157 }
6158 }
6159
6160 #[cfg(any(target_os = "freebsd",
6161 target_os = "dragonfly",
6162 target_os = "bitrig",
6163 target_os = "openbsd"))]
6164 pub mod extra {
6165 }
6166
6167 #[cfg(any(target_os = "linux", target_os = "android", target_os = "nacl"))]
6168 pub mod extra {
6169 }
6170
6171
6172 #[cfg(target_os = "windows")]
6173 pub mod extra {
6174
6175 pub mod kernel32 {
6176 use types::os::arch::c95::{c_uint};
6177 use types::os::arch::extra::{BOOL, DWORD, SIZE_T, HMODULE,
6178 LPCWSTR, LPWSTR,
6179 LPWCH, LPDWORD, LPVOID,
6180 LPCVOID, LPOVERLAPPED,
6181 LPSECURITY_ATTRIBUTES,
6182 LPSTARTUPINFO,
6183 LPPROCESS_INFORMATION,
6184 LPMEMORY_BASIC_INFORMATION,
6185 LPSYSTEM_INFO, HANDLE, LPHANDLE,
6186 LARGE_INTEGER, PLARGE_INTEGER,
6187 LPFILETIME, LPWIN32_FIND_DATAW};
6188
6189 extern "system" {
6190 pub fn GetEnvironmentVariableW(n: LPCWSTR,
6191 v: LPWSTR,
6192 nsize: DWORD)
6193 -> DWORD;
6194 pub fn SetEnvironmentVariableW(n: LPCWSTR, v: LPCWSTR)
6195 -> BOOL;
6196 pub fn GetEnvironmentStringsW() -> LPWCH;
6197 pub fn FreeEnvironmentStringsW(env_ptr: LPWCH) -> BOOL;
6198 pub fn GetModuleFileNameW(hModule: HMODULE,
6199 lpFilename: LPWSTR,
6200 nSize: DWORD)
6201 -> DWORD;
6202 pub fn CreateDirectoryW(lpPathName: LPCWSTR,
6203 lpSecurityAttributes:
6204 LPSECURITY_ATTRIBUTES)
6205 -> BOOL;
6206 pub fn CopyFileW(lpExistingFileName: LPCWSTR,
6207 lpNewFileName: LPCWSTR,
6208 bFailIfExists: BOOL)
6209 -> BOOL;
6210 pub fn DeleteFileW(lpPathName: LPCWSTR) -> BOOL;
6211 pub fn RemoveDirectoryW(lpPathName: LPCWSTR) -> BOOL;
6212 pub fn GetCurrentDirectoryW(nBufferLength: DWORD,
6213 lpBuffer: LPWSTR)
6214 -> DWORD;
6215 pub fn SetCurrentDirectoryW(lpPathName: LPCWSTR) -> BOOL;
6216 pub fn GetLastError() -> DWORD;
6217 pub fn FindFirstFileW(fileName: LPCWSTR, findFileData: LPWIN32_FIND_DATAW)
6218 -> HANDLE;
6219 pub fn FindNextFileW(findFile: HANDLE, findFileData: LPWIN32_FIND_DATAW)
6220 -> BOOL;
6221 pub fn FindClose(findFile: HANDLE) -> BOOL;
6222 pub fn DuplicateHandle(hSourceProcessHandle: HANDLE,
6223 hSourceHandle: HANDLE,
6224 hTargetProcessHandle: HANDLE,
6225 lpTargetHandle: LPHANDLE,
6226 dwDesiredAccess: DWORD,
6227 bInheritHandle: BOOL,
6228 dwOptions: DWORD)
6229 -> BOOL;
6230 pub fn CloseHandle(hObject: HANDLE) -> BOOL;
6231 pub fn OpenProcess(dwDesiredAccess: DWORD,
6232 bInheritHandle: BOOL,
6233 dwProcessId: DWORD)
6234 -> HANDLE;
6235 pub fn GetCurrentProcess() -> HANDLE;
6236 pub fn CreateProcessW(lpApplicationName: LPCWSTR,
6237 lpCommandLine: LPWSTR,
6238 lpProcessAttributes:
6239 LPSECURITY_ATTRIBUTES,
6240 lpThreadAttributes:
6241 LPSECURITY_ATTRIBUTES,
6242 bInheritHandles: BOOL,
6243 dwCreationFlags: DWORD,
6244 lpEnvironment: LPVOID,
6245 lpCurrentDirectory: LPCWSTR,
6246 lpStartupInfo: LPSTARTUPINFO,
6247 lpProcessInformation:
6248 LPPROCESS_INFORMATION)
6249 -> BOOL;
6250 pub fn WaitForSingleObject(hHandle: HANDLE,
6251 dwMilliseconds: DWORD)
6252 -> DWORD;
6253 pub fn TerminateProcess(hProcess: HANDLE, uExitCode: c_uint)
6254 -> BOOL;
6255 pub fn GetExitCodeProcess(hProcess: HANDLE,
6256 lpExitCode: LPDWORD)
6257 -> BOOL;
6258 pub fn GetSystemInfo(lpSystemInfo: LPSYSTEM_INFO);
6259 pub fn VirtualAlloc(lpAddress: LPVOID,
6260 dwSize: SIZE_T,
6261 flAllocationType: DWORD,
6262 flProtect: DWORD)
6263 -> LPVOID;
6264 pub fn VirtualFree(lpAddress: LPVOID,
6265 dwSize: SIZE_T,
6266 dwFreeType: DWORD)
6267 -> BOOL;
6268 pub fn VirtualLock(lpAddress: LPVOID, dwSize: SIZE_T) -> BOOL;
6269 pub fn VirtualUnlock(lpAddress: LPVOID, dwSize: SIZE_T)
6270 -> BOOL;
6271 pub fn VirtualProtect(lpAddress: LPVOID,
6272 dwSize: SIZE_T,
6273 flNewProtect: DWORD,
6274 lpflOldProtect: LPDWORD)
6275 -> BOOL;
6276 pub fn VirtualQuery(lpAddress: LPCVOID,
6277 lpBuffer: LPMEMORY_BASIC_INFORMATION,
6278 dwLength: SIZE_T)
6279 -> SIZE_T;
6280 pub fn CreateFileMappingW(hFile: HANDLE,
6281 lpAttributes: LPSECURITY_ATTRIBUTES,
6282 flProtect: DWORD,
6283 dwMaximumSizeHigh: DWORD,
6284 dwMaximumSizeLow: DWORD,
6285 lpName: LPCWSTR)
6286 -> HANDLE;
6287 pub fn MapViewOfFile(hFileMappingObject: HANDLE,
6288 dwDesiredAccess: DWORD,
6289 dwFileOffsetHigh: DWORD,
6290 dwFileOffsetLow: DWORD,
6291 dwNumberOfBytesToMap: SIZE_T)
6292 -> LPVOID;
6293 pub fn UnmapViewOfFile(lpBaseAddress: LPCVOID) -> BOOL;
6294 pub fn MoveFileExW(lpExistingFileName: LPCWSTR,
6295 lpNewFileName: LPCWSTR,
6296 dwFlags: DWORD) -> BOOL;
6297 pub fn CreateHardLinkW(lpSymlinkFileName: LPCWSTR,
6298 lpTargetFileName: LPCWSTR,
6299 lpSecurityAttributes: LPSECURITY_ATTRIBUTES)
6300 -> BOOL;
6301 pub fn FlushFileBuffers(hFile: HANDLE) -> BOOL;
6302 pub fn CreateFileW(lpFileName: LPCWSTR,
6303 dwDesiredAccess: DWORD,
6304 dwShareMode: DWORD,
6305 lpSecurityAttributes: LPSECURITY_ATTRIBUTES,
6306 dwCreationDisposition: DWORD,
6307 dwFlagsAndAttributes: DWORD,
6308 hTemplateFile: HANDLE) -> HANDLE;
6309 pub fn ReadFile(hFile: HANDLE,
6310 lpBuffer: LPVOID,
6311 nNumberOfBytesToRead: DWORD,
6312 lpNumberOfBytesRead: LPDWORD,
6313 lpOverlapped: LPOVERLAPPED) -> BOOL;
6314 pub fn WriteFile(hFile: HANDLE,
6315 lpBuffer: LPVOID,
6316 nNumberOfBytesToWrite: DWORD,
6317 lpNumberOfBytesWritten: LPDWORD,
6318 lpOverlapped: LPOVERLAPPED) -> BOOL;
6319 pub fn SetFilePointerEx(hFile: HANDLE,
6320 liDistanceToMove: LARGE_INTEGER,
6321 lpNewFilePointer: PLARGE_INTEGER,
6322 dwMoveMethod: DWORD) -> BOOL;
6323 pub fn SetEndOfFile(hFile: HANDLE) -> BOOL;
6324
6325 pub fn GetSystemTimeAsFileTime(
6326 lpSystemTimeAsFileTime: LPFILETIME);
6327
6328 pub fn QueryPerformanceFrequency(
6329 lpFrequency: *mut LARGE_INTEGER) -> BOOL;
6330 pub fn QueryPerformanceCounter(
6331 lpPerformanceCount: *mut LARGE_INTEGER) -> BOOL;
6332
6333 pub fn GetCurrentProcessId() -> DWORD;
6334 pub fn CreateNamedPipeW(
6335 lpName: LPCWSTR,
6336 dwOpenMode: DWORD,
6337 dwPipeMode: DWORD,
6338 nMaxInstances: DWORD,
6339 nOutBufferSize: DWORD,
6340 nInBufferSize: DWORD,
6341 nDefaultTimeOut: DWORD,
6342 lpSecurityAttributes: LPSECURITY_ATTRIBUTES
6343 ) -> HANDLE;
6344 pub fn ConnectNamedPipe(hNamedPipe: HANDLE,
6345 lpOverlapped: LPOVERLAPPED) -> BOOL;
6346 pub fn WaitNamedPipeW(lpNamedPipeName: LPCWSTR,
6347 nTimeOut: DWORD) -> BOOL;
6348 pub fn SetNamedPipeHandleState(hNamedPipe: HANDLE,
6349 lpMode: LPDWORD,
6350 lpMaxCollectionCount: LPDWORD,
6351 lpCollectDataTimeout: LPDWORD)
6352 -> BOOL;
6353 pub fn CreateEventW(lpEventAttributes: LPSECURITY_ATTRIBUTES,
6354 bManualReset: BOOL,
6355 bInitialState: BOOL,
6356 lpName: LPCWSTR) -> HANDLE;
6357 pub fn GetOverlappedResult(hFile: HANDLE,
6358 lpOverlapped: LPOVERLAPPED,
6359 lpNumberOfBytesTransferred: LPDWORD,
6360 bWait: BOOL) -> BOOL;
6361 pub fn DisconnectNamedPipe(hNamedPipe: HANDLE) -> BOOL;
6362 }
6363 }
6364
6365 pub mod msvcrt {
6366 use types::os::arch::c95::{c_int, c_long};
6367 use types::os::arch::c99::intptr_t;
6368
6369 extern {
6370 #[link_name = "_commit"]
6371 pub fn commit(fd: c_int) -> c_int;
6372
6373 #[link_name = "_get_osfhandle"]
6374 pub fn get_osfhandle(fd: c_int) -> c_long;
6375
6376 #[link_name = "_open_osfhandle"]
6377 pub fn open_osfhandle(osfhandle: intptr_t,
6378 flags: c_int) -> c_int;
6379 }
6380 }
6381
6382 pub mod winsock {
6383 use types::os::arch::c95::{c_int, c_long, c_ulong};
6384 use types::os::common::bsd44::SOCKET;
6385
6386 extern "system" {
6387 pub fn ioctlsocket(s: SOCKET, cmd: c_long, argp: *mut c_ulong) -> c_int;
6388 }
6389 }
6390 }
6391 }
6392
6393 #[doc(hidden)]
6394 pub fn issue_14344_workaround() {} // FIXME #14344 force linkage to happen correctly
6395
6396 #[test] fn work_on_windows() { } // FIXME #10872 needed for a happy windows