blob: 8222c01a0c4c657205c89135e8a41fe0029e6447 [file] [log] [blame]
Alex Crichton5d6cf052015-09-11 14:52:34 -07001pub type in_addr_t = u32;
2pub type in_port_t = u16;
3pub type pthread_t = c_ulong;
4pub type rlim_t = c_ulong;
5pub type sa_family_t = u16;
6pub type sighandler_t = size_t;
7pub type socklen_t = u32;
8
9pub enum timezone {}
10
11s! {
Alex Crichton5d6cf052015-09-11 14:52:34 -070012 pub struct sockaddr {
13 pub sa_family: sa_family_t,
14 pub sa_data: [u8; 14],
15 }
16
Alex Crichton50a42e22015-09-15 14:27:15 -070017 pub struct sockaddr_in {
18 pub sin_family: sa_family_t,
19 pub sin_port: ::in_port_t,
20 pub sin_addr: ::in_addr,
21 pub sin_zero: [u8; 8],
22 }
23
24 pub struct sockaddr_in6 {
25 pub sin6_family: sa_family_t,
26 pub sin6_port: ::in_port_t,
27 pub sin6_flowinfo: u32,
28 pub sin6_addr: ::in6_addr,
29 pub sin6_scope_id: u32,
30 }
31
32 pub struct sockaddr_un {
33 pub sun_family: sa_family_t,
34 pub sun_path: [::c_char; 108]
35 }
36
Alex Crichton5d6cf052015-09-11 14:52:34 -070037 pub struct sockaddr_storage {
38 pub ss_family: sa_family_t,
39 __ss_align: isize,
40 #[cfg(target_pointer_width = "32")]
41 __ss_pad2: [u8; 128 - 2 * 4],
42 #[cfg(target_pointer_width = "64")]
43 __ss_pad2: [u8; 128 - 2 * 8],
44 }
45
Alex Crichton5d6cf052015-09-11 14:52:34 -070046 pub struct addrinfo {
47 pub ai_flags: c_int,
48 pub ai_family: c_int,
49 pub ai_socktype: c_int,
50 pub ai_protocol: c_int,
51 pub ai_addrlen: socklen_t,
52
53 #[cfg(target_os = "linux")]
Alex Crichton50a42e22015-09-15 14:27:15 -070054 pub ai_addr: *mut ::sockaddr,
Alex Crichton5d6cf052015-09-11 14:52:34 -070055
56 pub ai_canonname: *mut c_char,
57
58 #[cfg(any(target_os = "android", target_os = "nacl"))]
Alex Crichton50a42e22015-09-15 14:27:15 -070059 pub ai_addr: *mut ::sockaddr,
Alex Crichton5d6cf052015-09-11 14:52:34 -070060
61 pub ai_next: *mut addrinfo,
62 }
63
Alex Crichton5d6cf052015-09-11 14:52:34 -070064 pub struct sockaddr_ll {
65 pub sll_family: c_ushort,
66 pub sll_protocol: c_ushort,
67 pub sll_ifindex: c_int,
68 pub sll_hatype: c_ushort,
69 pub sll_pkttype: c_uchar,
70 pub sll_halen: c_uchar,
71 pub sll_addr: [c_uchar; 8]
72 }
Alex Crichton5d6cf052015-09-11 14:52:34 -070073}
74
75pub const EXIT_FAILURE: c_int = 1;
76pub const EXIT_SUCCESS: c_int = 0;
77pub const RAND_MAX: c_int = 2147483647;
78pub const EOF: c_int = -1;
79pub const SEEK_SET: c_int = 0;
80pub const SEEK_CUR: c_int = 1;
81pub const SEEK_END: c_int = 2;
82pub const _IOFBF: c_int = 0;
83pub const _IONBF: c_int = 2;
84pub const _IOLBF: c_int = 1;
Alex Crichton5d6cf052015-09-11 14:52:34 -070085
86pub const F_DUPFD: c_int = 0;
87pub const F_GETFD: c_int = 1;
88pub const F_SETFD: c_int = 2;
89pub const F_GETFL: c_int = 3;
90pub const F_SETFL: c_int = 4;
91
92pub const O_ACCMODE: c_int = 3;
93
94pub const SIGTRAP: c_int = 5;
95pub const SIG_IGN: size_t = 1;
96
Alex Crichton5d6cf052015-09-11 14:52:34 -070097pub const PTHREAD_CREATE_JOINABLE: c_int = 0;
98pub const PTHREAD_CREATE_DETACHED: c_int = 1;
99
100pub const CLOCK_REALTIME: c_int = 0;
101pub const CLOCK_MONOTONIC: c_int = 1;
102
103pub const RLIMIT_CPU: c_int = 0;
104pub const RLIMIT_FSIZE: c_int = 1;
105pub const RLIMIT_DATA: c_int = 2;
106pub const RLIMIT_STACK: c_int = 3;
107pub const RLIMIT_CORE: c_int = 4;
Alex Crichton5d6cf052015-09-11 14:52:34 -0700108pub const RLIMIT_LOCKS: c_int = 10;
109pub const RLIMIT_SIGPENDING: c_int = 11;
110pub const RLIMIT_MSGQUEUE: c_int = 12;
111pub const RLIMIT_NICE: c_int = 13;
112pub const RLIMIT_RTPRIO: c_int = 14;
Alex Crichton5d6cf052015-09-11 14:52:34 -0700113
114pub const RUSAGE_SELF: c_int = 0;
115pub const RUSAGE_CHILDREN: c_int = -1;
Alex Crichtond3d77922015-09-11 17:03:39 -0700116
117pub const O_RDONLY: ::c_int = 0;
118pub const O_WRONLY: ::c_int = 1;
119pub const O_RDWR: ::c_int = 2;
Alex Crichtond3d77922015-09-11 17:03:39 -0700120pub const O_TRUNC: ::c_int = 512;
121pub const S_IFIFO: ::mode_t = 4096;
122pub const S_IFCHR: ::mode_t = 8192;
123pub const S_IFBLK: ::mode_t = 24576;
124pub const S_IFDIR: ::mode_t = 16384;
125pub const S_IFREG: ::mode_t = 32768;
126pub const S_IFLNK: ::mode_t = 40960;
127pub const S_IFSOCK: ::mode_t = 49152;
128pub const S_IFMT: ::mode_t = 61440;
129pub const S_IRWXU: ::mode_t = 448;
130pub const S_IXUSR: ::mode_t = 64;
131pub const S_IWUSR: ::mode_t = 128;
132pub const S_IRUSR: ::mode_t = 256;
133pub const S_IRWXG: ::mode_t = 56;
134pub const S_IXGRP: ::mode_t = 8;
135pub const S_IWGRP: ::mode_t = 16;
136pub const S_IRGRP: ::mode_t = 32;
137pub const S_IRWXO: ::mode_t = 7;
138pub const S_IXOTH: ::mode_t = 1;
139pub const S_IWOTH: ::mode_t = 2;
140pub const S_IROTH: ::mode_t = 4;
141pub const F_OK: ::c_int = 0;
142pub const R_OK: ::c_int = 4;
143pub const W_OK: ::c_int = 2;
144pub const X_OK: ::c_int = 1;
145pub const STDIN_FILENO: ::c_int = 0;
146pub const STDOUT_FILENO: ::c_int = 1;
147pub const STDERR_FILENO: ::c_int = 2;
148pub const SIGHUP: ::c_int = 1;
149pub const SIGINT: ::c_int = 2;
150pub const SIGQUIT: ::c_int = 3;
151pub const SIGILL: ::c_int = 4;
152pub const SIGABRT: ::c_int = 6;
153pub const SIGFPE: ::c_int = 8;
154pub const SIGKILL: ::c_int = 9;
155pub const SIGSEGV: ::c_int = 11;
156pub const SIGPIPE: ::c_int = 13;
157pub const SIGALRM: ::c_int = 14;
158pub const SIGTERM: ::c_int = 15;
159
160pub const PROT_NONE: ::c_int = 0;
161pub const PROT_READ: ::c_int = 1;
162pub const PROT_WRITE: ::c_int = 2;
163pub const PROT_EXEC: ::c_int = 4;
164
165pub const MAP_FILE: ::c_int = 0x0000;
166pub const MAP_SHARED: ::c_int = 0x0001;
167pub const MAP_PRIVATE: ::c_int = 0x0002;
168pub const MAP_FIXED: ::c_int = 0x0010;
Alex Crichtond3d77922015-09-11 17:03:39 -0700169
170pub const MAP_FAILED: *mut ::c_void = !0 as *mut ::c_void;
171
172pub const MCL_CURRENT: ::c_int = 0x0001;
173pub const MCL_FUTURE: ::c_int = 0x0002;
174
175pub const MS_ASYNC: ::c_int = 0x0001;
176pub const MS_INVALIDATE: ::c_int = 0x0002;
177pub const MS_SYNC: ::c_int = 0x0004;
178
179pub const EPERM: ::c_int = 1;
180pub const ENOENT: ::c_int = 2;
181pub const ESRCH: ::c_int = 3;
182pub const EINTR: ::c_int = 4;
183pub const EIO: ::c_int = 5;
184pub const ENXIO: ::c_int = 6;
185pub const E2BIG: ::c_int = 7;
186pub const ENOEXEC: ::c_int = 8;
187pub const EBADF: ::c_int = 9;
188pub const ECHILD: ::c_int = 10;
189pub const EAGAIN: ::c_int = 11;
190pub const ENOMEM: ::c_int = 12;
191pub const EACCES: ::c_int = 13;
192pub const EFAULT: ::c_int = 14;
193pub const ENOTBLK: ::c_int = 15;
194pub const EBUSY: ::c_int = 16;
195pub const EEXIST: ::c_int = 17;
196pub const EXDEV: ::c_int = 18;
197pub const ENODEV: ::c_int = 19;
198pub const ENOTDIR: ::c_int = 20;
199pub const EISDIR: ::c_int = 21;
200pub const EINVAL: ::c_int = 22;
201pub const ENFILE: ::c_int = 23;
202pub const EMFILE: ::c_int = 24;
203pub const ENOTTY: ::c_int = 25;
204pub const ETXTBSY: ::c_int = 26;
205pub const EFBIG: ::c_int = 27;
206pub const ENOSPC: ::c_int = 28;
207pub const ESPIPE: ::c_int = 29;
208pub const EROFS: ::c_int = 30;
209pub const EMLINK: ::c_int = 31;
210pub const EPIPE: ::c_int = 32;
211pub const EDOM: ::c_int = 33;
212pub const ERANGE: ::c_int = 34;
Alex Crichtond3d77922015-09-11 17:03:39 -0700213pub const EWOULDBLOCK: ::c_int = EAGAIN;
Alex Crichtond3d77922015-09-11 17:03:39 -0700214
215pub const EBFONT: ::c_int = 59;
216pub const ENOSTR: ::c_int = 60;
217pub const ENODATA: ::c_int = 61;
218pub const ETIME: ::c_int = 62;
219pub const ENOSR: ::c_int = 63;
220pub const ENONET: ::c_int = 64;
221pub const ENOPKG: ::c_int = 65;
222pub const EREMOTE: ::c_int = 66;
223pub const ENOLINK: ::c_int = 67;
224pub const EADV: ::c_int = 68;
225pub const ESRMNT: ::c_int = 69;
226pub const ECOMM: ::c_int = 70;
227pub const EPROTO: ::c_int = 71;
Alex Crichtond3d77922015-09-11 17:03:39 -0700228pub const EDOTDOT: ::c_int = 73;
Alex Crichtond3d77922015-09-11 17:03:39 -0700229
230pub const AF_PACKET: ::c_int = 17;
231pub const IPPROTO_RAW: ::c_int = 255;
232
Alex Crichtond3d77922015-09-11 17:03:39 -0700233pub const PROT_GROWSDOWN: ::c_int = 0x1000000;
234pub const PROT_GROWSUP: ::c_int = 0x2000000;
235
236pub const MAP_TYPE: ::c_int = 0x000f;
Alex Crichtond3d77922015-09-11 17:03:39 -0700237
238pub const MADV_NORMAL: ::c_int = 0;
239pub const MADV_RANDOM: ::c_int = 1;
240pub const MADV_SEQUENTIAL: ::c_int = 2;
241pub const MADV_WILLNEED: ::c_int = 3;
242pub const MADV_DONTNEED: ::c_int = 4;
243pub const MADV_REMOVE: ::c_int = 9;
244pub const MADV_DONTFORK: ::c_int = 10;
245pub const MADV_DOFORK: ::c_int = 11;
246pub const MADV_MERGEABLE: ::c_int = 12;
247pub const MADV_UNMERGEABLE: ::c_int = 13;
248pub const MADV_HWPOISON: ::c_int = 100;
249
250pub const IFF_LOOPBACK: ::c_int = 0x8;
251
252pub const AF_UNIX: ::c_int = 1;
253pub const AF_INET: ::c_int = 2;
254pub const AF_INET6: ::c_int = 10;
Alex Crichtond3d77922015-09-11 17:03:39 -0700255pub const SOCK_RAW: ::c_int = 3;
256pub const IPPROTO_TCP: ::c_int = 6;
257pub const IPPROTO_IP: ::c_int = 0;
258pub const IPPROTO_IPV6: ::c_int = 41;
259pub const IP_MULTICAST_TTL: ::c_int = 33;
260pub const IP_MULTICAST_LOOP: ::c_int = 34;
261pub const IP_TTL: ::c_int = 2;
262pub const IP_HDRINCL: ::c_int = 3;
263pub const IP_ADD_MEMBERSHIP: ::c_int = 35;
264pub const IP_DROP_MEMBERSHIP: ::c_int = 36;
265pub const IPV6_ADD_MEMBERSHIP: ::c_int = 20;
266pub const IPV6_DROP_MEMBERSHIP: ::c_int = 21;
267
268pub const TCP_NODELAY: ::c_int = 1;
269pub const TCP_MAXSEG: ::c_int = 2;
270pub const TCP_CORK: ::c_int = 3;
271pub const TCP_KEEPIDLE: ::c_int = 4;
272pub const TCP_KEEPINTVL: ::c_int = 5;
273pub const TCP_KEEPCNT: ::c_int = 6;
274pub const TCP_SYNCNT: ::c_int = 7;
275pub const TCP_LINGER2: ::c_int = 8;
276pub const TCP_DEFER_ACCEPT: ::c_int = 9;
277pub const TCP_WINDOW_CLAMP: ::c_int = 10;
278pub const TCP_INFO: ::c_int = 11;
279pub const TCP_QUICKACK: ::c_int = 12;
280pub const TCP_CONGESTION: ::c_int = 13;
281
Alex Crichtond3d77922015-09-11 17:03:39 -0700282pub const SO_DEBUG: ::c_int = 1;
Alex Crichtond3d77922015-09-11 17:03:39 -0700283
284pub const SHUT_RD: ::c_int = 0;
285pub const SHUT_WR: ::c_int = 1;
286pub const SHUT_RDWR: ::c_int = 2;
287
288pub const LOCK_SH: ::c_int = 1;
289pub const LOCK_EX: ::c_int = 2;
290pub const LOCK_NB: ::c_int = 4;
291pub const LOCK_UN: ::c_int = 8;
292
293extern {
294 pub fn fdatasync(fd: ::c_int) -> ::c_int;
Alex Crichton50a42e22015-09-15 14:27:15 -0700295 pub fn mincore(addr: *mut ::c_void, len: size_t,
296 vec: *mut c_uchar) -> c_int;
Alex Crichton5d6cf052015-09-11 14:52:34 -0700297}
298
299cfg_if! {
Alex Crichton5d6cf052015-09-11 14:52:34 -0700300 if #[cfg(target_os = "linux")] {
301 mod linux;
302 pub use self::linux::*;
303 } else if #[cfg(target_os = "android")] {
304 mod android;
305 pub use self::android::*;
306 } else {
307 // ...
308 }
309}