blob: cf013b043d172bf31cfbfc46ee317c5fb6f4e54d [file] [log] [blame]
Alex Crichton50a42e22015-09-15 14:27:15 -07001//! Linux-specific definitions for linux-like values
2
Peter Jin1a190c72016-02-05 15:06:39 -08003use dox::mem;
4
Alex Crichton918f8e12015-09-15 16:39:51 -07005pub type useconds_t = u32;
Alex Crichton52605872015-09-15 16:49:37 -07006pub type dev_t = u64;
7pub type socklen_t = u32;
8pub type pthread_t = c_ulong;
Alex Crichtonc4a8d602015-09-18 15:00:49 -07009pub type mode_t = u32;
Alex Crichton74825222015-10-29 17:36:55 -070010pub type ino64_t = u64;
11pub type off64_t = i64;
12pub type blkcnt64_t = i64;
13pub type rlim64_t = u64;
Alexander Polakov58501562015-12-14 02:09:45 +030014pub type shmatt_t = ::c_ulong;
Alex Crichton881ef9b2015-12-01 09:04:13 -080015pub type mqd_t = ::c_int;
Alexander Schlarb75905652016-09-17 22:17:17 +020016pub type msgqnum_t = ::c_ulong;
17pub type msglen_t = ::c_ulong;
David Henningsson9d2493e2015-12-25 22:06:44 +010018pub type nfds_t = ::c_ulong;
A.J. Gardner24c84f12016-03-31 20:08:03 -050019pub type nl_item = ::c_int;
Alex Crichton74825222015-10-29 17:36:55 -070020
21pub enum fpos64_t {} // TODO: fill this out with a struct
Alex Crichton918f8e12015-09-15 16:39:51 -070022
Alex Crichton50a42e22015-09-15 14:27:15 -070023s! {
Alex Crichtond6e07e22015-10-29 22:59:44 -070024 pub struct dirent {
25 pub d_ino: ::ino_t,
26 pub d_off: ::off_t,
27 pub d_reclen: ::c_ushort,
28 pub d_type: ::c_uchar,
29 pub d_name: [::c_char; 256],
30 }
31
Alex Crichton74825222015-10-29 17:36:55 -070032 pub struct dirent64 {
33 pub d_ino: ::ino64_t,
34 pub d_off: ::off64_t,
35 pub d_reclen: ::c_ushort,
36 pub d_type: ::c_uchar,
37 pub d_name: [::c_char; 256],
38 }
39
40 pub struct rlimit64 {
41 pub rlim_cur: rlim64_t,
42 pub rlim_max: rlim64_t,
43 }
44
Alex Crichton50a42e22015-09-15 14:27:15 -070045 pub struct glob_t {
Alex Crichton17910462015-09-22 19:11:04 -070046 pub gl_pathc: ::size_t,
Alex Crichton50a42e22015-09-15 14:27:15 -070047 pub gl_pathv: *mut *mut c_char,
Alex Crichton17910462015-09-22 19:11:04 -070048 pub gl_offs: ::size_t,
Alex Crichton52605872015-09-15 16:49:37 -070049 pub gl_flags: ::c_int,
Alex Crichton50a42e22015-09-15 14:27:15 -070050
51 __unused1: *mut ::c_void,
52 __unused2: *mut ::c_void,
53 __unused3: *mut ::c_void,
54 __unused4: *mut ::c_void,
55 __unused5: *mut ::c_void,
56 }
57
58 pub struct ifaddrs {
59 pub ifa_next: *mut ifaddrs,
60 pub ifa_name: *mut c_char,
Alex Crichton52605872015-09-15 16:49:37 -070061 pub ifa_flags: ::c_uint,
Alex Crichton50a42e22015-09-15 14:27:15 -070062 pub ifa_addr: *mut ::sockaddr,
63 pub ifa_netmask: *mut ::sockaddr,
64 pub ifa_ifu: *mut ::sockaddr, // FIXME This should be a union
65 pub ifa_data: *mut ::c_void
66 }
Alex Crichtoncd9b33e2015-09-17 14:47:40 -070067
68 pub struct pthread_mutex_t {
Wang Xuerui0caba712016-11-07 11:18:05 +080069 #[cfg(any(target_arch = "mips", target_arch = "arm",
70 target_arch = "powerpc"))]
Alex Crichtoncd9b33e2015-09-17 14:47:40 -070071 __align: [::c_long; 0],
Wang Xuerui0caba712016-11-07 11:18:05 +080072 #[cfg(not(any(target_arch = "mips", target_arch = "arm",
73 target_arch = "powerpc")))]
Alex Crichtoncd9b33e2015-09-17 14:47:40 -070074 __align: [::c_longlong; 0],
75 size: [u8; __SIZEOF_PTHREAD_MUTEX_T],
76 }
77
78 pub struct pthread_rwlock_t {
Wang Xuerui0caba712016-11-07 11:18:05 +080079 #[cfg(any(target_arch = "mips", target_arch = "arm",
80 target_arch = "powerpc"))]
Alex Crichtoncd9b33e2015-09-17 14:47:40 -070081 __align: [::c_long; 0],
Wang Xuerui0caba712016-11-07 11:18:05 +080082 #[cfg(not(any(target_arch = "mips", target_arch = "arm",
83 target_arch = "powerpc")))]
Alex Crichtoncd9b33e2015-09-17 14:47:40 -070084 __align: [::c_longlong; 0],
85 size: [u8; __SIZEOF_PTHREAD_RWLOCK_T],
86 }
87
88 pub struct pthread_mutexattr_t {
Jorge Aparicio196b0e82016-08-26 22:30:42 -050089 #[cfg(any(target_arch = "x86_64", target_arch = "powerpc64",
Jorge Aparicio98589872016-12-30 01:33:51 -050090 target_arch = "mips64", target_arch = "s390x",
91 target_arch = "sparc64"))]
Alex Crichtonb347b442015-09-17 15:48:30 -070092 __align: [::c_int; 0],
Jorge Aparicio196b0e82016-08-26 22:30:42 -050093 #[cfg(not(any(target_arch = "x86_64", target_arch = "powerpc64",
Jorge Aparicio98589872016-12-30 01:33:51 -050094 target_arch = "mips64", target_arch = "s390x",
95 target_arch = "sparc64")))]
Alex Crichton684cfa42015-09-17 15:18:18 -070096 __align: [::c_long; 0],
Alex Crichtoncd9b33e2015-09-17 14:47:40 -070097 size: [u8; __SIZEOF_PTHREAD_MUTEXATTR_T],
98 }
99
100 pub struct pthread_cond_t {
Jorge Aparicio23a50922016-07-26 16:13:03 -0500101 #[cfg(any(target_env = "musl"))]
Jorge Aparicio751bea32016-01-30 01:28:50 -0500102 __align: [*const ::c_void; 0],
Jorge Aparicio23a50922016-07-26 16:13:03 -0500103 #[cfg(not(any(target_env = "musl")))]
Alex Crichtoncd9b33e2015-09-17 14:47:40 -0700104 __align: [::c_longlong; 0],
105 size: [u8; __SIZEOF_PTHREAD_COND_T],
106 }
107
Tomasz MiÄ…skocb644852016-07-20 07:31:48 +0200108 pub struct pthread_condattr_t {
109 __align: [::c_int; 0],
110 size: [u8; __SIZEOF_PTHREAD_CONDATTR_T],
111 }
112
Alex Crichtoncd9b33e2015-09-17 14:47:40 -0700113 pub struct passwd {
114 pub pw_name: *mut ::c_char,
115 pub pw_passwd: *mut ::c_char,
116 pub pw_uid: ::uid_t,
117 pub pw_gid: ::gid_t,
118 pub pw_gecos: *mut ::c_char,
119 pub pw_dir: *mut ::c_char,
120 pub pw_shell: *mut ::c_char,
121 }
Dan Burkert85a76f82015-11-04 20:26:27 -0800122
Philipp Keller26f3eb92016-09-26 22:00:29 +0200123 pub struct spwd {
124 pub sp_namp: *mut ::c_char,
125 pub sp_pwdp: *mut ::c_char,
126 pub sp_lstchg: ::c_long,
127 pub sp_min: ::c_long,
128 pub sp_max: ::c_long,
129 pub sp_warn: ::c_long,
130 pub sp_inact: ::c_long,
131 pub sp_expire: ::c_long,
132 pub sp_flag: ::c_ulong,
133 }
134
Dan Burkert85a76f82015-11-04 20:26:27 -0800135 pub struct statvfs {
136 pub f_bsize: ::c_ulong,
137 pub f_frsize: ::c_ulong,
138 pub f_blocks: ::fsblkcnt_t,
139 pub f_bfree: ::fsblkcnt_t,
140 pub f_bavail: ::fsblkcnt_t,
141 pub f_files: ::fsfilcnt_t,
142 pub f_ffree: ::fsfilcnt_t,
143 pub f_favail: ::fsfilcnt_t,
Jorge Aparicio3df00572016-09-11 23:57:37 -0500144 #[cfg(target_endian = "little")]
Dan Burkert85a76f82015-11-04 20:26:27 -0800145 pub f_fsid: ::c_ulong,
146 #[cfg(target_pointer_width = "32")]
Jorge Aparicio41101f22016-09-12 23:41:17 -0500147 __f_unused: ::c_int,
Jorge Aparicio3df00572016-09-11 23:57:37 -0500148 #[cfg(target_endian = "big")]
149 pub f_fsid: ::c_ulong,
Dan Burkert85a76f82015-11-04 20:26:27 -0800150 pub f_flag: ::c_ulong,
151 pub f_namemax: ::c_ulong,
152 __f_spare: [::c_int; 6],
153 }
Alexander Polakov440bd532015-11-07 15:42:38 +0300154
Alex Crichton8dce9ad2015-12-03 11:44:14 -0800155 pub struct dqblk {
156 pub dqb_bhardlimit: ::uint64_t,
157 pub dqb_bsoftlimit: ::uint64_t,
158 pub dqb_curspace: ::uint64_t,
159 pub dqb_ihardlimit: ::uint64_t,
160 pub dqb_isoftlimit: ::uint64_t,
161 pub dqb_curinodes: ::uint64_t,
162 pub dqb_btime: ::uint64_t,
163 pub dqb_itime: ::uint64_t,
164 pub dqb_valid: ::uint32_t,
165 }
166
167 pub struct signalfd_siginfo {
168 pub ssi_signo: ::uint32_t,
169 pub ssi_errno: ::int32_t,
170 pub ssi_code: ::int32_t,
171 pub ssi_pid: ::uint32_t,
172 pub ssi_uid: ::uint32_t,
173 pub ssi_fd: ::int32_t,
174 pub ssi_tid: ::uint32_t,
175 pub ssi_band: ::uint32_t,
176 pub ssi_overrun: ::uint32_t,
177 pub ssi_trapno: ::uint32_t,
178 pub ssi_status: ::int32_t,
179 pub ssi_int: ::int32_t,
180 pub ssi_ptr: ::uint64_t,
181 pub ssi_utime: ::uint64_t,
182 pub ssi_stime: ::uint64_t,
183 pub ssi_addr: ::uint64_t,
184 _pad: [::uint8_t; 48],
185 }
186
187 pub struct fsid_t {
188 __val: [::c_int; 2],
189 }
190
191 pub struct mq_attr {
192 pub mq_flags: ::c_long,
193 pub mq_maxmsg: ::c_long,
194 pub mq_msgsize: ::c_long,
195 pub mq_curmsgs: ::c_long,
196 pad: [::c_long; 4]
197 }
198
199 pub struct cpu_set_t {
200 #[cfg(target_pointer_width = "32")]
201 bits: [u32; 32],
202 #[cfg(target_pointer_width = "64")]
203 bits: [u64; 16],
204 }
Charles J. Schneider332bd862016-07-12 09:32:42 +0200205
206 pub struct if_nameindex {
207 pub if_index: ::c_uint,
208 pub if_name: *mut ::c_char,
209 }
210
Alexander Schlarb75905652016-09-17 22:17:17 +0200211 // System V IPC
212 pub struct msginfo {
213 pub msgpool: ::c_int,
214 pub msgmap: ::c_int,
215 pub msgmax: ::c_int,
216 pub msgmnb: ::c_int,
217 pub msgmni: ::c_int,
218 pub msgssz: ::c_int,
219 pub msgtql: ::c_int,
220 pub msgseg: ::c_ushort,
221 }
Alex Crichton50a42e22015-09-15 14:27:15 -0700222}
223
A.J. Gardner24c84f12016-03-31 20:08:03 -0500224pub const ABDAY_1: ::nl_item = 0x20000;
225pub const ABDAY_2: ::nl_item = 0x20001;
226pub const ABDAY_3: ::nl_item = 0x20002;
227pub const ABDAY_4: ::nl_item = 0x20003;
228pub const ABDAY_5: ::nl_item = 0x20004;
229pub const ABDAY_6: ::nl_item = 0x20005;
230pub const ABDAY_7: ::nl_item = 0x20006;
231
232pub const DAY_1: ::nl_item = 0x20007;
233pub const DAY_2: ::nl_item = 0x20008;
234pub const DAY_3: ::nl_item = 0x20009;
235pub const DAY_4: ::nl_item = 0x2000A;
236pub const DAY_5: ::nl_item = 0x2000B;
237pub const DAY_6: ::nl_item = 0x2000C;
238pub const DAY_7: ::nl_item = 0x2000D;
239
240pub const ABMON_1: ::nl_item = 0x2000E;
241pub const ABMON_2: ::nl_item = 0x2000F;
242pub const ABMON_3: ::nl_item = 0x20010;
243pub const ABMON_4: ::nl_item = 0x20011;
244pub const ABMON_5: ::nl_item = 0x20012;
245pub const ABMON_6: ::nl_item = 0x20013;
246pub const ABMON_7: ::nl_item = 0x20014;
247pub const ABMON_8: ::nl_item = 0x20015;
248pub const ABMON_9: ::nl_item = 0x20016;
249pub const ABMON_10: ::nl_item = 0x20017;
250pub const ABMON_11: ::nl_item = 0x20018;
251pub const ABMON_12: ::nl_item = 0x20019;
252
Jorge Aparicio98589872016-12-30 01:33:51 -0500253#[cfg(not(target_arch = "sparc64"))]
Ian Denhardt2faafb32016-10-02 15:02:28 -0400254pub const CLONE_NEWCGROUP: ::c_int = 0x02000000;
255
A.J. Gardner24c84f12016-03-31 20:08:03 -0500256pub const MON_1: ::nl_item = 0x2001A;
257pub const MON_2: ::nl_item = 0x2001B;
258pub const MON_3: ::nl_item = 0x2001C;
259pub const MON_4: ::nl_item = 0x2001D;
260pub const MON_5: ::nl_item = 0x2001E;
261pub const MON_6: ::nl_item = 0x2001F;
262pub const MON_7: ::nl_item = 0x20020;
263pub const MON_8: ::nl_item = 0x20021;
264pub const MON_9: ::nl_item = 0x20022;
265pub const MON_10: ::nl_item = 0x20023;
266pub const MON_11: ::nl_item = 0x20024;
267pub const MON_12: ::nl_item = 0x20025;
268
269pub const AM_STR: ::nl_item = 0x20026;
270pub const PM_STR: ::nl_item = 0x20027;
271
272pub const D_T_FMT: ::nl_item = 0x20028;
273pub const D_FMT: ::nl_item = 0x20029;
274pub const T_FMT: ::nl_item = 0x2002A;
275pub const T_FMT_AMPM: ::nl_item = 0x2002B;
276
277pub const ERA: ::nl_item = 0x2002C;
278pub const ERA_D_FMT: ::nl_item = 0x2002E;
279pub const ALT_DIGITS: ::nl_item = 0x2002F;
280pub const ERA_D_T_FMT: ::nl_item = 0x20030;
281pub const ERA_T_FMT: ::nl_item = 0x20031;
282
283pub const CODESET: ::nl_item = 14;
284
285pub const CRNCYSTR: ::nl_item = 0x4000F;
286
Ian Denhardt0ecafc32016-10-03 20:08:12 -0400287pub const RUSAGE_THREAD: ::c_int = 1;
288pub const RUSAGE_CHILDREN: ::c_int = -1;
289
A.J. Gardner24c84f12016-03-31 20:08:03 -0500290pub const RADIXCHAR: ::nl_item = 0x10000;
291pub const THOUSEP: ::nl_item = 0x10001;
292
293pub const YESEXPR: ::nl_item = 0x50000;
294pub const NOEXPR: ::nl_item = 0x50001;
295pub const YESSTR: ::nl_item = 0x50002;
296pub const NOSTR: ::nl_item = 0x50003;
297
Alex Crichton52605872015-09-15 16:49:37 -0700298pub const FILENAME_MAX: ::c_uint = 4096;
Alex Crichton52605872015-09-15 16:49:37 -0700299pub const L_tmpnam: ::c_uint = 20;
Philipp Keller2cad6ca2016-07-06 21:15:38 +0200300pub const _PC_LINK_MAX: ::c_int = 0;
301pub const _PC_MAX_CANON: ::c_int = 1;
302pub const _PC_MAX_INPUT: ::c_int = 2;
Alex Crichton52605872015-09-15 16:49:37 -0700303pub const _PC_NAME_MAX: ::c_int = 3;
Philipp Keller2cad6ca2016-07-06 21:15:38 +0200304pub const _PC_PATH_MAX: ::c_int = 4;
305pub const _PC_PIPE_BUF: ::c_int = 5;
306pub const _PC_CHOWN_RESTRICTED: ::c_int = 6;
307pub const _PC_NO_TRUNC: ::c_int = 7;
308pub const _PC_VDISABLE: ::c_int = 8;
Alex Crichton50a42e22015-09-15 14:27:15 -0700309
Alex Crichton52605872015-09-15 16:49:37 -0700310pub const _SC_ARG_MAX: ::c_int = 0;
311pub const _SC_CHILD_MAX: ::c_int = 1;
312pub const _SC_CLK_TCK: ::c_int = 2;
313pub const _SC_NGROUPS_MAX: ::c_int = 3;
314pub const _SC_OPEN_MAX: ::c_int = 4;
315pub const _SC_STREAM_MAX: ::c_int = 5;
316pub const _SC_TZNAME_MAX: ::c_int = 6;
317pub const _SC_JOB_CONTROL: ::c_int = 7;
318pub const _SC_SAVED_IDS: ::c_int = 8;
319pub const _SC_REALTIME_SIGNALS: ::c_int = 9;
320pub const _SC_PRIORITY_SCHEDULING: ::c_int = 10;
321pub const _SC_TIMERS: ::c_int = 11;
322pub const _SC_ASYNCHRONOUS_IO: ::c_int = 12;
323pub const _SC_PRIORITIZED_IO: ::c_int = 13;
324pub const _SC_SYNCHRONIZED_IO: ::c_int = 14;
325pub const _SC_FSYNC: ::c_int = 15;
326pub const _SC_MAPPED_FILES: ::c_int = 16;
327pub const _SC_MEMLOCK: ::c_int = 17;
328pub const _SC_MEMLOCK_RANGE: ::c_int = 18;
329pub const _SC_MEMORY_PROTECTION: ::c_int = 19;
330pub const _SC_MESSAGE_PASSING: ::c_int = 20;
331pub const _SC_SEMAPHORES: ::c_int = 21;
332pub const _SC_SHARED_MEMORY_OBJECTS: ::c_int = 22;
333pub const _SC_AIO_LISTIO_MAX: ::c_int = 23;
334pub const _SC_AIO_MAX: ::c_int = 24;
335pub const _SC_AIO_PRIO_DELTA_MAX: ::c_int = 25;
336pub const _SC_DELAYTIMER_MAX: ::c_int = 26;
337pub const _SC_MQ_OPEN_MAX: ::c_int = 27;
338pub const _SC_MQ_PRIO_MAX: ::c_int = 28;
339pub const _SC_VERSION: ::c_int = 29;
340pub const _SC_PAGESIZE: ::c_int = 30;
Brian Campbell11f29f52016-01-31 21:28:16 -0500341pub const _SC_PAGE_SIZE: ::c_int = _SC_PAGESIZE;
Alex Crichton52605872015-09-15 16:49:37 -0700342pub const _SC_RTSIG_MAX: ::c_int = 31;
343pub const _SC_SEM_NSEMS_MAX: ::c_int = 32;
344pub const _SC_SEM_VALUE_MAX: ::c_int = 33;
345pub const _SC_SIGQUEUE_MAX: ::c_int = 34;
346pub const _SC_TIMER_MAX: ::c_int = 35;
347pub const _SC_BC_BASE_MAX: ::c_int = 36;
348pub const _SC_BC_DIM_MAX: ::c_int = 37;
349pub const _SC_BC_SCALE_MAX: ::c_int = 38;
350pub const _SC_BC_STRING_MAX: ::c_int = 39;
351pub const _SC_COLL_WEIGHTS_MAX: ::c_int = 40;
352pub const _SC_EXPR_NEST_MAX: ::c_int = 42;
353pub const _SC_LINE_MAX: ::c_int = 43;
354pub const _SC_RE_DUP_MAX: ::c_int = 44;
355pub const _SC_2_VERSION: ::c_int = 46;
356pub const _SC_2_C_BIND: ::c_int = 47;
357pub const _SC_2_C_DEV: ::c_int = 48;
358pub const _SC_2_FORT_DEV: ::c_int = 49;
359pub const _SC_2_FORT_RUN: ::c_int = 50;
360pub const _SC_2_SW_DEV: ::c_int = 51;
361pub const _SC_2_LOCALEDEF: ::c_int = 52;
362pub const _SC_IOV_MAX: ::c_int = 60;
363pub const _SC_THREADS: ::c_int = 67;
364pub const _SC_THREAD_SAFE_FUNCTIONS: ::c_int = 68;
365pub const _SC_GETGR_R_SIZE_MAX: ::c_int = 69;
366pub const _SC_GETPW_R_SIZE_MAX: ::c_int = 70;
367pub const _SC_LOGIN_NAME_MAX: ::c_int = 71;
368pub const _SC_TTY_NAME_MAX: ::c_int = 72;
369pub const _SC_THREAD_DESTRUCTOR_ITERATIONS: ::c_int = 73;
370pub const _SC_THREAD_KEYS_MAX: ::c_int = 74;
371pub const _SC_THREAD_STACK_MIN: ::c_int = 75;
372pub const _SC_THREAD_THREADS_MAX: ::c_int = 76;
373pub const _SC_THREAD_ATTR_STACKADDR: ::c_int = 77;
374pub const _SC_THREAD_ATTR_STACKSIZE: ::c_int = 78;
375pub const _SC_THREAD_PRIORITY_SCHEDULING: ::c_int = 79;
376pub const _SC_THREAD_PRIO_INHERIT: ::c_int = 80;
377pub const _SC_THREAD_PRIO_PROTECT: ::c_int = 81;
378pub const _SC_NPROCESSORS_ONLN: ::c_int = 84;
379pub const _SC_ATEXIT_MAX: ::c_int = 87;
380pub const _SC_XOPEN_VERSION: ::c_int = 89;
381pub const _SC_XOPEN_XCU_VERSION: ::c_int = 90;
382pub const _SC_XOPEN_UNIX: ::c_int = 91;
383pub const _SC_XOPEN_CRYPT: ::c_int = 92;
384pub const _SC_XOPEN_ENH_I18N: ::c_int = 93;
385pub const _SC_XOPEN_SHM: ::c_int = 94;
386pub const _SC_2_CHAR_TERM: ::c_int = 95;
Alex Crichton52605872015-09-15 16:49:37 -0700387pub const _SC_2_UPE: ::c_int = 97;
388pub const _SC_XBS5_ILP32_OFF32: ::c_int = 125;
389pub const _SC_XBS5_ILP32_OFFBIG: ::c_int = 126;
390pub const _SC_XBS5_LPBIG_OFFBIG: ::c_int = 128;
391pub const _SC_XOPEN_LEGACY: ::c_int = 129;
392pub const _SC_XOPEN_REALTIME: ::c_int = 130;
393pub const _SC_XOPEN_REALTIME_THREADS: ::c_int = 131;
Raphael Cohnf3651112016-05-04 10:35:08 +0100394pub const _SC_HOST_NAME_MAX: ::c_int = 180;
Alex Crichton50a42e22015-09-15 14:27:15 -0700395
396pub const RLIM_SAVED_MAX: ::rlim_t = RLIM_INFINITY;
397pub const RLIM_SAVED_CUR: ::rlim_t = RLIM_INFINITY;
398
Alex Crichton52605872015-09-15 16:49:37 -0700399pub const GLOB_ERR: ::c_int = 1 << 0;
400pub const GLOB_MARK: ::c_int = 1 << 1;
401pub const GLOB_NOSORT: ::c_int = 1 << 2;
402pub const GLOB_DOOFFS: ::c_int = 1 << 3;
403pub const GLOB_NOCHECK: ::c_int = 1 << 4;
404pub const GLOB_APPEND: ::c_int = 1 << 5;
405pub const GLOB_NOESCAPE: ::c_int = 1 << 6;
Alex Crichton50a42e22015-09-15 14:27:15 -0700406
Alex Crichton52605872015-09-15 16:49:37 -0700407pub const GLOB_NOSPACE: ::c_int = 1;
408pub const GLOB_ABORTED: ::c_int = 2;
409pub const GLOB_NOMATCH: ::c_int = 3;
Alex Crichton50a42e22015-09-15 14:27:15 -0700410
Alex Crichton52605872015-09-15 16:49:37 -0700411pub const POSIX_MADV_NORMAL: ::c_int = 0;
412pub const POSIX_MADV_RANDOM: ::c_int = 1;
413pub const POSIX_MADV_SEQUENTIAL: ::c_int = 2;
414pub const POSIX_MADV_WILLNEED: ::c_int = 3;
Alex Crichton50a42e22015-09-15 14:27:15 -0700415
416pub const S_IEXEC: mode_t = 64;
417pub const S_IWRITE: mode_t = 128;
418pub const S_IREAD: mode_t = 256;
419
Alex Crichton52605872015-09-15 16:49:37 -0700420pub const F_LOCK: ::c_int = 1;
421pub const F_TEST: ::c_int = 3;
422pub const F_TLOCK: ::c_int = 2;
423pub const F_ULOCK: ::c_int = 0;
Alex Crichton50a42e22015-09-15 14:27:15 -0700424
Dan Burkert85a76f82015-11-04 20:26:27 -0800425pub const ST_RDONLY: ::c_ulong = 1;
426pub const ST_NOSUID: ::c_ulong = 2;
427pub const ST_NODEV: ::c_ulong = 4;
428pub const ST_NOEXEC: ::c_ulong = 8;
429pub const ST_SYNCHRONOUS: ::c_ulong = 16;
430pub const ST_MANDLOCK: ::c_ulong = 64;
431pub const ST_WRITE: ::c_ulong = 128;
432pub const ST_APPEND: ::c_ulong = 256;
433pub const ST_IMMUTABLE: ::c_ulong = 512;
434pub const ST_NOATIME: ::c_ulong = 1024;
435pub const ST_NODIRATIME: ::c_ulong = 2048;
436
Dong Zhou188bef62015-11-29 22:24:10 -0500437pub const RTLD_NEXT: *mut ::c_void = -1i64 as *mut ::c_void;
438pub const RTLD_DEFAULT: *mut ::c_void = 0i64 as *mut ::c_void;
Alex Crichton29de5982016-02-04 13:48:13 -0800439pub const RTLD_NODELETE: ::c_int = 0x1000;
440pub const RTLD_NOW: ::c_int = 0x2;
Dong Zhou51ed5742015-11-29 21:42:14 -0500441
Alex Crichton52605872015-09-15 16:49:37 -0700442pub const TCP_MD5SIG: ::c_int = 14;
Alex Crichton50a42e22015-09-15 14:27:15 -0700443
Alex Crichtoncd9b33e2015-09-17 14:47:40 -0700444pub const PTHREAD_MUTEX_INITIALIZER: pthread_mutex_t = pthread_mutex_t {
445 __align: [],
446 size: [0; __SIZEOF_PTHREAD_MUTEX_T],
447};
448pub const PTHREAD_COND_INITIALIZER: pthread_cond_t = pthread_cond_t {
449 __align: [],
450 size: [0; __SIZEOF_PTHREAD_COND_T],
451};
452pub const PTHREAD_RWLOCK_INITIALIZER: pthread_rwlock_t = pthread_rwlock_t {
453 __align: [],
454 size: [0; __SIZEOF_PTHREAD_RWLOCK_T],
455};
Amanieu d'Antrasb2b9f292016-05-21 06:40:14 +0100456pub const PTHREAD_MUTEX_NORMAL: ::c_int = 0;
Alex Crichtoncd9b33e2015-09-17 14:47:40 -0700457pub const PTHREAD_MUTEX_RECURSIVE: ::c_int = 1;
Amanieu d'Antrasb2b9f292016-05-21 06:40:14 +0100458pub const PTHREAD_MUTEX_ERRORCHECK: ::c_int = 2;
459pub const PTHREAD_MUTEX_DEFAULT: ::c_int = PTHREAD_MUTEX_NORMAL;
Alex Crichtoncd9b33e2015-09-17 14:47:40 -0700460pub const __SIZEOF_PTHREAD_COND_T: usize = 48;
Alex Crichtoncd9b33e2015-09-17 14:47:40 -0700461
Alexander Polakov26974c72015-11-27 03:02:44 +0300462pub const SCHED_OTHER: ::c_int = 0;
463pub const SCHED_FIFO: ::c_int = 1;
464pub const SCHED_RR: ::c_int = 2;
465pub const SCHED_BATCH: ::c_int = 3;
466pub const SCHED_IDLE: ::c_int = 5;
467
Alexander Schlarb75905652016-09-17 22:17:17 +0200468// System V IPC
469pub const IPC_PRIVATE: ::key_t = 0;
470
Alexander Polakov58501562015-12-14 02:09:45 +0300471pub const IPC_CREAT: ::c_int = 0o1000;
472pub const IPC_EXCL: ::c_int = 0o2000;
473pub const IPC_NOWAIT: ::c_int = 0o4000;
474
475pub const IPC_RMID: ::c_int = 0;
476pub const IPC_SET: ::c_int = 1;
477pub const IPC_STAT: ::c_int = 2;
478pub const IPC_INFO: ::c_int = 3;
Alexander Schlarb75905652016-09-17 22:17:17 +0200479pub const MSG_STAT: ::c_int = 11;
480pub const MSG_INFO: ::c_int = 12;
481
482pub const MSG_NOERROR: ::c_int = 0o10000;
483pub const MSG_EXCEPT: ::c_int = 0o20000;
484pub const MSG_COPY: ::c_int = 0o40000;
Alexander Polakov58501562015-12-14 02:09:45 +0300485
486pub const SHM_R: ::c_int = 0o400;
487pub const SHM_W: ::c_int = 0o200;
488
489pub const SHM_RDONLY: ::c_int = 0o10000;
490pub const SHM_RND: ::c_int = 0o20000;
491pub const SHM_REMAP: ::c_int = 0o40000;
492pub const SHM_EXEC: ::c_int = 0o100000;
493
494pub const SHM_LOCK: ::c_int = 11;
495pub const SHM_UNLOCK: ::c_int = 12;
496
497pub const SHM_HUGETLB: ::c_int = 0o4000;
498pub const SHM_NORESERVE: ::c_int = 0o10000;
499
Alex Crichton8dce9ad2015-12-03 11:44:14 -0800500pub const EPOLLRDHUP: ::c_int = 0x2000;
501pub const EPOLLONESHOT: ::c_int = 0x40000000;
502
503pub const QFMT_VFS_OLD: ::c_int = 1;
504pub const QFMT_VFS_V0: ::c_int = 2;
505
Jorge Aparicio98589872016-12-30 01:33:51 -0500506#[cfg(not(target_arch = "sparc64"))]
Alex Crichton8dce9ad2015-12-03 11:44:14 -0800507pub const SFD_CLOEXEC: ::c_int = 0x080000;
Jorge Aparicio98589872016-12-30 01:33:51 -0500508#[cfg(target_arch = "sparc64")]
509pub const SFD_CLOEXEC: ::c_int = 0x400000;
Alex Crichton8dce9ad2015-12-03 11:44:14 -0800510
511pub const EFD_SEMAPHORE: ::c_int = 0x1;
512
Jorge Aparicio98589872016-12-30 01:33:51 -0500513#[cfg(not(target_arch = "sparc64"))]
Alex Crichton8dce9ad2015-12-03 11:44:14 -0800514pub const NCCS: usize = 32;
Jorge Aparicio98589872016-12-30 01:33:51 -0500515#[cfg(target_arch = "sparc64")]
516pub const NCCS: usize = 17;
Alex Crichton8dce9ad2015-12-03 11:44:14 -0800517
Raphael Cohn1c6c0ca2016-05-05 17:45:29 +0100518pub const LOG_NFACILITIES: ::c_int = 24;
519
Steven Fackler41699f72016-06-03 21:02:56 -0700520pub const SEM_FAILED: *mut ::sem_t = 0 as *mut sem_t;
521
Philipp Matthias Schaefer5a68b6a2016-07-15 23:19:00 +0200522pub const RB_AUTOBOOT: ::c_int = 0x01234567u32 as i32;
523pub const RB_HALT_SYSTEM: ::c_int = 0xcdef0123u32 as i32;
524pub const RB_ENABLE_CAD: ::c_int = 0x89abcdefu32 as i32;
525pub const RB_DISABLE_CAD: ::c_int = 0x00000000u32 as i32;
526pub const RB_POWER_OFF: ::c_int = 0x4321fedcu32 as i32;
527pub const RB_SW_SUSPEND: ::c_int = 0xd000fce2u32 as i32;
528pub const RB_KEXEC: ::c_int = 0x45584543u32 as i32;
Sergey Bugaev5d65c3f2016-07-12 20:55:08 +0300529
Stefan Luecked37d42a2016-12-20 15:29:17 +0100530pub const AI_PASSIVE: ::c_int = 0x0001;
531pub const AI_CANONNAME: ::c_int = 0x0002;
532pub const AI_NUMERICHOST: ::c_int = 0x0004;
533pub const AI_V4MAPPED: ::c_int = 0x0008;
534pub const AI_ALL: ::c_int = 0x0010;
535pub const AI_ADDRCONFIG: ::c_int = 0x0020;
536
537pub const AI_NUMERICSERV: ::c_int = 0x0400;
538
539pub const EAI_BADFLAGS: ::c_int = -1;
540pub const EAI_NONAME: ::c_int = -2;
541pub const EAI_AGAIN: ::c_int = -3;
542pub const EAI_FAIL: ::c_int = -4;
543pub const EAI_FAMILY: ::c_int = -6;
544pub const EAI_SOCKTYPE: ::c_int = -7;
545pub const EAI_SERVICE: ::c_int = -8;
546pub const EAI_MEMORY: ::c_int = -10;
547pub const EAI_OVERFLOW: ::c_int = -12;
548
549pub const NI_NUMERICHOST: ::c_int = 1;
550pub const NI_NUMERICSERV: ::c_int = 2;
551pub const NI_NOFQDN: ::c_int = 4;
552pub const NI_NAMEREQD: ::c_int = 8;
553pub const NI_DGRAM: ::c_int = 16;
554
Chris Kaminskiae6cbcd2016-09-07 13:15:49 -0400555pub const SYNC_FILE_RANGE_WAIT_BEFORE: ::c_uint = 1;
556pub const SYNC_FILE_RANGE_WRITE: ::c_uint = 2;
557pub const SYNC_FILE_RANGE_WAIT_AFTER: ::c_uint = 4;
Chris Kaminski37552b72016-09-06 20:20:00 -0400558
Tomasz MiÄ…skof514d462016-09-19 12:29:45 +0200559pub const EAI_SYSTEM: ::c_int = -11;
560
Alan Somers804763c2016-11-13 15:03:14 -0700561pub const AIO_CANCELED: ::c_int = 0;
562pub const AIO_NOTCANCELED: ::c_int = 1;
563pub const AIO_ALLDONE: ::c_int = 2;
564pub const LIO_READ: ::c_int = 0;
565pub const LIO_WRITE: ::c_int = 1;
566pub const LIO_NOP: ::c_int = 2;
567pub const LIO_WAIT: ::c_int = 0;
568pub const LIO_NOWAIT: ::c_int = 1;
569
Alex Crichton8a8bc662016-02-29 23:02:36 -0800570f! {
571 pub fn CPU_ZERO(cpuset: &mut cpu_set_t) -> () {
572 for slot in cpuset.bits.iter_mut() {
573 *slot = 0;
574 }
575 }
576
577 pub fn CPU_SET(cpu: usize, cpuset: &mut cpu_set_t) -> () {
NODA, Kaiafa77df2016-04-10 19:13:46 +0800578 let size_in_bits = 8 * mem::size_of_val(&cpuset.bits[0]); // 32, 64 etc
579 let (idx, offset) = (cpu / size_in_bits, cpu % size_in_bits);
Alex Crichton8a8bc662016-02-29 23:02:36 -0800580 cpuset.bits[idx] |= 1 << offset;
581 ()
582 }
583
Philipp Matthias Schaefer2def04a2016-08-18 21:47:08 +0200584 pub fn CPU_CLR(cpu: usize, cpuset: &mut cpu_set_t) -> () {
585 let size_in_bits = 8 * mem::size_of_val(&cpuset.bits[0]); // 32, 64 etc
586 let (idx, offset) = (cpu / size_in_bits, cpu % size_in_bits);
587 cpuset.bits[idx] &= !(1 << offset);
588 ()
589 }
590
Alex Crichton8a8bc662016-02-29 23:02:36 -0800591 pub fn CPU_ISSET(cpu: usize, cpuset: &cpu_set_t) -> bool {
NODA, Kaiafa77df2016-04-10 19:13:46 +0800592 let size_in_bits = 8 * mem::size_of_val(&cpuset.bits[0]);
593 let (idx, offset) = (cpu / size_in_bits, cpu % size_in_bits);
Alex Crichton8a8bc662016-02-29 23:02:36 -0800594 0 != (cpuset.bits[idx] & (1 << offset))
595 }
596
597 pub fn CPU_EQUAL(set1: &cpu_set_t, set2: &cpu_set_t) -> bool {
598 set1.bits == set2.bits
599 }
600}
601
Raphael Cohn893d4d82016-05-08 11:40:57 +0100602extern {
Alan Somerse0ff0d62016-11-13 14:35:17 -0700603 pub fn aio_read(aiocbp: *mut aiocb) -> ::c_int;
604 pub fn aio_write(aiocbp: *mut aiocb) -> ::c_int;
605 pub fn aio_fsync(op: ::c_int, aiocbp: *mut aiocb) -> ::c_int;
606 pub fn aio_error(aiocbp: *const aiocb) -> ::c_int;
607 pub fn aio_return(aiocbp: *mut aiocb) -> ::ssize_t;
608 pub fn aio_suspend(aiocb_list: *const *const aiocb, nitems: ::c_int,
609 timeout: *const ::timespec) -> ::c_int;
610 pub fn aio_cancel(fd: ::c_int, aiocbp: *mut aiocb) -> ::c_int;
611 pub fn lio_listio(mode: ::c_int, aiocb_list: *const *mut aiocb,
612 nitems: ::c_int, sevp: *mut ::sigevent) -> ::c_int;
613
knight42c2893652016-08-28 00:32:35 +0800614 pub fn lutimes(file: *const ::c_char, times: *const ::timeval) -> ::c_int;
615
Knight19fb32a2016-07-31 17:00:15 +0800616 pub fn setpwent();
617 pub fn getpwent() -> *mut passwd;
Philipp Keller26f3eb92016-09-26 22:00:29 +0200618 pub fn setspent();
619 pub fn endspent();
620 pub fn getspent() -> *mut spwd;
621 pub fn getspnam(__name: *const ::c_char) -> *mut spwd;
622
Alex Crichton52605872015-09-15 16:49:37 -0700623 pub fn shm_open(name: *const c_char, oflag: ::c_int,
624 mode: mode_t) -> ::c_int;
Alexander Schlarb75905652016-09-17 22:17:17 +0200625
626 // System V IPC
Alexander Polakov58501562015-12-14 02:09:45 +0300627 pub fn shmget(key: ::key_t, size: ::size_t, shmflg: ::c_int) -> ::c_int;
Alex Crichton8a8bc662016-02-29 23:02:36 -0800628 pub fn shmat(shmid: ::c_int,
629 shmaddr: *const ::c_void,
630 shmflg: ::c_int) -> *mut ::c_void;
Alexander Polakov58501562015-12-14 02:09:45 +0300631 pub fn shmdt(shmaddr: *const ::c_void) -> ::c_int;
Alex Crichton8a8bc662016-02-29 23:02:36 -0800632 pub fn shmctl(shmid: ::c_int,
633 cmd: ::c_int,
634 buf: *mut ::shmid_ds) -> ::c_int;
Alexander Schlarb75905652016-09-17 22:17:17 +0200635 pub fn ftok(pathname: *const ::c_char, proj_id: ::c_int) -> ::key_t;
636 pub fn msgctl(msqid: ::c_int, cmd: ::c_int, buf: *mut msqid_ds) -> ::c_int;
637 pub fn msgget(key: ::key_t, msgflg: ::c_int) -> ::c_int;
638 pub fn msgrcv(msqid: ::c_int, msgp: *mut ::c_void, msgsz: ::size_t,
639 msgtyp: ::c_long, msgflg: ::c_int) -> ::ssize_t;
640 pub fn msgsnd(msqid: ::c_int, msgp: *const ::c_void, msgsz: ::size_t,
641 msgflg: ::c_int) -> ::c_int;
642
Alex Crichton9d5b8b22015-09-15 17:14:23 -0700643 pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int)
644 -> ::c_int;
Alex Crichtoncd9b33e2015-09-17 14:47:40 -0700645 pub fn __errno_location() -> *mut ::c_int;
Alex Crichton15b83c22015-09-17 17:25:52 -0700646
Alex Crichton74825222015-10-29 17:36:55 -0700647 pub fn fopen64(filename: *const c_char,
648 mode: *const c_char) -> *mut ::FILE;
649 pub fn freopen64(filename: *const c_char, mode: *const c_char,
650 file: *mut ::FILE) -> *mut ::FILE;
651 pub fn tmpfile64() -> *mut ::FILE;
652 pub fn fgetpos64(stream: *mut ::FILE, ptr: *mut fpos64_t) -> ::c_int;
653 pub fn fsetpos64(stream: *mut ::FILE, ptr: *const fpos64_t) -> ::c_int;
Alex Crichton74825222015-10-29 17:36:55 -0700654 pub fn fseeko64(stream: *mut ::FILE,
655 offset: ::off64_t,
656 whence: ::c_int) -> ::c_int;
657 pub fn ftello64(stream: *mut ::FILE) -> ::off64_t;
Dan Burkert0b467752015-11-03 20:58:44 -0800658 pub fn fallocate(fd: ::c_int, mode: ::c_int,
659 offset: ::off_t, len: ::off_t) -> ::c_int;
Dan Burkert44bba4c2015-11-03 21:02:46 -0800660 pub fn posix_fallocate(fd: ::c_int, offset: ::off_t,
661 len: ::off_t) -> ::c_int;
Dan Burkertfe3968f2015-11-04 22:20:29 -0800662 pub fn readahead(fd: ::c_int, offset: ::off64_t,
663 count: ::size_t) -> ::ssize_t;
Alexander Polakov30baed02015-12-01 15:29:05 +0300664 pub fn getxattr(path: *const c_char, name: *const c_char,
665 value: *mut ::c_void, size: ::size_t) -> ::ssize_t;
666 pub fn lgetxattr(path: *const c_char, name: *const c_char,
667 value: *mut ::c_void, size: ::size_t) -> ::ssize_t;
668 pub fn fgetxattr(filedes: ::c_int, name: *const c_char,
669 value: *mut ::c_void, size: ::size_t) -> ::ssize_t;
670 pub fn setxattr(path: *const c_char, name: *const c_char,
671 value: *const ::c_void, size: ::size_t,
672 flags: ::c_int) -> ::c_int;
673 pub fn lsetxattr(path: *const c_char, name: *const c_char,
674 value: *const ::c_void, size: ::size_t,
675 flags: ::c_int) -> ::c_int;
676 pub fn fsetxattr(filedes: ::c_int, name: *const c_char,
677 value: *const ::c_void, size: ::size_t,
678 flags: ::c_int) -> ::c_int;
679 pub fn listxattr(path: *const c_char, list: *mut c_char,
680 size: ::size_t) -> ::ssize_t;
681 pub fn llistxattr(path: *const c_char, list: *mut c_char,
682 size: ::size_t) -> ::ssize_t;
683 pub fn flistxattr(filedes: ::c_int, list: *mut c_char,
684 size: ::size_t) -> ::ssize_t;
685 pub fn removexattr(path: *const c_char, name: *const c_char) -> ::c_int;
686 pub fn lremovexattr(path: *const c_char, name: *const c_char) -> ::c_int;
687 pub fn fremovexattr(filedes: ::c_int, name: *const c_char) -> ::c_int;
Alex Crichton8dce9ad2015-12-03 11:44:14 -0800688 pub fn signalfd(fd: ::c_int,
689 mask: *const ::sigset_t,
690 flags: ::c_int) -> ::c_int;
691 pub fn pwritev(fd: ::c_int,
692 iov: *const ::iovec,
693 iovcnt: ::c_int,
694 offset: ::off_t) -> ::ssize_t;
695 pub fn preadv(fd: ::c_int,
696 iov: *const ::iovec,
697 iovcnt: ::c_int,
698 offset: ::off_t) -> ::ssize_t;
699 pub fn quotactl(cmd: ::c_int,
700 special: *const ::c_char,
701 id: ::c_int,
702 data: *mut ::c_char) -> ::c_int;
703 pub fn mq_open(name: *const ::c_char, oflag: ::c_int, ...) -> ::mqd_t;
704 pub fn mq_close(mqd: ::mqd_t) -> ::c_int;
705 pub fn mq_unlink(name: *const ::c_char) -> ::c_int;
706 pub fn mq_receive(mqd: ::mqd_t,
707 msg_ptr: *mut ::c_char,
708 msg_len: ::size_t,
709 msq_prio: *mut ::c_uint) -> ::ssize_t;
710 pub fn mq_send(mqd: ::mqd_t,
711 msg_ptr: *const ::c_char,
712 msg_len: ::size_t,
713 msq_prio: ::c_uint) -> ::c_int;
714 pub fn mq_getattr(mqd: ::mqd_t, attr: *mut ::mq_attr) -> ::c_int;
715 pub fn mq_setattr(mqd: ::mqd_t,
716 newattr: *const ::mq_attr,
717 oldattr: *mut ::mq_attr) -> ::c_int;
Alex Crichton8dce9ad2015-12-03 11:44:14 -0800718 pub fn epoll_pwait(epfd: ::c_int,
719 events: *mut ::epoll_event,
720 maxevents: ::c_int,
721 timeout: ::c_int,
722 sigmask: *const ::sigset_t) -> ::c_int;
723 pub fn dup3(oldfd: ::c_int, newfd: ::c_int, flags: ::c_int) -> ::c_int;
Alex Crichton8dce9ad2015-12-03 11:44:14 -0800724 pub fn sethostname(name: *const ::c_char, len: ::size_t) -> ::c_int;
Kamal Marhubi511a7802016-02-15 00:40:19 -0500725 pub fn mkostemp(template: *mut ::c_char, flags: ::c_int) -> ::c_int;
Alex Crichton8a8bc662016-02-29 23:02:36 -0800726 pub fn mkostemps(template: *mut ::c_char,
727 suffixlen: ::c_int,
728 flags: ::c_int) -> ::c_int;
Philipp Matthias Schaeferc1982a42016-02-28 16:06:45 +0100729 pub fn sigtimedwait(set: *const sigset_t,
730 info: *mut siginfo_t,
731 timeout: *const ::timespec) -> ::c_int;
732 pub fn sigwaitinfo(set: *const sigset_t,
733 info: *mut siginfo_t) -> ::c_int;
Kamal Marhubi9c4af102016-02-27 14:58:43 -0500734 pub fn openpty(amaster: *mut ::c_int,
735 aslave: *mut ::c_int,
736 name: *mut ::c_char,
737 termp: *const termios,
738 winp: *const ::winsize) -> ::c_int;
739 pub fn forkpty(amaster: *mut ::c_int,
740 name: *mut ::c_char,
741 termp: *const termios,
742 winp: *const ::winsize) -> ::pid_t;
A.J. Gardner24c84f12016-03-31 20:08:03 -0500743 pub fn nl_langinfo_l(item: ::nl_item, locale: ::locale_t) -> *mut ::c_char;
Kamal Marhubib9750b62016-04-27 14:04:31 -0400744 pub fn getnameinfo(sa: *const ::sockaddr,
745 salen: ::socklen_t,
746 host: *mut ::c_char,
747 hostlen: ::socklen_t,
748 serv: *mut ::c_char,
749 sevlen: ::socklen_t,
750 flags: ::c_int) -> ::c_int;
Kamal Marhubi95695992016-04-27 14:29:19 -0400751 pub fn prlimit(pid: ::pid_t, resource: ::c_int, new_limit: *const ::rlimit,
752 old_limit: *mut ::rlimit) -> ::c_int;
753 pub fn prlimit64(pid: ::pid_t,
754 resource: ::c_int,
755 new_limit: *const ::rlimit64,
756 old_limit: *mut ::rlimit64) -> ::c_int;
Raphael Cohn72f1fb62016-05-11 18:06:14 +0100757 pub fn getloadavg(loadavg: *mut ::c_double, nelem: ::c_int) -> ::c_int;
Julia Evansc9496fe2016-05-11 08:44:27 -0400758 pub fn process_vm_readv(pid: ::pid_t,
759 local_iov: *const ::iovec,
760 liovcnt: ::c_ulong,
761 remote_iov: *const ::iovec,
762 riovcnt: ::c_ulong,
763 flags: ::c_ulong) -> isize;
764 pub fn process_vm_writev(pid: ::pid_t,
765 local_iov: *const ::iovec,
766 liovcnt: ::c_ulong,
767 remote_iov: *const ::iovec,
768 riovcnt: ::c_ulong,
769 flags: ::c_ulong) -> isize;
Sergey Bugaev8b767972016-07-12 20:56:43 +0300770 pub fn reboot(how_to: ::c_int) -> ::c_int;
Boris Faure28d0afa2016-11-05 21:19:53 +0100771 pub fn setfsgid(gid: ::gid_t) -> ::c_int;
772 pub fn setfsuid(uid: ::uid_t) -> ::c_int;
Dylan Reid519ffa02016-10-21 16:05:01 -0700773 pub fn setresgid(rgid: ::gid_t, egid: ::gid_t, sgid: ::gid_t) -> ::c_int;
774 pub fn setresuid(ruid: ::uid_t, euid: ::uid_t, suid: ::uid_t) -> ::c_int;
Axel Viala26ee7822016-06-10 02:33:32 +0200775
776 // Not available now on Android
777 pub fn mkfifoat(dirfd: ::c_int, pathname: *const ::c_char,
778 mode: ::mode_t) -> ::c_int;
Charles J. Schneider332bd862016-07-12 09:32:42 +0200779 pub fn if_nameindex() -> *mut if_nameindex;
780 pub fn if_freenameindex(ptr: *mut if_nameindex);
Chris Kaminski37552b72016-09-06 20:20:00 -0400781 pub fn sync_file_range(fd: ::c_int, offset: ::off64_t,
782 nbytes: ::off64_t, flags: ::c_uint) -> ::c_int;
Niels Sascha Reedijka3ff9552016-02-02 21:21:36 +0100783 pub fn getifaddrs(ifap: *mut *mut ::ifaddrs) -> ::c_int;
784 pub fn freeifaddrs(ifa: *mut ::ifaddrs);
Alex Crichton50a42e22015-09-15 14:27:15 -0700785}
786
787cfg_if! {
Brian Anderson7d1d5752015-11-26 23:27:45 +0000788 if #[cfg(any(target_env = "musl",
Raph Levien517e86d2016-10-11 15:26:47 -0700789 target_os = "fuchsia",
Brian Anderson7d1d5752015-11-26 23:27:45 +0000790 target_os = "emscripten"))] {
Alex Crichton74825222015-10-29 17:36:55 -0700791 mod musl;
792 pub use self::musl::*;
Wang Xuerui6b729902016-11-14 22:40:05 +0800793 } else if #[cfg(any(target_arch = "mips",
794 target_arch = "mips64"))] {
Alex Crichton50a42e22015-09-15 14:27:15 -0700795 mod mips;
796 pub use self::mips::*;
Jorge Aparicioe7480ed2016-09-02 21:08:02 -0500797 } else if #[cfg(any(target_arch = "s390x"))] {
798 mod s390x;
799 pub use self::s390x::*;
Alex Crichton50a42e22015-09-15 14:27:15 -0700800 } else {
Alex Crichton62a6c822015-11-09 13:58:44 -0800801 mod other;
802 pub use self::other::*;
Alex Crichton50a42e22015-09-15 14:27:15 -0700803 }
804}