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