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