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