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