]> git.proxmox.com Git - rustc.git/blame - vendor/libc/src/unix/linux_like/linux/mod.rs
New upstream version 1.63.0+dfsg1
[rustc.git] / vendor / libc / src / unix / linux_like / linux / mod.rs
CommitLineData
476ff2be
SL
1//! Linux-specific definitions for linux-like values
2
476ff2be
SL
3pub type useconds_t = u32;
4pub type dev_t = u64;
5pub type socklen_t = u32;
476ff2be
SL
6pub type mode_t = u32;
7pub type ino64_t = u64;
8pub type off64_t = i64;
9pub type blkcnt64_t = i64;
10pub type rlim64_t = u64;
476ff2be 11pub type mqd_t = ::c_int;
476ff2be
SL
12pub type nfds_t = ::c_ulong;
13pub type nl_item = ::c_int;
8bb4bdeb 14pub type idtype_t = ::c_uint;
ea8adc8c 15pub type loff_t = ::c_longlong;
416331ca 16pub type pthread_key_t = ::c_uint;
136023e0 17pub type pthread_spinlock_t = ::c_int;
476ff2be 18
041b39d2
XL
19pub type __u8 = ::c_uchar;
20pub type __u16 = ::c_ushort;
21pub type __s16 = ::c_short;
22pub type __u32 = ::c_uint;
23pub type __s32 = ::c_int;
24
ff7c6d11
XL
25pub type Elf32_Half = u16;
26pub type Elf32_Word = u32;
27pub type Elf32_Off = u32;
28pub type Elf32_Addr = u32;
29
30pub type Elf64_Half = u16;
31pub type Elf64_Word = u32;
32pub type Elf64_Off = u64;
33pub type Elf64_Addr = u64;
34pub type Elf64_Xword = u64;
69743fb6
XL
35pub type Elf64_Sxword = i64;
36
37pub type Elf32_Section = u16;
38pub type Elf64_Section = u16;
ff7c6d11 39
5869c6ff
XL
40// linux/can.h
41pub type canid_t = u32;
5e7ed085
FG
42
43// linux/can/j1939.h
5869c6ff 44pub type can_err_mask_t = u32;
5e7ed085
FG
45pub type pgn_t = u32;
46pub type priority_t = u8;
47pub type name_t = u64;
5869c6ff 48
6a06907d
XL
49pub type iconv_t = *mut ::c_void;
50
532ac7d7 51#[cfg_attr(feature = "extra_traits", derive(Debug))]
ba9703b0 52pub enum fpos64_t {} // FIXME: fill this out with a struct
532ac7d7
XL
53impl ::Copy for fpos64_t {}
54impl ::Clone for fpos64_t {
e74abb32
XL
55 fn clone(&self) -> fpos64_t {
56 *self
57 }
532ac7d7 58}
476ff2be
SL
59
60s! {
476ff2be
SL
61 pub struct rlimit64 {
62 pub rlim_cur: rlim64_t,
63 pub rlim_max: rlim64_t,
64 }
65
66 pub struct glob_t {
67 pub gl_pathc: ::size_t,
68 pub gl_pathv: *mut *mut c_char,
69 pub gl_offs: ::size_t,
70 pub gl_flags: ::c_int,
71
72 __unused1: *mut ::c_void,
73 __unused2: *mut ::c_void,
74 __unused3: *mut ::c_void,
75 __unused4: *mut ::c_void,
76 __unused5: *mut ::c_void,
77 }
78
476ff2be
SL
79 pub struct passwd {
80 pub pw_name: *mut ::c_char,
81 pub pw_passwd: *mut ::c_char,
82 pub pw_uid: ::uid_t,
83 pub pw_gid: ::gid_t,
84 pub pw_gecos: *mut ::c_char,
85 pub pw_dir: *mut ::c_char,
86 pub pw_shell: *mut ::c_char,
87 }
88
89 pub struct spwd {
90 pub sp_namp: *mut ::c_char,
91 pub sp_pwdp: *mut ::c_char,
92 pub sp_lstchg: ::c_long,
93 pub sp_min: ::c_long,
94 pub sp_max: ::c_long,
95 pub sp_warn: ::c_long,
96 pub sp_inact: ::c_long,
97 pub sp_expire: ::c_long,
98 pub sp_flag: ::c_ulong,
99 }
100
476ff2be 101 pub struct dqblk {
416331ca
XL
102 pub dqb_bhardlimit: u64,
103 pub dqb_bsoftlimit: u64,
104 pub dqb_curspace: u64,
105 pub dqb_ihardlimit: u64,
106 pub dqb_isoftlimit: u64,
107 pub dqb_curinodes: u64,
108 pub dqb_btime: u64,
109 pub dqb_itime: u64,
110 pub dqb_valid: u32,
476ff2be
SL
111 }
112
113 pub struct signalfd_siginfo {
416331ca
XL
114 pub ssi_signo: u32,
115 pub ssi_errno: i32,
116 pub ssi_code: i32,
117 pub ssi_pid: u32,
118 pub ssi_uid: u32,
119 pub ssi_fd: i32,
120 pub ssi_tid: u32,
121 pub ssi_band: u32,
122 pub ssi_overrun: u32,
123 pub ssi_trapno: u32,
124 pub ssi_status: i32,
125 pub ssi_int: i32,
126 pub ssi_ptr: u64,
127 pub ssi_utime: u64,
128 pub ssi_stime: u64,
129 pub ssi_addr: u64,
130 pub ssi_addr_lsb: u16,
131 _pad2: u16,
132 pub ssi_syscall: i32,
133 pub ssi_call_addr: u64,
134 pub ssi_arch: u32,
135 _pad: [u8; 28],
476ff2be
SL
136 }
137
ea8adc8c
XL
138 pub struct itimerspec {
139 pub it_interval: ::timespec,
140 pub it_value: ::timespec,
141 }
142
476ff2be
SL
143 pub struct fsid_t {
144 __val: [::c_int; 2],
145 }
146
b7449926
XL
147 pub struct packet_mreq {
148 pub mr_ifindex: ::c_int,
149 pub mr_type: ::c_ushort,
150 pub mr_alen: ::c_ushort,
151 pub mr_address: [::c_uchar; 8],
152 }
153
476ff2be 154 pub struct cpu_set_t {
abe05a73
XL
155 #[cfg(all(target_pointer_width = "32",
156 not(target_arch = "x86_64")))]
476ff2be 157 bits: [u32; 32],
abe05a73
XL
158 #[cfg(not(all(target_pointer_width = "32",
159 not(target_arch = "x86_64"))))]
476ff2be
SL
160 bits: [u64; 16],
161 }
162
163 pub struct if_nameindex {
164 pub if_index: ::c_uint,
165 pub if_name: *mut ::c_char,
166 }
167
168 // System V IPC
169 pub struct msginfo {
170 pub msgpool: ::c_int,
171 pub msgmap: ::c_int,
172 pub msgmax: ::c_int,
173 pub msgmnb: ::c_int,
174 pub msgmni: ::c_int,
175 pub msgssz: ::c_int,
176 pub msgtql: ::c_int,
177 pub msgseg: ::c_ushort,
178 }
041b39d2 179
041b39d2
XL
180 pub struct sembuf {
181 pub sem_num: ::c_ushort,
182 pub sem_op: ::c_short,
183 pub sem_flg: ::c_short,
184 }
185
186 pub struct input_event {
187 pub time: ::timeval,
188 pub type_: ::__u16,
189 pub code: ::__u16,
190 pub value: ::__s32,
191 }
192
193 pub struct input_id {
194 pub bustype: ::__u16,
195 pub vendor: ::__u16,
196 pub product: ::__u16,
197 pub version: ::__u16,
198 }
199
200 pub struct input_absinfo {
201 pub value: ::__s32,
202 pub minimum: ::__s32,
203 pub maximum: ::__s32,
204 pub fuzz: ::__s32,
205 pub flat: ::__s32,
206 pub resolution: ::__s32,
207 }
208
209 pub struct input_keymap_entry {
210 pub flags: ::__u8,
211 pub len: ::__u8,
212 pub index: ::__u16,
213 pub keycode: ::__u32,
214 pub scancode: [::__u8; 32],
215 }
216
217 pub struct input_mask {
218 pub type_: ::__u32,
219 pub codes_size: ::__u32,
220 pub codes_ptr: ::__u64,
221 }
222
223 pub struct ff_replay {
224 pub length: ::__u16,
225 pub delay: ::__u16,
226 }
227
228 pub struct ff_trigger {
229 pub button: ::__u16,
230 pub interval: ::__u16,
231 }
232
233 pub struct ff_envelope {
234 pub attack_length: ::__u16,
235 pub attack_level: ::__u16,
236 pub fade_length: ::__u16,
237 pub fade_level: ::__u16,
238 }
239
240 pub struct ff_constant_effect {
241 pub level: ::__s16,
242 pub envelope: ff_envelope,
243 }
244
245 pub struct ff_ramp_effect {
246 pub start_level: ::__s16,
247 pub end_level: ::__s16,
248 pub envelope: ff_envelope,
249 }
250
251 pub struct ff_condition_effect {
252 pub right_saturation: ::__u16,
253 pub left_saturation: ::__u16,
254
255 pub right_coeff: ::__s16,
256 pub left_coeff: ::__s16,
257
258 pub deadband: ::__u16,
259 pub center: ::__s16,
260 }
261
262 pub struct ff_periodic_effect {
263 pub waveform: ::__u16,
264 pub period: ::__u16,
265 pub magnitude: ::__s16,
266 pub offset: ::__s16,
267 pub phase: ::__u16,
268
269 pub envelope: ff_envelope,
270
271 pub custom_len: ::__u32,
272 pub custom_data: *mut ::__s16,
273 }
274
275 pub struct ff_rumble_effect {
276 pub strong_magnitude: ::__u16,
277 pub weak_magnitude: ::__u16,
278 }
279
280 pub struct ff_effect {
281 pub type_: ::__u16,
282 pub id: ::__s16,
283 pub direction: ::__u16,
284 pub trigger: ff_trigger,
285 pub replay: ff_replay,
286 // FIXME this is actually a union
287 #[cfg(target_pointer_width = "64")]
288 pub u: [u64; 4],
289 #[cfg(target_pointer_width = "32")]
290 pub u: [u32; 7],
291 }
ff7c6d11 292
cdc7bbd5
XL
293 pub struct uinput_ff_upload {
294 pub request_id: ::__u32,
295 pub retval: ::__s32,
296 pub effect: ff_effect,
297 pub old: ff_effect,
298 }
299
300 pub struct uinput_ff_erase {
301 pub request_id: ::__u32,
302 pub retval: ::__s32,
303 pub effect_id: ::__u32,
304 }
305
306 pub struct uinput_abs_setup {
307 pub code: ::__u16,
308 pub absinfo: input_absinfo,
309 }
310
ff7c6d11
XL
311 pub struct dl_phdr_info {
312 #[cfg(target_pointer_width = "64")]
313 pub dlpi_addr: Elf64_Addr,
314 #[cfg(target_pointer_width = "32")]
315 pub dlpi_addr: Elf32_Addr,
316
317 pub dlpi_name: *const ::c_char,
318
319 #[cfg(target_pointer_width = "64")]
320 pub dlpi_phdr: *const Elf64_Phdr,
321 #[cfg(target_pointer_width = "32")]
322 pub dlpi_phdr: *const Elf32_Phdr,
323
324 #[cfg(target_pointer_width = "64")]
325 pub dlpi_phnum: Elf64_Half,
326 #[cfg(target_pointer_width = "32")]
327 pub dlpi_phnum: Elf32_Half,
328
6a06907d
XL
329 // As of uClibc 1.0.36, the following fields are
330 // gated behind a "#if 0" block which always evaluates
331 // to false. So I'm just removing these, and if uClibc changes
332 // the #if block in the future to include the following fields, these
333 // will probably need including here. tsidea, skrap
334 #[cfg(not(target_env = "uclibc"))]
ff7c6d11 335 pub dlpi_adds: ::c_ulonglong,
6a06907d 336 #[cfg(not(target_env = "uclibc"))]
ff7c6d11 337 pub dlpi_subs: ::c_ulonglong,
6a06907d 338 #[cfg(not(target_env = "uclibc"))]
ff7c6d11 339 pub dlpi_tls_modid: ::size_t,
6a06907d 340 #[cfg(not(target_env = "uclibc"))]
ff7c6d11
XL
341 pub dlpi_tls_data: *mut ::c_void,
342 }
343
69743fb6
XL
344 pub struct Elf32_Ehdr {
345 pub e_ident: [::c_uchar; 16],
346 pub e_type: Elf32_Half,
347 pub e_machine: Elf32_Half,
348 pub e_version: Elf32_Word,
349 pub e_entry: Elf32_Addr,
350 pub e_phoff: Elf32_Off,
351 pub e_shoff: Elf32_Off,
352 pub e_flags: Elf32_Word,
353 pub e_ehsize: Elf32_Half,
354 pub e_phentsize: Elf32_Half,
355 pub e_phnum: Elf32_Half,
356 pub e_shentsize: Elf32_Half,
357 pub e_shnum: Elf32_Half,
358 pub e_shstrndx: Elf32_Half,
359 }
360
361 pub struct Elf64_Ehdr {
362 pub e_ident: [::c_uchar; 16],
363 pub e_type: Elf64_Half,
364 pub e_machine: Elf64_Half,
365 pub e_version: Elf64_Word,
366 pub e_entry: Elf64_Addr,
367 pub e_phoff: Elf64_Off,
368 pub e_shoff: Elf64_Off,
369 pub e_flags: Elf64_Word,
370 pub e_ehsize: Elf64_Half,
371 pub e_phentsize: Elf64_Half,
372 pub e_phnum: Elf64_Half,
373 pub e_shentsize: Elf64_Half,
374 pub e_shnum: Elf64_Half,
375 pub e_shstrndx: Elf64_Half,
376 }
377
378 pub struct Elf32_Sym {
379 pub st_name: Elf32_Word,
380 pub st_value: Elf32_Addr,
381 pub st_size: Elf32_Word,
382 pub st_info: ::c_uchar,
383 pub st_other: ::c_uchar,
384 pub st_shndx: Elf32_Section,
385 }
386
387 pub struct Elf64_Sym {
388 pub st_name: Elf64_Word,
389 pub st_info: ::c_uchar,
390 pub st_other: ::c_uchar,
391 pub st_shndx: Elf64_Section,
392 pub st_value: Elf64_Addr,
393 pub st_size: Elf64_Xword,
394 }
395
ff7c6d11
XL
396 pub struct Elf32_Phdr {
397 pub p_type: Elf32_Word,
398 pub p_offset: Elf32_Off,
399 pub p_vaddr: Elf32_Addr,
400 pub p_paddr: Elf32_Addr,
401 pub p_filesz: Elf32_Word,
402 pub p_memsz: Elf32_Word,
403 pub p_flags: Elf32_Word,
404 pub p_align: Elf32_Word,
405 }
406
407 pub struct Elf64_Phdr {
408 pub p_type: Elf64_Word,
409 pub p_flags: Elf64_Word,
410 pub p_offset: Elf64_Off,
411 pub p_vaddr: Elf64_Addr,
412 pub p_paddr: Elf64_Addr,
413 pub p_filesz: Elf64_Xword,
414 pub p_memsz: Elf64_Xword,
415 pub p_align: Elf64_Xword,
416 }
2c00a5a8 417
69743fb6
XL
418 pub struct Elf32_Shdr {
419 pub sh_name: Elf32_Word,
420 pub sh_type: Elf32_Word,
421 pub sh_flags: Elf32_Word,
422 pub sh_addr: Elf32_Addr,
423 pub sh_offset: Elf32_Off,
424 pub sh_size: Elf32_Word,
425 pub sh_link: Elf32_Word,
426 pub sh_info: Elf32_Word,
427 pub sh_addralign: Elf32_Word,
428 pub sh_entsize: Elf32_Word,
429 }
430
431 pub struct Elf64_Shdr {
432 pub sh_name: Elf64_Word,
433 pub sh_type: Elf64_Word,
434 pub sh_flags: Elf64_Xword,
435 pub sh_addr: Elf64_Addr,
436 pub sh_offset: Elf64_Off,
437 pub sh_size: Elf64_Xword,
438 pub sh_link: Elf64_Word,
439 pub sh_info: Elf64_Word,
440 pub sh_addralign: Elf64_Xword,
441 pub sh_entsize: Elf64_Xword,
442 }
443
2c00a5a8
XL
444 pub struct ucred {
445 pub pid: ::pid_t,
446 pub uid: ::uid_t,
447 pub gid: ::gid_t,
448 }
449
450 pub struct mntent {
451 pub mnt_fsname: *mut ::c_char,
452 pub mnt_dir: *mut ::c_char,
453 pub mnt_type: *mut ::c_char,
454 pub mnt_opts: *mut ::c_char,
455 pub mnt_freq: ::c_int,
456 pub mnt_passno: ::c_int,
457 }
458
459 pub struct posix_spawn_file_actions_t {
460 __allocated: ::c_int,
461 __used: ::c_int,
462 __actions: *mut ::c_int,
463 __pad: [::c_int; 16],
464 }
465
466 pub struct posix_spawnattr_t {
467 __flags: ::c_short,
468 __pgrp: ::pid_t,
469 __sd: ::sigset_t,
470 __ss: ::sigset_t,
471 #[cfg(target_env = "musl")]
472 __prio: ::c_int,
473 #[cfg(not(target_env = "musl"))]
474 __sp: ::sched_param,
475 __policy: ::c_int,
476 __pad: [::c_int; 16],
477 }
478
479 pub struct genlmsghdr {
8faf50e0
XL
480 pub cmd: u8,
481 pub version: u8,
482 pub reserved: u16,
483 }
484
485 pub struct in6_pktinfo {
486 pub ipi6_addr: ::in6_addr,
487 pub ipi6_ifindex: ::c_uint,
2c00a5a8 488 }
b7449926
XL
489
490 pub struct arpd_request {
491 pub req: ::c_ushort,
492 pub ip: u32,
493 pub dev: ::c_ulong,
494 pub stamp: ::c_ulong,
495 pub updated: ::c_ulong,
496 pub ha: [::c_uchar; ::MAX_ADDR_LEN],
497 }
532ac7d7
XL
498
499 pub struct inotify_event {
500 pub wd: ::c_int,
416331ca
XL
501 pub mask: u32,
502 pub cookie: u32,
503 pub len: u32
504 }
505
ba9703b0
XL
506 pub struct fanotify_response {
507 pub fd: ::c_int,
508 pub response: __u32,
509 }
510
416331ca
XL
511 pub struct sockaddr_vm {
512 pub svm_family: ::sa_family_t,
513 pub svm_reserved1: ::c_ushort,
514 pub svm_port: ::c_uint,
515 pub svm_cid: ::c_uint,
516 pub svm_zero: [u8; 4]
532ac7d7 517 }
ba9703b0
XL
518
519 pub struct regmatch_t {
520 pub rm_so: regoff_t,
521 pub rm_eo: regoff_t,
522 }
523
524 pub struct sock_extended_err {
525 pub ee_errno: u32,
526 pub ee_origin: u8,
527 pub ee_type: u8,
528 pub ee_code: u8,
529 pub ee_pad: u8,
530 pub ee_info: u32,
531 pub ee_data: u32,
532 }
5869c6ff
XL
533
534 // linux/can.h
535 pub struct __c_anonymous_sockaddr_can_tp {
536 pub rx_id: canid_t,
537 pub tx_id: canid_t,
538 }
539
540 pub struct __c_anonymous_sockaddr_can_j1939 {
541 pub name: u64,
542 pub pgn: u32,
543 pub addr: u8,
544 }
545
546 pub struct can_filter {
547 pub can_id: canid_t,
548 pub can_mask: canid_t,
549 }
136023e0 550
5e7ed085
FG
551 // linux/can/j1939.h
552 pub struct j1939_filter {
553 pub name: name_t,
554 pub name_mask: name_t,
555 pub pgn: pgn_t,
556 pub pgn_mask: pgn_t,
557 pub addr: u8,
558 pub addr_mask: u8,
559 }
560
136023e0
XL
561 // linux/filter.h
562 pub struct sock_filter {
563 pub code: ::__u16,
564 pub jt: ::__u8,
565 pub jf: ::__u8,
566 pub k: ::__u32,
567 }
568
569 pub struct sock_fprog {
570 pub len: ::c_ushort,
571 pub filter: *mut sock_filter,
572 }
573
574 // linux/seccomp.h
575 pub struct seccomp_data {
576 pub nr: ::c_int,
577 pub arch: ::__u32,
578 pub instruction_pointer: ::__u64,
579 pub args: [::__u64; 6],
580 }
c295e0f8
XL
581
582 pub struct nlmsghdr {
583 pub nlmsg_len: u32,
584 pub nlmsg_type: u16,
585 pub nlmsg_flags: u16,
586 pub nlmsg_seq: u32,
587 pub nlmsg_pid: u32,
588 }
589
590 pub struct nlmsgerr {
591 pub error: ::c_int,
592 pub msg: nlmsghdr,
593 }
594
595 pub struct nlattr {
596 pub nla_len: u16,
597 pub nla_type: u16,
598 }
532ac7d7
XL
599}
600
e74abb32 601s_no_extra_traits! {
416331ca
XL
602 pub struct sockaddr_nl {
603 pub nl_family: ::sa_family_t,
604 nl_pad: ::c_ushort,
605 pub nl_pid: u32,
606 pub nl_groups: u32
607 }
608
532ac7d7
XL
609 pub struct dirent {
610 pub d_ino: ::ino_t,
611 pub d_off: ::off_t,
612 pub d_reclen: ::c_ushort,
613 pub d_type: ::c_uchar,
614 pub d_name: [::c_char; 256],
615 }
616
617 pub struct dirent64 {
618 pub d_ino: ::ino64_t,
619 pub d_off: ::off64_t,
620 pub d_reclen: ::c_ushort,
621 pub d_type: ::c_uchar,
622 pub d_name: [::c_char; 256],
623 }
624
625 pub struct sockaddr_alg {
626 pub salg_family: ::sa_family_t,
627 pub salg_type: [::c_uchar; 14],
628 pub salg_feat: u32,
629 pub salg_mask: u32,
630 pub salg_name: [::c_uchar; 64],
631 }
632
cdc7bbd5
XL
633 pub struct uinput_setup {
634 pub id: input_id,
635 pub name: [::c_char; UINPUT_MAX_NAME_SIZE],
636 pub ff_effects_max: ::__u32,
637 }
638
639 pub struct uinput_user_dev {
640 pub name: [::c_char; UINPUT_MAX_NAME_SIZE],
641 pub id: input_id,
642 pub ff_effects_max: ::__u32,
643 pub absmax: [::__s32; ABS_CNT],
644 pub absmin: [::__s32; ABS_CNT],
645 pub absfuzz: [::__s32; ABS_CNT],
646 pub absflat: [::__s32; ABS_CNT],
647 }
648
fc512014
XL
649 /// WARNING: The `PartialEq`, `Eq` and `Hash` implementations of this
650 /// type are unsound and will be removed in the future.
651 #[deprecated(
652 note = "this struct has unsafe trait implementations that will be \
653 removed in the future",
654 since = "0.2.80"
655 )]
532ac7d7
XL
656 pub struct af_alg_iv {
657 pub ivlen: u32,
658 pub iv: [::c_uchar; 0],
659 }
416331ca
XL
660
661 // x32 compatibility
662 // See https://sourceware.org/bugzilla/show_bug.cgi?id=21279
663 pub struct mq_attr {
664 #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
665 pub mq_flags: i64,
666 #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
667 pub mq_maxmsg: i64,
668 #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
669 pub mq_msgsize: i64,
670 #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
671 pub mq_curmsgs: i64,
672 #[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
673 pad: [i64; 4],
674
675 #[cfg(not(all(target_arch = "x86_64", target_pointer_width = "32")))]
676 pub mq_flags: ::c_long,
677 #[cfg(not(all(target_arch = "x86_64", target_pointer_width = "32")))]
678 pub mq_maxmsg: ::c_long,
679 #[cfg(not(all(target_arch = "x86_64", target_pointer_width = "32")))]
680 pub mq_msgsize: ::c_long,
681 #[cfg(not(all(target_arch = "x86_64", target_pointer_width = "32")))]
682 pub mq_curmsgs: ::c_long,
683 #[cfg(not(all(target_arch = "x86_64", target_pointer_width = "32")))]
684 pad: [::c_long; 4],
685 }
532ac7d7
XL
686}
687
923072b8
FG
688s_no_extra_traits! {
689 // linux/net_tstamp.h
690 #[allow(missing_debug_implementations)]
691 pub struct sock_txtime {
692 pub clockid: ::clockid_t,
693 pub flags: ::__u32,
3c0e092e
XL
694 }
695}
696
5869c6ff
XL
697cfg_if! {
698 if #[cfg(libc_union)] {
699 s_no_extra_traits! {
700 // linux/can.h
701 #[allow(missing_debug_implementations)]
702 pub union __c_anonymous_sockaddr_can_can_addr {
703 pub tp: __c_anonymous_sockaddr_can_tp,
704 pub j1939: __c_anonymous_sockaddr_can_j1939,
705 }
706
707 #[allow(missing_debug_implementations)]
708 pub struct sockaddr_can {
709 pub can_family: ::sa_family_t,
710 pub can_ifindex: ::c_int,
711 pub can_addr: __c_anonymous_sockaddr_can_can_addr,
712 }
713 }
714 }
715}
716
532ac7d7
XL
717cfg_if! {
718 if #[cfg(feature = "extra_traits")] {
416331ca
XL
719 impl PartialEq for sockaddr_nl {
720 fn eq(&self, other: &sockaddr_nl) -> bool {
721 self.nl_family == other.nl_family &&
722 self.nl_pid == other.nl_pid &&
723 self.nl_groups == other.nl_groups
724 }
725 }
726 impl Eq for sockaddr_nl {}
727 impl ::fmt::Debug for sockaddr_nl {
728 fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
729 f.debug_struct("sockaddr_nl")
730 .field("nl_family", &self.nl_family)
731 .field("nl_pid", &self.nl_pid)
732 .field("nl_groups", &self.nl_groups)
733 .finish()
734 }
735 }
736 impl ::hash::Hash for sockaddr_nl {
737 fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
738 self.nl_family.hash(state);
739 self.nl_pid.hash(state);
740 self.nl_groups.hash(state);
741 }
742 }
743
532ac7d7
XL
744 impl PartialEq for dirent {
745 fn eq(&self, other: &dirent) -> bool {
746 self.d_ino == other.d_ino
747 && self.d_off == other.d_off
748 && self.d_reclen == other.d_reclen
749 && self.d_type == other.d_type
750 && self
751 .d_name
752 .iter()
753 .zip(other.d_name.iter())
754 .all(|(a,b)| a == b)
755 }
756 }
757
758 impl Eq for dirent {}
759
760 impl ::fmt::Debug for dirent {
761 fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
762 f.debug_struct("dirent")
763 .field("d_ino", &self.d_ino)
764 .field("d_off", &self.d_off)
765 .field("d_reclen", &self.d_reclen)
766 .field("d_type", &self.d_type)
767 // FIXME: .field("d_name", &self.d_name)
768 .finish()
769 }
770 }
771
772 impl ::hash::Hash for dirent {
773 fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
774 self.d_ino.hash(state);
775 self.d_off.hash(state);
776 self.d_reclen.hash(state);
777 self.d_type.hash(state);
778 self.d_name.hash(state);
779 }
780 }
781
782 impl PartialEq for dirent64 {
783 fn eq(&self, other: &dirent64) -> bool {
784 self.d_ino == other.d_ino
785 && self.d_off == other.d_off
786 && self.d_reclen == other.d_reclen
787 && self.d_type == other.d_type
788 && self
789 .d_name
790 .iter()
791 .zip(other.d_name.iter())
792 .all(|(a,b)| a == b)
793 }
794 }
795
796 impl Eq for dirent64 {}
797
798 impl ::fmt::Debug for dirent64 {
799 fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
800 f.debug_struct("dirent64")
801 .field("d_ino", &self.d_ino)
802 .field("d_off", &self.d_off)
803 .field("d_reclen", &self.d_reclen)
804 .field("d_type", &self.d_type)
805 // FIXME: .field("d_name", &self.d_name)
806 .finish()
807 }
808 }
809
810 impl ::hash::Hash for dirent64 {
811 fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
812 self.d_ino.hash(state);
813 self.d_off.hash(state);
814 self.d_reclen.hash(state);
815 self.d_type.hash(state);
816 self.d_name.hash(state);
817 }
818 }
819
820 impl PartialEq for pthread_cond_t {
821 fn eq(&self, other: &pthread_cond_t) -> bool {
822 self.size.iter().zip(other.size.iter()).all(|(a,b)| a == b)
823 }
824 }
825
826 impl Eq for pthread_cond_t {}
827
828 impl ::fmt::Debug for pthread_cond_t {
829 fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
830 f.debug_struct("pthread_cond_t")
831 // FIXME: .field("size", &self.size)
832 .finish()
833 }
834 }
835
836 impl ::hash::Hash for pthread_cond_t {
837 fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
838 self.size.hash(state);
839 }
840 }
841
842 impl PartialEq for pthread_mutex_t {
843 fn eq(&self, other: &pthread_mutex_t) -> bool {
844 self.size.iter().zip(other.size.iter()).all(|(a,b)| a == b)
845 }
846 }
847
848 impl Eq for pthread_mutex_t {}
849
850 impl ::fmt::Debug for pthread_mutex_t {
851 fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
852 f.debug_struct("pthread_mutex_t")
853 // FIXME: .field("size", &self.size)
854 .finish()
855 }
856 }
857
858 impl ::hash::Hash for pthread_mutex_t {
859 fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
860 self.size.hash(state);
861 }
862 }
863
864 impl PartialEq for pthread_rwlock_t {
865 fn eq(&self, other: &pthread_rwlock_t) -> bool {
866 self.size.iter().zip(other.size.iter()).all(|(a,b)| a == b)
867 }
868 }
869
870 impl Eq for pthread_rwlock_t {}
871
872 impl ::fmt::Debug for pthread_rwlock_t {
873 fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
874 f.debug_struct("pthread_rwlock_t")
875 // FIXME: .field("size", &self.size)
876 .finish()
877 }
878 }
879
880 impl ::hash::Hash for pthread_rwlock_t {
881 fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
882 self.size.hash(state);
883 }
884 }
885
886 impl PartialEq for sockaddr_alg {
887 fn eq(&self, other: &sockaddr_alg) -> bool {
888 self.salg_family == other.salg_family
889 && self
890 .salg_type
891 .iter()
892 .zip(other.salg_type.iter())
893 .all(|(a, b)| a == b)
894 && self.salg_feat == other.salg_feat
895 && self.salg_mask == other.salg_mask
896 && self
897 .salg_name
898 .iter()
899 .zip(other.salg_name.iter())
900 .all(|(a, b)| a == b)
901 }
902 }
903
904 impl Eq for sockaddr_alg {}
905
906 impl ::fmt::Debug for sockaddr_alg {
907 fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
908 f.debug_struct("sockaddr_alg")
909 .field("salg_family", &self.salg_family)
910 .field("salg_type", &self.salg_type)
911 .field("salg_feat", &self.salg_feat)
912 .field("salg_mask", &self.salg_mask)
913 .field("salg_name", &&self.salg_name[..])
914 .finish()
915 }
916 }
917
918 impl ::hash::Hash for sockaddr_alg {
919 fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
920 self.salg_family.hash(state);
921 self.salg_type.hash(state);
922 self.salg_feat.hash(state);
923 self.salg_mask.hash(state);
924 self.salg_name.hash(state);
925 }
926 }
927
cdc7bbd5
XL
928 impl PartialEq for uinput_setup {
929 fn eq(&self, other: &uinput_setup) -> bool {
930 self.id == other.id
931 && self.name[..] == other.name[..]
932 && self.ff_effects_max == other.ff_effects_max
933 }
934 }
935 impl Eq for uinput_setup {}
936
937 impl ::fmt::Debug for uinput_setup {
938 fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
939 f.debug_struct("uinput_setup")
940 .field("id", &self.id)
941 .field("name", &&self.name[..])
942 .field("ff_effects_max", &self.ff_effects_max)
943 .finish()
944 }
945 }
946
947 impl ::hash::Hash for uinput_setup {
948 fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
949 self.id.hash(state);
950 self.name.hash(state);
951 self.ff_effects_max.hash(state);
952 }
953 }
954
955 impl PartialEq for uinput_user_dev {
956 fn eq(&self, other: &uinput_user_dev) -> bool {
957 self.name[..] == other.name[..]
958 && self.id == other.id
959 && self.ff_effects_max == other.ff_effects_max
960 && self.absmax[..] == other.absmax[..]
961 && self.absmin[..] == other.absmin[..]
962 && self.absfuzz[..] == other.absfuzz[..]
963 && self.absflat[..] == other.absflat[..]
964 }
965 }
966 impl Eq for uinput_user_dev {}
967
968 impl ::fmt::Debug for uinput_user_dev {
969 fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
970 f.debug_struct("uinput_setup")
971 .field("name", &&self.name[..])
972 .field("id", &self.id)
973 .field("ff_effects_max", &self.ff_effects_max)
974 .field("absmax", &&self.absmax[..])
975 .field("absmin", &&self.absmin[..])
976 .field("absfuzz", &&self.absfuzz[..])
977 .field("absflat", &&self.absflat[..])
978 .finish()
979 }
980 }
981
982 impl ::hash::Hash for uinput_user_dev {
983 fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
984 self.name.hash(state);
985 self.id.hash(state);
986 self.ff_effects_max.hash(state);
987 self.absmax.hash(state);
988 self.absmin.hash(state);
989 self.absfuzz.hash(state);
990 self.absflat.hash(state);
991 }
992 }
993
fc512014 994 #[allow(deprecated)]
532ac7d7
XL
995 impl af_alg_iv {
996 fn as_slice(&self) -> &[u8] {
997 unsafe {
998 ::core::slice::from_raw_parts(
999 self.iv.as_ptr(),
1000 self.ivlen as usize
1001 )
1002 }
1003 }
1004 }
1005
fc512014 1006 #[allow(deprecated)]
532ac7d7
XL
1007 impl PartialEq for af_alg_iv {
1008 fn eq(&self, other: &af_alg_iv) -> bool {
1009 *self.as_slice() == *other.as_slice()
1010 }
1011 }
1012
fc512014 1013 #[allow(deprecated)]
532ac7d7
XL
1014 impl Eq for af_alg_iv {}
1015
fc512014 1016 #[allow(deprecated)]
532ac7d7
XL
1017 impl ::fmt::Debug for af_alg_iv {
1018 fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
1019 f.debug_struct("af_alg_iv")
fc512014 1020 .field("ivlen", &self.ivlen)
532ac7d7
XL
1021 .finish()
1022 }
1023 }
1024
fc512014 1025 #[allow(deprecated)]
532ac7d7
XL
1026 impl ::hash::Hash for af_alg_iv {
1027 fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
1028 self.as_slice().hash(state);
1029 }
1030 }
416331ca
XL
1031
1032 impl PartialEq for mq_attr {
1033 fn eq(&self, other: &mq_attr) -> bool {
1034 self.mq_flags == other.mq_flags &&
1035 self.mq_maxmsg == other.mq_maxmsg &&
1036 self.mq_msgsize == other.mq_msgsize &&
1037 self.mq_curmsgs == other.mq_curmsgs
1038 }
1039 }
1040 impl Eq for mq_attr {}
1041 impl ::fmt::Debug for mq_attr {
1042 fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
1043 f.debug_struct("mq_attr")
1044 .field("mq_flags", &self.mq_flags)
1045 .field("mq_maxmsg", &self.mq_maxmsg)
1046 .field("mq_msgsize", &self.mq_msgsize)
1047 .field("mq_curmsgs", &self.mq_curmsgs)
1048 .finish()
1049 }
1050 }
1051 impl ::hash::Hash for mq_attr {
1052 fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
1053 self.mq_flags.hash(state);
1054 self.mq_maxmsg.hash(state);
1055 self.mq_msgsize.hash(state);
1056 self.mq_curmsgs.hash(state);
1057 }
1058 }
532ac7d7 1059 }
476ff2be
SL
1060}
1061
6a06907d
XL
1062cfg_if! {
1063 if #[cfg(any(target_env = "gnu", target_env = "musl"))] {
1064 pub const ABDAY_1: ::nl_item = 0x20000;
1065 pub const ABDAY_2: ::nl_item = 0x20001;
1066 pub const ABDAY_3: ::nl_item = 0x20002;
1067 pub const ABDAY_4: ::nl_item = 0x20003;
1068 pub const ABDAY_5: ::nl_item = 0x20004;
1069 pub const ABDAY_6: ::nl_item = 0x20005;
1070 pub const ABDAY_7: ::nl_item = 0x20006;
1071
1072 pub const DAY_1: ::nl_item = 0x20007;
1073 pub const DAY_2: ::nl_item = 0x20008;
1074 pub const DAY_3: ::nl_item = 0x20009;
1075 pub const DAY_4: ::nl_item = 0x2000A;
1076 pub const DAY_5: ::nl_item = 0x2000B;
1077 pub const DAY_6: ::nl_item = 0x2000C;
1078 pub const DAY_7: ::nl_item = 0x2000D;
1079
1080 pub const ABMON_1: ::nl_item = 0x2000E;
1081 pub const ABMON_2: ::nl_item = 0x2000F;
1082 pub const ABMON_3: ::nl_item = 0x20010;
1083 pub const ABMON_4: ::nl_item = 0x20011;
1084 pub const ABMON_5: ::nl_item = 0x20012;
1085 pub const ABMON_6: ::nl_item = 0x20013;
1086 pub const ABMON_7: ::nl_item = 0x20014;
1087 pub const ABMON_8: ::nl_item = 0x20015;
1088 pub const ABMON_9: ::nl_item = 0x20016;
1089 pub const ABMON_10: ::nl_item = 0x20017;
1090 pub const ABMON_11: ::nl_item = 0x20018;
1091 pub const ABMON_12: ::nl_item = 0x20019;
1092
1093 pub const MON_1: ::nl_item = 0x2001A;
1094 pub const MON_2: ::nl_item = 0x2001B;
1095 pub const MON_3: ::nl_item = 0x2001C;
1096 pub const MON_4: ::nl_item = 0x2001D;
1097 pub const MON_5: ::nl_item = 0x2001E;
1098 pub const MON_6: ::nl_item = 0x2001F;
1099 pub const MON_7: ::nl_item = 0x20020;
1100 pub const MON_8: ::nl_item = 0x20021;
1101 pub const MON_9: ::nl_item = 0x20022;
1102 pub const MON_10: ::nl_item = 0x20023;
1103 pub const MON_11: ::nl_item = 0x20024;
1104 pub const MON_12: ::nl_item = 0x20025;
1105
1106 pub const AM_STR: ::nl_item = 0x20026;
1107 pub const PM_STR: ::nl_item = 0x20027;
1108
1109 pub const D_T_FMT: ::nl_item = 0x20028;
1110 pub const D_FMT: ::nl_item = 0x20029;
1111 pub const T_FMT: ::nl_item = 0x2002A;
1112 pub const T_FMT_AMPM: ::nl_item = 0x2002B;
1113
1114 pub const ERA: ::nl_item = 0x2002C;
1115 pub const ERA_D_FMT: ::nl_item = 0x2002E;
1116 pub const ALT_DIGITS: ::nl_item = 0x2002F;
1117 pub const ERA_D_T_FMT: ::nl_item = 0x20030;
1118 pub const ERA_T_FMT: ::nl_item = 0x20031;
1119
1120 pub const CODESET: ::nl_item = 14;
1121 pub const CRNCYSTR: ::nl_item = 0x4000F;
1122 pub const RADIXCHAR: ::nl_item = 0x10000;
1123 pub const THOUSEP: ::nl_item = 0x10001;
1124 pub const YESEXPR: ::nl_item = 0x50000;
1125 pub const NOEXPR: ::nl_item = 0x50001;
1126 pub const YESSTR: ::nl_item = 0x50002;
1127 pub const NOSTR: ::nl_item = 0x50003;
1128 }
1129}
476ff2be 1130
6a06907d 1131pub const RUSAGE_CHILDREN: ::c_int = -1;
476ff2be
SL
1132pub const L_tmpnam: ::c_uint = 20;
1133pub const _PC_LINK_MAX: ::c_int = 0;
1134pub const _PC_MAX_CANON: ::c_int = 1;
1135pub const _PC_MAX_INPUT: ::c_int = 2;
1136pub const _PC_NAME_MAX: ::c_int = 3;
1137pub const _PC_PATH_MAX: ::c_int = 4;
1138pub const _PC_PIPE_BUF: ::c_int = 5;
1139pub const _PC_CHOWN_RESTRICTED: ::c_int = 6;
1140pub const _PC_NO_TRUNC: ::c_int = 7;
1141pub const _PC_VDISABLE: ::c_int = 8;
041b39d2
XL
1142pub const _PC_SYNC_IO: ::c_int = 9;
1143pub const _PC_ASYNC_IO: ::c_int = 10;
1144pub const _PC_PRIO_IO: ::c_int = 11;
1145pub const _PC_SOCK_MAXBUF: ::c_int = 12;
1146pub const _PC_FILESIZEBITS: ::c_int = 13;
1147pub const _PC_REC_INCR_XFER_SIZE: ::c_int = 14;
1148pub const _PC_REC_MAX_XFER_SIZE: ::c_int = 15;
1149pub const _PC_REC_MIN_XFER_SIZE: ::c_int = 16;
1150pub const _PC_REC_XFER_ALIGN: ::c_int = 17;
1151pub const _PC_ALLOC_SIZE_MIN: ::c_int = 18;
1152pub const _PC_SYMLINK_MAX: ::c_int = 19;
1153pub const _PC_2_SYMLINKS: ::c_int = 20;
476ff2be 1154
416331ca
XL
1155pub const MS_NOUSER: ::c_ulong = 0xffffffff80000000;
1156
476ff2be
SL
1157pub const _SC_ARG_MAX: ::c_int = 0;
1158pub const _SC_CHILD_MAX: ::c_int = 1;
1159pub const _SC_CLK_TCK: ::c_int = 2;
1160pub const _SC_NGROUPS_MAX: ::c_int = 3;
1161pub const _SC_OPEN_MAX: ::c_int = 4;
1162pub const _SC_STREAM_MAX: ::c_int = 5;
1163pub const _SC_TZNAME_MAX: ::c_int = 6;
1164pub const _SC_JOB_CONTROL: ::c_int = 7;
1165pub const _SC_SAVED_IDS: ::c_int = 8;
1166pub const _SC_REALTIME_SIGNALS: ::c_int = 9;
1167pub const _SC_PRIORITY_SCHEDULING: ::c_int = 10;
1168pub const _SC_TIMERS: ::c_int = 11;
1169pub const _SC_ASYNCHRONOUS_IO: ::c_int = 12;
1170pub const _SC_PRIORITIZED_IO: ::c_int = 13;
1171pub const _SC_SYNCHRONIZED_IO: ::c_int = 14;
1172pub const _SC_FSYNC: ::c_int = 15;
1173pub const _SC_MAPPED_FILES: ::c_int = 16;
1174pub const _SC_MEMLOCK: ::c_int = 17;
1175pub const _SC_MEMLOCK_RANGE: ::c_int = 18;
1176pub const _SC_MEMORY_PROTECTION: ::c_int = 19;
1177pub const _SC_MESSAGE_PASSING: ::c_int = 20;
1178pub const _SC_SEMAPHORES: ::c_int = 21;
1179pub const _SC_SHARED_MEMORY_OBJECTS: ::c_int = 22;
1180pub const _SC_AIO_LISTIO_MAX: ::c_int = 23;
1181pub const _SC_AIO_MAX: ::c_int = 24;
1182pub const _SC_AIO_PRIO_DELTA_MAX: ::c_int = 25;
1183pub const _SC_DELAYTIMER_MAX: ::c_int = 26;
1184pub const _SC_MQ_OPEN_MAX: ::c_int = 27;
1185pub const _SC_MQ_PRIO_MAX: ::c_int = 28;
1186pub const _SC_VERSION: ::c_int = 29;
1187pub const _SC_PAGESIZE: ::c_int = 30;
1188pub const _SC_PAGE_SIZE: ::c_int = _SC_PAGESIZE;
1189pub const _SC_RTSIG_MAX: ::c_int = 31;
1190pub const _SC_SEM_NSEMS_MAX: ::c_int = 32;
1191pub const _SC_SEM_VALUE_MAX: ::c_int = 33;
1192pub const _SC_SIGQUEUE_MAX: ::c_int = 34;
1193pub const _SC_TIMER_MAX: ::c_int = 35;
1194pub const _SC_BC_BASE_MAX: ::c_int = 36;
1195pub const _SC_BC_DIM_MAX: ::c_int = 37;
1196pub const _SC_BC_SCALE_MAX: ::c_int = 38;
1197pub const _SC_BC_STRING_MAX: ::c_int = 39;
1198pub const _SC_COLL_WEIGHTS_MAX: ::c_int = 40;
1199pub const _SC_EXPR_NEST_MAX: ::c_int = 42;
1200pub const _SC_LINE_MAX: ::c_int = 43;
1201pub const _SC_RE_DUP_MAX: ::c_int = 44;
1202pub const _SC_2_VERSION: ::c_int = 46;
1203pub const _SC_2_C_BIND: ::c_int = 47;
1204pub const _SC_2_C_DEV: ::c_int = 48;
1205pub const _SC_2_FORT_DEV: ::c_int = 49;
1206pub const _SC_2_FORT_RUN: ::c_int = 50;
1207pub const _SC_2_SW_DEV: ::c_int = 51;
1208pub const _SC_2_LOCALEDEF: ::c_int = 52;
041b39d2 1209pub const _SC_UIO_MAXIOV: ::c_int = 60;
476ff2be
SL
1210pub const _SC_IOV_MAX: ::c_int = 60;
1211pub const _SC_THREADS: ::c_int = 67;
1212pub const _SC_THREAD_SAFE_FUNCTIONS: ::c_int = 68;
1213pub const _SC_GETGR_R_SIZE_MAX: ::c_int = 69;
1214pub const _SC_GETPW_R_SIZE_MAX: ::c_int = 70;
1215pub const _SC_LOGIN_NAME_MAX: ::c_int = 71;
1216pub const _SC_TTY_NAME_MAX: ::c_int = 72;
1217pub const _SC_THREAD_DESTRUCTOR_ITERATIONS: ::c_int = 73;
1218pub const _SC_THREAD_KEYS_MAX: ::c_int = 74;
1219pub const _SC_THREAD_STACK_MIN: ::c_int = 75;
1220pub const _SC_THREAD_THREADS_MAX: ::c_int = 76;
1221pub const _SC_THREAD_ATTR_STACKADDR: ::c_int = 77;
1222pub const _SC_THREAD_ATTR_STACKSIZE: ::c_int = 78;
1223pub const _SC_THREAD_PRIORITY_SCHEDULING: ::c_int = 79;
1224pub const _SC_THREAD_PRIO_INHERIT: ::c_int = 80;
1225pub const _SC_THREAD_PRIO_PROTECT: ::c_int = 81;
041b39d2
XL
1226pub const _SC_THREAD_PROCESS_SHARED: ::c_int = 82;
1227pub const _SC_NPROCESSORS_CONF: ::c_int = 83;
476ff2be 1228pub const _SC_NPROCESSORS_ONLN: ::c_int = 84;
041b39d2
XL
1229pub const _SC_PHYS_PAGES: ::c_int = 85;
1230pub const _SC_AVPHYS_PAGES: ::c_int = 86;
476ff2be 1231pub const _SC_ATEXIT_MAX: ::c_int = 87;
041b39d2 1232pub const _SC_PASS_MAX: ::c_int = 88;
476ff2be
SL
1233pub const _SC_XOPEN_VERSION: ::c_int = 89;
1234pub const _SC_XOPEN_XCU_VERSION: ::c_int = 90;
1235pub const _SC_XOPEN_UNIX: ::c_int = 91;
1236pub const _SC_XOPEN_CRYPT: ::c_int = 92;
1237pub const _SC_XOPEN_ENH_I18N: ::c_int = 93;
1238pub const _SC_XOPEN_SHM: ::c_int = 94;
1239pub const _SC_2_CHAR_TERM: ::c_int = 95;
1240pub const _SC_2_UPE: ::c_int = 97;
041b39d2
XL
1241pub const _SC_XOPEN_XPG2: ::c_int = 98;
1242pub const _SC_XOPEN_XPG3: ::c_int = 99;
1243pub const _SC_XOPEN_XPG4: ::c_int = 100;
1244pub const _SC_NZERO: ::c_int = 109;
476ff2be
SL
1245pub const _SC_XBS5_ILP32_OFF32: ::c_int = 125;
1246pub const _SC_XBS5_ILP32_OFFBIG: ::c_int = 126;
041b39d2 1247pub const _SC_XBS5_LP64_OFF64: ::c_int = 127;
476ff2be
SL
1248pub const _SC_XBS5_LPBIG_OFFBIG: ::c_int = 128;
1249pub const _SC_XOPEN_LEGACY: ::c_int = 129;
1250pub const _SC_XOPEN_REALTIME: ::c_int = 130;
1251pub const _SC_XOPEN_REALTIME_THREADS: ::c_int = 131;
041b39d2
XL
1252pub const _SC_ADVISORY_INFO: ::c_int = 132;
1253pub const _SC_BARRIERS: ::c_int = 133;
1254pub const _SC_CLOCK_SELECTION: ::c_int = 137;
1255pub const _SC_CPUTIME: ::c_int = 138;
1256pub const _SC_THREAD_CPUTIME: ::c_int = 139;
1257pub const _SC_MONOTONIC_CLOCK: ::c_int = 149;
1258pub const _SC_READER_WRITER_LOCKS: ::c_int = 153;
1259pub const _SC_SPIN_LOCKS: ::c_int = 154;
1260pub const _SC_REGEXP: ::c_int = 155;
1261pub const _SC_SHELL: ::c_int = 157;
1262pub const _SC_SPAWN: ::c_int = 159;
1263pub const _SC_SPORADIC_SERVER: ::c_int = 160;
1264pub const _SC_THREAD_SPORADIC_SERVER: ::c_int = 161;
1265pub const _SC_TIMEOUTS: ::c_int = 164;
1266pub const _SC_TYPED_MEMORY_OBJECTS: ::c_int = 165;
1267pub const _SC_2_PBS: ::c_int = 168;
1268pub const _SC_2_PBS_ACCOUNTING: ::c_int = 169;
1269pub const _SC_2_PBS_LOCATE: ::c_int = 170;
1270pub const _SC_2_PBS_MESSAGE: ::c_int = 171;
1271pub const _SC_2_PBS_TRACK: ::c_int = 172;
1272pub const _SC_SYMLOOP_MAX: ::c_int = 173;
1273pub const _SC_STREAMS: ::c_int = 174;
1274pub const _SC_2_PBS_CHECKPOINT: ::c_int = 175;
1275pub const _SC_V6_ILP32_OFF32: ::c_int = 176;
1276pub const _SC_V6_ILP32_OFFBIG: ::c_int = 177;
1277pub const _SC_V6_LP64_OFF64: ::c_int = 178;
1278pub const _SC_V6_LPBIG_OFFBIG: ::c_int = 179;
476ff2be 1279pub const _SC_HOST_NAME_MAX: ::c_int = 180;
041b39d2
XL
1280pub const _SC_TRACE: ::c_int = 181;
1281pub const _SC_TRACE_EVENT_FILTER: ::c_int = 182;
1282pub const _SC_TRACE_INHERIT: ::c_int = 183;
1283pub const _SC_TRACE_LOG: ::c_int = 184;
1284pub const _SC_IPV6: ::c_int = 235;
1285pub const _SC_RAW_SOCKETS: ::c_int = 236;
1286pub const _SC_V7_ILP32_OFF32: ::c_int = 237;
1287pub const _SC_V7_ILP32_OFFBIG: ::c_int = 238;
1288pub const _SC_V7_LP64_OFF64: ::c_int = 239;
1289pub const _SC_V7_LPBIG_OFFBIG: ::c_int = 240;
1290pub const _SC_SS_REPL_MAX: ::c_int = 241;
1291pub const _SC_TRACE_EVENT_NAME_MAX: ::c_int = 242;
1292pub const _SC_TRACE_NAME_MAX: ::c_int = 243;
1293pub const _SC_TRACE_SYS_MAX: ::c_int = 244;
1294pub const _SC_TRACE_USER_EVENT_MAX: ::c_int = 245;
1295pub const _SC_XOPEN_STREAMS: ::c_int = 246;
1296pub const _SC_THREAD_ROBUST_PRIO_INHERIT: ::c_int = 247;
1297pub const _SC_THREAD_ROBUST_PRIO_PROTECT: ::c_int = 248;
476ff2be
SL
1298
1299pub const RLIM_SAVED_MAX: ::rlim_t = RLIM_INFINITY;
1300pub const RLIM_SAVED_CUR: ::rlim_t = RLIM_INFINITY;
1301
cdc7bbd5
XL
1302pub const AT_NULL: ::c_ulong = 0;
1303pub const AT_IGNORE: ::c_ulong = 1;
1304pub const AT_EXECFD: ::c_ulong = 2;
1305pub const AT_PHDR: ::c_ulong = 3;
1306pub const AT_PHENT: ::c_ulong = 4;
1307pub const AT_PHNUM: ::c_ulong = 5;
1308pub const AT_PAGESZ: ::c_ulong = 6;
1309pub const AT_BASE: ::c_ulong = 7;
1310pub const AT_FLAGS: ::c_ulong = 8;
1311pub const AT_ENTRY: ::c_ulong = 9;
1312pub const AT_NOTELF: ::c_ulong = 10;
1313pub const AT_UID: ::c_ulong = 11;
1314pub const AT_EUID: ::c_ulong = 12;
1315pub const AT_GID: ::c_ulong = 13;
1316pub const AT_EGID: ::c_ulong = 14;
1317pub const AT_PLATFORM: ::c_ulong = 15;
1318pub const AT_HWCAP: ::c_ulong = 16;
1319pub const AT_CLKTCK: ::c_ulong = 17;
1320
1321pub const AT_SECURE: ::c_ulong = 23;
1322pub const AT_BASE_PLATFORM: ::c_ulong = 24;
1323pub const AT_RANDOM: ::c_ulong = 25;
1324pub const AT_HWCAP2: ::c_ulong = 26;
1325
1326pub const AT_EXECFN: ::c_ulong = 31;
1327
476ff2be
SL
1328pub const GLOB_ERR: ::c_int = 1 << 0;
1329pub const GLOB_MARK: ::c_int = 1 << 1;
1330pub const GLOB_NOSORT: ::c_int = 1 << 2;
1331pub const GLOB_DOOFFS: ::c_int = 1 << 3;
1332pub const GLOB_NOCHECK: ::c_int = 1 << 4;
1333pub const GLOB_APPEND: ::c_int = 1 << 5;
1334pub const GLOB_NOESCAPE: ::c_int = 1 << 6;
1335
1336pub const GLOB_NOSPACE: ::c_int = 1;
1337pub const GLOB_ABORTED: ::c_int = 2;
1338pub const GLOB_NOMATCH: ::c_int = 3;
1339
1340pub const POSIX_MADV_NORMAL: ::c_int = 0;
1341pub const POSIX_MADV_RANDOM: ::c_int = 1;
1342pub const POSIX_MADV_SEQUENTIAL: ::c_int = 2;
1343pub const POSIX_MADV_WILLNEED: ::c_int = 3;
3c0e092e 1344pub const POSIX_SPAWN_USEVFORK: ::c_int = 64;
476ff2be
SL
1345
1346pub const S_IEXEC: mode_t = 64;
1347pub const S_IWRITE: mode_t = 128;
1348pub const S_IREAD: mode_t = 256;
1349
1350pub const F_LOCK: ::c_int = 1;
1351pub const F_TEST: ::c_int = 3;
1352pub const F_TLOCK: ::c_int = 2;
1353pub const F_ULOCK: ::c_int = 0;
1354
416331ca
XL
1355pub const F_SEAL_FUTURE_WRITE: ::c_int = 0x0010;
1356
ea8adc8c
XL
1357pub const IFF_LOWER_UP: ::c_int = 0x10000;
1358pub const IFF_DORMANT: ::c_int = 0x20000;
1359pub const IFF_ECHO: ::c_int = 0x40000;
1360
416331ca
XL
1361// linux/if_addr.h
1362pub const IFA_UNSPEC: ::c_ushort = 0;
1363pub const IFA_ADDRESS: ::c_ushort = 1;
1364pub const IFA_LOCAL: ::c_ushort = 2;
1365pub const IFA_LABEL: ::c_ushort = 3;
1366pub const IFA_BROADCAST: ::c_ushort = 4;
1367pub const IFA_ANYCAST: ::c_ushort = 5;
1368pub const IFA_CACHEINFO: ::c_ushort = 6;
1369pub const IFA_MULTICAST: ::c_ushort = 7;
1370
1371pub const IFA_F_SECONDARY: u32 = 0x01;
1372pub const IFA_F_TEMPORARY: u32 = 0x01;
1373pub const IFA_F_NODAD: u32 = 0x02;
1374pub const IFA_F_OPTIMISTIC: u32 = 0x04;
1375pub const IFA_F_DADFAILED: u32 = 0x08;
1376pub const IFA_F_HOMEADDRESS: u32 = 0x10;
1377pub const IFA_F_DEPRECATED: u32 = 0x20;
1378pub const IFA_F_TENTATIVE: u32 = 0x40;
1379pub const IFA_F_PERMANENT: u32 = 0x80;
1380
1381// linux/if_link.h
1382pub const IFLA_UNSPEC: ::c_ushort = 0;
1383pub const IFLA_ADDRESS: ::c_ushort = 1;
1384pub const IFLA_BROADCAST: ::c_ushort = 2;
1385pub const IFLA_IFNAME: ::c_ushort = 3;
1386pub const IFLA_MTU: ::c_ushort = 4;
1387pub const IFLA_LINK: ::c_ushort = 5;
1388pub const IFLA_QDISC: ::c_ushort = 6;
1389pub const IFLA_STATS: ::c_ushort = 7;
dfeec247
XL
1390pub const IFLA_COST: ::c_ushort = 8;
1391pub const IFLA_PRIORITY: ::c_ushort = 9;
1392pub const IFLA_MASTER: ::c_ushort = 10;
1393pub const IFLA_WIRELESS: ::c_ushort = 11;
1394pub const IFLA_PROTINFO: ::c_ushort = 12;
1395pub const IFLA_TXQLEN: ::c_ushort = 13;
1396pub const IFLA_MAP: ::c_ushort = 14;
1397pub const IFLA_WEIGHT: ::c_ushort = 15;
1398pub const IFLA_OPERSTATE: ::c_ushort = 16;
1399pub const IFLA_LINKMODE: ::c_ushort = 17;
1400pub const IFLA_LINKINFO: ::c_ushort = 18;
1401pub const IFLA_NET_NS_PID: ::c_ushort = 19;
1402pub const IFLA_IFALIAS: ::c_ushort = 20;
1403pub const IFLA_NUM_VF: ::c_ushort = 21;
1404pub const IFLA_VFINFO_LIST: ::c_ushort = 22;
1405pub const IFLA_STATS64: ::c_ushort = 23;
1406pub const IFLA_VF_PORTS: ::c_ushort = 24;
1407pub const IFLA_PORT_SELF: ::c_ushort = 25;
1408pub const IFLA_AF_SPEC: ::c_ushort = 26;
1409pub const IFLA_GROUP: ::c_ushort = 27;
1410pub const IFLA_NET_NS_FD: ::c_ushort = 28;
1411pub const IFLA_EXT_MASK: ::c_ushort = 29;
1412pub const IFLA_PROMISCUITY: ::c_ushort = 30;
1413pub const IFLA_NUM_TX_QUEUES: ::c_ushort = 31;
1414pub const IFLA_NUM_RX_QUEUES: ::c_ushort = 32;
1415pub const IFLA_CARRIER: ::c_ushort = 33;
1416pub const IFLA_PHYS_PORT_ID: ::c_ushort = 34;
1417pub const IFLA_CARRIER_CHANGES: ::c_ushort = 35;
1418pub const IFLA_PHYS_SWITCH_ID: ::c_ushort = 36;
1419pub const IFLA_LINK_NETNSID: ::c_ushort = 37;
1420pub const IFLA_PHYS_PORT_NAME: ::c_ushort = 38;
1421pub const IFLA_PROTO_DOWN: ::c_ushort = 39;
5869c6ff
XL
1422pub const IFLA_GSO_MAX_SEGS: ::c_ushort = 40;
1423pub const IFLA_GSO_MAX_SIZE: ::c_ushort = 41;
1424pub const IFLA_PAD: ::c_ushort = 42;
1425pub const IFLA_XDP: ::c_ushort = 43;
1426pub const IFLA_EVENT: ::c_ushort = 44;
1427pub const IFLA_NEW_NETNSID: ::c_ushort = 45;
1428pub const IFLA_IF_NETNSID: ::c_ushort = 46;
1429pub const IFLA_TARGET_NETNSID: ::c_ushort = IFLA_IF_NETNSID;
1430pub const IFLA_CARRIER_UP_COUNT: ::c_ushort = 47;
1431pub const IFLA_CARRIER_DOWN_COUNT: ::c_ushort = 48;
1432pub const IFLA_NEW_IFINDEX: ::c_ushort = 49;
1433pub const IFLA_MIN_MTU: ::c_ushort = 50;
1434pub const IFLA_MAX_MTU: ::c_ushort = 51;
1435pub const IFLA_PROP_LIST: ::c_ushort = 52;
1436pub const IFLA_ALT_IFNAME: ::c_ushort = 53;
1437pub const IFLA_PERM_ADDRESS: ::c_ushort = 54;
1438pub const IFLA_PROTO_DOWN_REASON: ::c_ushort = 55;
dfeec247
XL
1439
1440pub const IFLA_INFO_UNSPEC: ::c_ushort = 0;
1441pub const IFLA_INFO_KIND: ::c_ushort = 1;
1442pub const IFLA_INFO_DATA: ::c_ushort = 2;
1443pub const IFLA_INFO_XSTATS: ::c_ushort = 3;
1444pub const IFLA_INFO_SLAVE_KIND: ::c_ushort = 4;
1445pub const IFLA_INFO_SLAVE_DATA: ::c_ushort = 5;
416331ca 1446
2c00a5a8 1447// linux/if_tun.h
416331ca
XL
1448pub const IFF_TUN: ::c_int = 0x0001;
1449pub const IFF_TAP: ::c_int = 0x0002;
1450pub const IFF_NO_PI: ::c_int = 0x1000;
2c00a5a8
XL
1451// Read queue size
1452pub const TUN_READQ_SIZE: ::c_short = 500;
1453// TUN device type flags: deprecated. Use IFF_TUN/IFF_TAP instead.
e74abb32
XL
1454pub const TUN_TUN_DEV: ::c_short = ::IFF_TUN as ::c_short;
1455pub const TUN_TAP_DEV: ::c_short = ::IFF_TAP as ::c_short;
2c00a5a8
XL
1456pub const TUN_TYPE_MASK: ::c_short = 0x000f;
1457// This flag has no real effect
e74abb32
XL
1458pub const IFF_ONE_QUEUE: ::c_int = 0x2000;
1459pub const IFF_VNET_HDR: ::c_int = 0x4000;
1460pub const IFF_TUN_EXCL: ::c_int = 0x8000;
1461pub const IFF_MULTI_QUEUE: ::c_int = 0x0100;
416331ca
XL
1462pub const IFF_ATTACH_QUEUE: ::c_int = 0x0200;
1463pub const IFF_DETACH_QUEUE: ::c_int = 0x0400;
2c00a5a8 1464// read-only flag
e74abb32 1465pub const IFF_PERSIST: ::c_int = 0x0800;
416331ca 1466pub const IFF_NOFILTER: ::c_int = 0x1000;
2c00a5a8 1467
6a06907d
XL
1468// Since Linux 3.1
1469pub const SEEK_DATA: ::c_int = 3;
1470pub const SEEK_HOLE: ::c_int = 4;
1471
476ff2be
SL
1472pub const ST_RDONLY: ::c_ulong = 1;
1473pub const ST_NOSUID: ::c_ulong = 2;
1474pub const ST_NODEV: ::c_ulong = 4;
1475pub const ST_NOEXEC: ::c_ulong = 8;
1476pub const ST_SYNCHRONOUS: ::c_ulong = 16;
1477pub const ST_MANDLOCK: ::c_ulong = 64;
1478pub const ST_WRITE: ::c_ulong = 128;
1479pub const ST_APPEND: ::c_ulong = 256;
1480pub const ST_IMMUTABLE: ::c_ulong = 512;
1481pub const ST_NOATIME: ::c_ulong = 1024;
1482pub const ST_NODIRATIME: ::c_ulong = 2048;
1483
1484pub const RTLD_NEXT: *mut ::c_void = -1i64 as *mut ::c_void;
1485pub const RTLD_DEFAULT: *mut ::c_void = 0i64 as *mut ::c_void;
1486pub const RTLD_NODELETE: ::c_int = 0x1000;
1487pub const RTLD_NOW: ::c_int = 0x2;
1488
ba9703b0
XL
1489pub const AT_EACCESS: ::c_int = 0x200;
1490
5e7ed085
FG
1491// linux/mempolicy.h
1492pub const MPOL_DEFAULT: ::c_int = 0;
1493pub const MPOL_PREFERRED: ::c_int = 1;
1494pub const MPOL_BIND: ::c_int = 2;
1495pub const MPOL_INTERLEAVE: ::c_int = 3;
1496pub const MPOL_LOCAL: ::c_int = 4;
1497pub const MPOL_F_NUMA_BALANCING: ::c_int = 1 << 13;
1498pub const MPOL_F_RELATIVE_NODES: ::c_int = 1 << 14;
1499pub const MPOL_F_STATIC_NODES: ::c_int = 1 << 15;
1500
b7449926
XL
1501align_const! {
1502 pub const PTHREAD_MUTEX_INITIALIZER: pthread_mutex_t = pthread_mutex_t {
1503 size: [0; __SIZEOF_PTHREAD_MUTEX_T],
1504 };
1505 pub const PTHREAD_COND_INITIALIZER: pthread_cond_t = pthread_cond_t {
1506 size: [0; __SIZEOF_PTHREAD_COND_T],
1507 };
1508 pub const PTHREAD_RWLOCK_INITIALIZER: pthread_rwlock_t = pthread_rwlock_t {
1509 size: [0; __SIZEOF_PTHREAD_RWLOCK_T],
1510 };
1511}
476ff2be
SL
1512pub const PTHREAD_MUTEX_NORMAL: ::c_int = 0;
1513pub const PTHREAD_MUTEX_RECURSIVE: ::c_int = 1;
1514pub const PTHREAD_MUTEX_ERRORCHECK: ::c_int = 2;
1515pub const PTHREAD_MUTEX_DEFAULT: ::c_int = PTHREAD_MUTEX_NORMAL;
3c0e092e
XL
1516pub const PTHREAD_MUTEX_STALLED: ::c_int = 0;
1517pub const PTHREAD_MUTEX_ROBUST: ::c_int = 1;
04454e1e
FG
1518pub const PTHREAD_PRIO_NONE: ::c_int = 0;
1519pub const PTHREAD_PRIO_INHERIT: ::c_int = 1;
1520pub const PTHREAD_PRIO_PROTECT: ::c_int = 2;
041b39d2
XL
1521pub const PTHREAD_PROCESS_PRIVATE: ::c_int = 0;
1522pub const PTHREAD_PROCESS_SHARED: ::c_int = 1;
476ff2be
SL
1523pub const __SIZEOF_PTHREAD_COND_T: usize = 48;
1524
cdc7bbd5
XL
1525pub const RENAME_NOREPLACE: ::c_uint = 1;
1526pub const RENAME_EXCHANGE: ::c_uint = 2;
1527pub const RENAME_WHITEOUT: ::c_uint = 4;
abe05a73 1528
476ff2be
SL
1529pub const SCHED_OTHER: ::c_int = 0;
1530pub const SCHED_FIFO: ::c_int = 1;
1531pub const SCHED_RR: ::c_int = 2;
1532pub const SCHED_BATCH: ::c_int = 3;
1533pub const SCHED_IDLE: ::c_int = 5;
1534
e74abb32
XL
1535pub const SCHED_RESET_ON_FORK: ::c_int = 0x40000000;
1536
3c0e092e
XL
1537pub const CLONE_PIDFD: ::c_int = 0x1000;
1538
ea8adc8c
XL
1539// netinet/in.h
1540// NOTE: These are in addition to the constants defined in src/unix/mod.rs
fc512014
XL
1541
1542/// Multipath TCP
1543pub const IPPROTO_MPTCP: ::c_int = 262;
1544#[deprecated(
1545 since = "0.2.80",
1546 note = "This value was increased in the newer kernel \
1547 and we'll change this following upstream in the future release. \
1548 See #1896 for more info."
1549)]
1550pub const IPPROTO_MAX: ::c_int = 256;
1551
476ff2be
SL
1552// System V IPC
1553pub const IPC_PRIVATE: ::key_t = 0;
1554
1555pub const IPC_CREAT: ::c_int = 0o1000;
1556pub const IPC_EXCL: ::c_int = 0o2000;
1557pub const IPC_NOWAIT: ::c_int = 0o4000;
1558
1559pub const IPC_RMID: ::c_int = 0;
1560pub const IPC_SET: ::c_int = 1;
1561pub const IPC_STAT: ::c_int = 2;
1562pub const IPC_INFO: ::c_int = 3;
1563pub const MSG_STAT: ::c_int = 11;
1564pub const MSG_INFO: ::c_int = 12;
1565
1566pub const MSG_NOERROR: ::c_int = 0o10000;
1567pub const MSG_EXCEPT: ::c_int = 0o20000;
476ff2be
SL
1568
1569pub const SHM_R: ::c_int = 0o400;
1570pub const SHM_W: ::c_int = 0o200;
1571
1572pub const SHM_RDONLY: ::c_int = 0o10000;
1573pub const SHM_RND: ::c_int = 0o20000;
1574pub const SHM_REMAP: ::c_int = 0o40000;
476ff2be
SL
1575
1576pub const SHM_LOCK: ::c_int = 11;
1577pub const SHM_UNLOCK: ::c_int = 12;
1578
1579pub const SHM_HUGETLB: ::c_int = 0o4000;
6a06907d 1580#[cfg(not(all(target_env = "uclibc", target_arch = "mips")))]
476ff2be
SL
1581pub const SHM_NORESERVE: ::c_int = 0o10000;
1582
476ff2be
SL
1583pub const QFMT_VFS_OLD: ::c_int = 1;
1584pub const QFMT_VFS_V0: ::c_int = 2;
ea8adc8c 1585pub const QFMT_VFS_V1: ::c_int = 4;
476ff2be 1586
476ff2be
SL
1587pub const EFD_SEMAPHORE: ::c_int = 0x1;
1588
476ff2be
SL
1589pub const LOG_NFACILITIES: ::c_int = 24;
1590
1591pub const SEM_FAILED: *mut ::sem_t = 0 as *mut sem_t;
1592
1593pub const RB_AUTOBOOT: ::c_int = 0x01234567u32 as i32;
1594pub const RB_HALT_SYSTEM: ::c_int = 0xcdef0123u32 as i32;
1595pub const RB_ENABLE_CAD: ::c_int = 0x89abcdefu32 as i32;
1596pub const RB_DISABLE_CAD: ::c_int = 0x00000000u32 as i32;
1597pub const RB_POWER_OFF: ::c_int = 0x4321fedcu32 as i32;
1598pub const RB_SW_SUSPEND: ::c_int = 0xd000fce2u32 as i32;
1599pub const RB_KEXEC: ::c_int = 0x45584543u32 as i32;
1600
8bb4bdeb
XL
1601pub const AI_PASSIVE: ::c_int = 0x0001;
1602pub const AI_CANONNAME: ::c_int = 0x0002;
1603pub const AI_NUMERICHOST: ::c_int = 0x0004;
1604pub const AI_V4MAPPED: ::c_int = 0x0008;
1605pub const AI_ALL: ::c_int = 0x0010;
1606pub const AI_ADDRCONFIG: ::c_int = 0x0020;
1607
1608pub const AI_NUMERICSERV: ::c_int = 0x0400;
1609
1610pub const EAI_BADFLAGS: ::c_int = -1;
1611pub const EAI_NONAME: ::c_int = -2;
1612pub const EAI_AGAIN: ::c_int = -3;
1613pub const EAI_FAIL: ::c_int = -4;
2c00a5a8 1614pub const EAI_NODATA: ::c_int = -5;
8bb4bdeb
XL
1615pub const EAI_FAMILY: ::c_int = -6;
1616pub const EAI_SOCKTYPE: ::c_int = -7;
1617pub const EAI_SERVICE: ::c_int = -8;
1618pub const EAI_MEMORY: ::c_int = -10;
2c00a5a8 1619pub const EAI_SYSTEM: ::c_int = -11;
8bb4bdeb
XL
1620pub const EAI_OVERFLOW: ::c_int = -12;
1621
1622pub const NI_NUMERICHOST: ::c_int = 1;
1623pub const NI_NUMERICSERV: ::c_int = 2;
1624pub const NI_NOFQDN: ::c_int = 4;
1625pub const NI_NAMEREQD: ::c_int = 8;
1626pub const NI_DGRAM: ::c_int = 16;
1627
476ff2be
SL
1628pub const SYNC_FILE_RANGE_WAIT_BEFORE: ::c_uint = 1;
1629pub const SYNC_FILE_RANGE_WRITE: ::c_uint = 2;
1630pub const SYNC_FILE_RANGE_WAIT_AFTER: ::c_uint = 4;
1631
6a06907d
XL
1632cfg_if! {
1633 if #[cfg(not(target_env = "uclibc"))] {
1634 pub const AIO_CANCELED: ::c_int = 0;
1635 pub const AIO_NOTCANCELED: ::c_int = 1;
1636 pub const AIO_ALLDONE: ::c_int = 2;
1637 pub const LIO_READ: ::c_int = 0;
1638 pub const LIO_WRITE: ::c_int = 1;
1639 pub const LIO_NOP: ::c_int = 2;
1640 pub const LIO_WAIT: ::c_int = 0;
1641 pub const LIO_NOWAIT: ::c_int = 1;
1642 pub const RUSAGE_THREAD: ::c_int = 1;
6a06907d
XL
1643 pub const MSG_COPY: ::c_int = 0o40000;
1644 pub const SHM_EXEC: ::c_int = 0o100000;
1645 pub const IPV6_MULTICAST_ALL: ::c_int = 29;
1646 pub const IPV6_ROUTER_ALERT_ISOLATE: ::c_int = 30;
1647 pub const PACKET_MR_UNICAST: ::c_int = 3;
1648 pub const PTRACE_EVENT_STOP: ::c_int = 128;
1649 pub const UDP_SEGMENT: ::c_int = 103;
1650 pub const UDP_GRO: ::c_int = 104;
1651 }
1652}
8bb4bdeb
XL
1653
1654pub const MREMAP_MAYMOVE: ::c_int = 1;
1655pub const MREMAP_FIXED: ::c_int = 2;
c295e0f8 1656pub const MREMAP_DONTUNMAP: ::c_int = 4;
8bb4bdeb
XL
1657
1658pub const PR_SET_PDEATHSIG: ::c_int = 1;
1659pub const PR_GET_PDEATHSIG: ::c_int = 2;
1660
1661pub const PR_GET_DUMPABLE: ::c_int = 3;
1662pub const PR_SET_DUMPABLE: ::c_int = 4;
1663
1664pub const PR_GET_UNALIGN: ::c_int = 5;
1665pub const PR_SET_UNALIGN: ::c_int = 6;
1666pub const PR_UNALIGN_NOPRINT: ::c_int = 1;
1667pub const PR_UNALIGN_SIGBUS: ::c_int = 2;
1668
1669pub const PR_GET_KEEPCAPS: ::c_int = 7;
1670pub const PR_SET_KEEPCAPS: ::c_int = 8;
1671
1672pub const PR_GET_FPEMU: ::c_int = 9;
1673pub const PR_SET_FPEMU: ::c_int = 10;
1674pub const PR_FPEMU_NOPRINT: ::c_int = 1;
1675pub const PR_FPEMU_SIGFPE: ::c_int = 2;
1676
1677pub const PR_GET_FPEXC: ::c_int = 11;
1678pub const PR_SET_FPEXC: ::c_int = 12;
1679pub const PR_FP_EXC_SW_ENABLE: ::c_int = 0x80;
1680pub const PR_FP_EXC_DIV: ::c_int = 0x010000;
1681pub const PR_FP_EXC_OVF: ::c_int = 0x020000;
1682pub const PR_FP_EXC_UND: ::c_int = 0x040000;
1683pub const PR_FP_EXC_RES: ::c_int = 0x080000;
1684pub const PR_FP_EXC_INV: ::c_int = 0x100000;
1685pub const PR_FP_EXC_DISABLED: ::c_int = 0;
1686pub const PR_FP_EXC_NONRECOV: ::c_int = 1;
1687pub const PR_FP_EXC_ASYNC: ::c_int = 2;
1688pub const PR_FP_EXC_PRECISE: ::c_int = 3;
1689
1690pub const PR_GET_TIMING: ::c_int = 13;
1691pub const PR_SET_TIMING: ::c_int = 14;
1692pub const PR_TIMING_STATISTICAL: ::c_int = 0;
1693pub const PR_TIMING_TIMESTAMP: ::c_int = 1;
1694
1695pub const PR_SET_NAME: ::c_int = 15;
1696pub const PR_GET_NAME: ::c_int = 16;
1697
1698pub const PR_GET_ENDIAN: ::c_int = 19;
1699pub const PR_SET_ENDIAN: ::c_int = 20;
1700pub const PR_ENDIAN_BIG: ::c_int = 0;
1701pub const PR_ENDIAN_LITTLE: ::c_int = 1;
1702pub const PR_ENDIAN_PPC_LITTLE: ::c_int = 2;
1703
1704pub const PR_GET_SECCOMP: ::c_int = 21;
1705pub const PR_SET_SECCOMP: ::c_int = 22;
1706
1707pub const PR_CAPBSET_READ: ::c_int = 23;
1708pub const PR_CAPBSET_DROP: ::c_int = 24;
1709
1710pub const PR_GET_TSC: ::c_int = 25;
1711pub const PR_SET_TSC: ::c_int = 26;
1712pub const PR_TSC_ENABLE: ::c_int = 1;
1713pub const PR_TSC_SIGSEGV: ::c_int = 2;
1714
1715pub const PR_GET_SECUREBITS: ::c_int = 27;
1716pub const PR_SET_SECUREBITS: ::c_int = 28;
1717
1718pub const PR_SET_TIMERSLACK: ::c_int = 29;
1719pub const PR_GET_TIMERSLACK: ::c_int = 30;
1720
1721pub const PR_TASK_PERF_EVENTS_DISABLE: ::c_int = 31;
1722pub const PR_TASK_PERF_EVENTS_ENABLE: ::c_int = 32;
1723
1724pub const PR_MCE_KILL: ::c_int = 33;
1725pub const PR_MCE_KILL_CLEAR: ::c_int = 0;
1726pub const PR_MCE_KILL_SET: ::c_int = 1;
1727
1728pub const PR_MCE_KILL_LATE: ::c_int = 0;
1729pub const PR_MCE_KILL_EARLY: ::c_int = 1;
1730pub const PR_MCE_KILL_DEFAULT: ::c_int = 2;
1731
1732pub const PR_MCE_KILL_GET: ::c_int = 34;
1733
1734pub const PR_SET_MM: ::c_int = 35;
1735pub const PR_SET_MM_START_CODE: ::c_int = 1;
1736pub const PR_SET_MM_END_CODE: ::c_int = 2;
1737pub const PR_SET_MM_START_DATA: ::c_int = 3;
1738pub const PR_SET_MM_END_DATA: ::c_int = 4;
1739pub const PR_SET_MM_START_STACK: ::c_int = 5;
1740pub const PR_SET_MM_START_BRK: ::c_int = 6;
1741pub const PR_SET_MM_BRK: ::c_int = 7;
1742pub const PR_SET_MM_ARG_START: ::c_int = 8;
1743pub const PR_SET_MM_ARG_END: ::c_int = 9;
1744pub const PR_SET_MM_ENV_START: ::c_int = 10;
1745pub const PR_SET_MM_ENV_END: ::c_int = 11;
1746pub const PR_SET_MM_AUXV: ::c_int = 12;
1747pub const PR_SET_MM_EXE_FILE: ::c_int = 13;
1748pub const PR_SET_MM_MAP: ::c_int = 14;
1749pub const PR_SET_MM_MAP_SIZE: ::c_int = 15;
1750
1751pub const PR_SET_PTRACER: ::c_int = 0x59616d61;
1752
1753pub const PR_SET_CHILD_SUBREAPER: ::c_int = 36;
1754pub const PR_GET_CHILD_SUBREAPER: ::c_int = 37;
1755
1756pub const PR_SET_NO_NEW_PRIVS: ::c_int = 38;
1757pub const PR_GET_NO_NEW_PRIVS: ::c_int = 39;
1758
1759pub const PR_GET_TID_ADDRESS: ::c_int = 40;
1760
1761pub const PR_SET_THP_DISABLE: ::c_int = 41;
1762pub const PR_GET_THP_DISABLE: ::c_int = 42;
1763
1764pub const PR_MPX_ENABLE_MANAGEMENT: ::c_int = 43;
1765pub const PR_MPX_DISABLE_MANAGEMENT: ::c_int = 44;
1766
1767pub const PR_SET_FP_MODE: ::c_int = 45;
1768pub const PR_GET_FP_MODE: ::c_int = 46;
1769pub const PR_FP_MODE_FR: ::c_int = 1 << 0;
1770pub const PR_FP_MODE_FRE: ::c_int = 1 << 1;
1771
1772pub const PR_CAP_AMBIENT: ::c_int = 47;
1773pub const PR_CAP_AMBIENT_IS_SET: ::c_int = 1;
1774pub const PR_CAP_AMBIENT_RAISE: ::c_int = 2;
1775pub const PR_CAP_AMBIENT_LOWER: ::c_int = 3;
1776pub const PR_CAP_AMBIENT_CLEAR_ALL: ::c_int = 4;
1777
04454e1e
FG
1778pub const PR_SET_VMA: ::c_int = 0x53564d41;
1779pub const PR_SET_VMA_ANON_NAME: ::c_int = 0;
1780
ff7c6d11
XL
1781pub const GRND_NONBLOCK: ::c_uint = 0x0001;
1782pub const GRND_RANDOM: ::c_uint = 0x0002;
923072b8 1783pub const GRND_INSECURE: ::c_uint = 0x0004;
ff7c6d11 1784
2c00a5a8
XL
1785pub const SECCOMP_MODE_DISABLED: ::c_uint = 0;
1786pub const SECCOMP_MODE_STRICT: ::c_uint = 1;
1787pub const SECCOMP_MODE_FILTER: ::c_uint = 2;
1788
136023e0
XL
1789pub const SECCOMP_FILTER_FLAG_TSYNC: ::c_ulong = 1;
1790pub const SECCOMP_FILTER_FLAG_LOG: ::c_ulong = 2;
1791pub const SECCOMP_FILTER_FLAG_SPEC_ALLOW: ::c_ulong = 4;
1792
1793pub const SECCOMP_RET_KILL_PROCESS: ::c_uint = 0x80000000;
1794pub const SECCOMP_RET_KILL_THREAD: ::c_uint = 0x00000000;
1795pub const SECCOMP_RET_KILL: ::c_uint = SECCOMP_RET_KILL_THREAD;
1796pub const SECCOMP_RET_TRAP: ::c_uint = 0x00030000;
1797pub const SECCOMP_RET_ERRNO: ::c_uint = 0x00050000;
1798pub const SECCOMP_RET_TRACE: ::c_uint = 0x7ff00000;
1799pub const SECCOMP_RET_LOG: ::c_uint = 0x7ffc0000;
1800pub const SECCOMP_RET_ALLOW: ::c_uint = 0x7fff0000;
1801
1802pub const SECCOMP_RET_ACTION_FULL: ::c_uint = 0xffff0000;
1803pub const SECCOMP_RET_ACTION: ::c_uint = 0x7fff0000;
1804pub const SECCOMP_RET_DATA: ::c_uint = 0x0000ffff;
1805
041b39d2
XL
1806pub const ITIMER_REAL: ::c_int = 0;
1807pub const ITIMER_VIRTUAL: ::c_int = 1;
1808pub const ITIMER_PROF: ::c_int = 2;
1809
ea8adc8c
XL
1810pub const TFD_CLOEXEC: ::c_int = O_CLOEXEC;
1811pub const TFD_NONBLOCK: ::c_int = O_NONBLOCK;
1812pub const TFD_TIMER_ABSTIME: ::c_int = 1;
1813
041b39d2
XL
1814pub const _POSIX_VDISABLE: ::cc_t = 0;
1815
3b2f2976
XL
1816pub const FALLOC_FL_KEEP_SIZE: ::c_int = 0x01;
1817pub const FALLOC_FL_PUNCH_HOLE: ::c_int = 0x02;
1818pub const FALLOC_FL_COLLAPSE_RANGE: ::c_int = 0x08;
1819pub const FALLOC_FL_ZERO_RANGE: ::c_int = 0x10;
1820pub const FALLOC_FL_INSERT_RANGE: ::c_int = 0x20;
1821pub const FALLOC_FL_UNSHARE_RANGE: ::c_int = 0x40;
1822
416331ca
XL
1823#[deprecated(
1824 since = "0.2.55",
1825 note = "ENOATTR is not available on Linux; use ENODATA instead"
1826)]
041b39d2
XL
1827pub const ENOATTR: ::c_int = ::ENODATA;
1828
ea8adc8c 1829pub const SO_ORIGINAL_DST: ::c_int = 80;
29967ef6
XL
1830
1831pub const IP_RECVFRAGSIZE: ::c_int = 25;
1832
ba9703b0 1833pub const IPV6_FLOWINFO: ::c_int = 11;
532ac7d7
XL
1834pub const IPV6_FLOWLABEL_MGR: ::c_int = 32;
1835pub const IPV6_FLOWINFO_SEND: ::c_int = 33;
29967ef6
XL
1836pub const IPV6_RECVFRAGSIZE: ::c_int = 77;
1837pub const IPV6_FREEBIND: ::c_int = 78;
532ac7d7
XL
1838pub const IPV6_FLOWINFO_FLOWLABEL: ::c_int = 0x000fffff;
1839pub const IPV6_FLOWINFO_PRIORITY: ::c_int = 0x0ff00000;
dfeec247 1840
29967ef6
XL
1841pub const IPV6_RTHDR_LOOSE: ::c_int = 0;
1842pub const IPV6_RTHDR_STRICT: ::c_int = 1;
1843
ea8adc8c 1844pub const IUTF8: ::tcflag_t = 0x00004000;
6a06907d 1845#[cfg(not(all(target_env = "uclibc", target_arch = "mips")))]
ea8adc8c 1846pub const CMSPAR: ::tcflag_t = 0o10000000000;
ff7c6d11
XL
1847
1848pub const MFD_CLOEXEC: ::c_uint = 0x0001;
1849pub const MFD_ALLOW_SEALING: ::c_uint = 0x0002;
0731742a 1850pub const MFD_HUGETLB: ::c_uint = 0x0004;
5099ac24
FG
1851pub const MFD_HUGE_64KB: ::c_uint = 0x40000000;
1852pub const MFD_HUGE_512KB: ::c_uint = 0x4c000000;
1853pub const MFD_HUGE_1MB: ::c_uint = 0x50000000;
1854pub const MFD_HUGE_2MB: ::c_uint = 0x54000000;
1855pub const MFD_HUGE_8MB: ::c_uint = 0x5c000000;
1856pub const MFD_HUGE_16MB: ::c_uint = 0x60000000;
1857pub const MFD_HUGE_32MB: ::c_uint = 0x64000000;
1858pub const MFD_HUGE_256MB: ::c_uint = 0x70000000;
1859pub const MFD_HUGE_512MB: ::c_uint = 0x74000000;
1860pub const MFD_HUGE_1GB: ::c_uint = 0x78000000;
1861pub const MFD_HUGE_2GB: ::c_uint = 0x7c000000;
1862pub const MFD_HUGE_16GB: ::c_uint = 0x88000000;
1863pub const MFD_HUGE_MASK: ::c_uint = 63;
1864pub const MFD_HUGE_SHIFT: ::c_uint = 26;
ff7c6d11 1865
3c0e092e
XL
1866// linux/close_range.h
1867pub const CLOSE_RANGE_UNSHARE: ::c_uint = 1 << 1;
1868pub const CLOSE_RANGE_CLOEXEC: ::c_uint = 1 << 2;
1869
5099ac24
FG
1870// linux/filter.h
1871pub const SKF_AD_OFF: ::c_int = -0x1000;
1872pub const SKF_AD_PROTOCOL: ::c_int = 0;
1873pub const SKF_AD_PKTTYPE: ::c_int = 4;
1874pub const SKF_AD_IFINDEX: ::c_int = 8;
1875pub const SKF_AD_NLATTR: ::c_int = 12;
1876pub const SKF_AD_NLATTR_NEST: ::c_int = 16;
1877pub const SKF_AD_MARK: ::c_int = 20;
1878pub const SKF_AD_QUEUE: ::c_int = 24;
1879pub const SKF_AD_HATYPE: ::c_int = 28;
1880pub const SKF_AD_RXHASH: ::c_int = 32;
1881pub const SKF_AD_CPU: ::c_int = 36;
1882pub const SKF_AD_ALU_XOR_X: ::c_int = 40;
1883pub const SKF_AD_VLAN_TAG: ::c_int = 44;
1884pub const SKF_AD_VLAN_TAG_PRESENT: ::c_int = 48;
1885pub const SKF_AD_PAY_OFFSET: ::c_int = 52;
1886pub const SKF_AD_RANDOM: ::c_int = 56;
1887pub const SKF_AD_VLAN_TPID: ::c_int = 60;
1888pub const SKF_AD_MAX: ::c_int = 64;
1889pub const SKF_NET_OFF: ::c_int = -0x100000;
1890pub const SKF_LL_OFF: ::c_int = -0x200000;
1891pub const BPF_NET_OFF: ::c_int = SKF_NET_OFF;
1892pub const BPF_LL_OFF: ::c_int = SKF_LL_OFF;
1893pub const BPF_MEMWORDS: ::c_int = 16;
1894pub const BPF_MAXINSNS: ::c_int = 4096;
1895
1896// linux/bpf_common.h
1897pub const BPF_LD: ::__u32 = 0x00;
1898pub const BPF_LDX: ::__u32 = 0x01;
1899pub const BPF_ST: ::__u32 = 0x02;
1900pub const BPF_STX: ::__u32 = 0x03;
1901pub const BPF_ALU: ::__u32 = 0x04;
1902pub const BPF_JMP: ::__u32 = 0x05;
1903pub const BPF_RET: ::__u32 = 0x06;
1904pub const BPF_MISC: ::__u32 = 0x07;
1905pub const BPF_W: ::__u32 = 0x00;
1906pub const BPF_H: ::__u32 = 0x08;
1907pub const BPF_B: ::__u32 = 0x10;
1908pub const BPF_IMM: ::__u32 = 0x00;
1909pub const BPF_ABS: ::__u32 = 0x20;
1910pub const BPF_IND: ::__u32 = 0x40;
1911pub const BPF_MEM: ::__u32 = 0x60;
1912pub const BPF_LEN: ::__u32 = 0x80;
1913pub const BPF_MSH: ::__u32 = 0xa0;
1914pub const BPF_ADD: ::__u32 = 0x00;
1915pub const BPF_SUB: ::__u32 = 0x10;
1916pub const BPF_MUL: ::__u32 = 0x20;
1917pub const BPF_DIV: ::__u32 = 0x30;
1918pub const BPF_OR: ::__u32 = 0x40;
1919pub const BPF_AND: ::__u32 = 0x50;
1920pub const BPF_LSH: ::__u32 = 0x60;
1921pub const BPF_RSH: ::__u32 = 0x70;
1922pub const BPF_NEG: ::__u32 = 0x80;
1923pub const BPF_MOD: ::__u32 = 0x90;
1924pub const BPF_XOR: ::__u32 = 0xa0;
1925pub const BPF_JA: ::__u32 = 0x00;
1926pub const BPF_JEQ: ::__u32 = 0x10;
1927pub const BPF_JGT: ::__u32 = 0x20;
1928pub const BPF_JGE: ::__u32 = 0x30;
1929pub const BPF_JSET: ::__u32 = 0x40;
1930pub const BPF_K: ::__u32 = 0x00;
1931pub const BPF_X: ::__u32 = 0x08;
1932
a2a8927a
XL
1933// linux/openat2.h
1934pub const RESOLVE_NO_XDEV: ::__u64 = 0x01;
1935pub const RESOLVE_NO_MAGICLINKS: ::__u64 = 0x02;
1936pub const RESOLVE_NO_SYMLINKS: ::__u64 = 0x04;
1937pub const RESOLVE_BENEATH: ::__u64 = 0x08;
1938pub const RESOLVE_IN_ROOT: ::__u64 = 0x10;
1939pub const RESOLVE_CACHED: ::__u64 = 0x20;
1940
ff7c6d11
XL
1941// these are used in the p_type field of Elf32_Phdr and Elf64_Phdr, which has
1942// the type Elf32Word and Elf64Word respectively. Luckily, both of those are u32
1943// so we can use that type here to avoid having to cast.
1944pub const PT_NULL: u32 = 0;
1945pub const PT_LOAD: u32 = 1;
1946pub const PT_DYNAMIC: u32 = 2;
1947pub const PT_INTERP: u32 = 3;
1948pub const PT_NOTE: u32 = 4;
1949pub const PT_SHLIB: u32 = 5;
1950pub const PT_PHDR: u32 = 6;
1951pub const PT_TLS: u32 = 7;
1952pub const PT_NUM: u32 = 8;
1953pub const PT_LOOS: u32 = 0x60000000;
1954pub const PT_GNU_EH_FRAME: u32 = 0x6474e550;
1955pub const PT_GNU_STACK: u32 = 0x6474e551;
1956pub const PT_GNU_RELRO: u32 = 0x6474e552;
136023e0
XL
1957pub const PT_HIOS: u32 = 0x6fffffff;
1958pub const PT_LOPROC: u32 = 0x70000000;
1959pub const PT_HIPROC: u32 = 0x7fffffff;
ea8adc8c 1960
2c00a5a8
XL
1961// linux/if_ether.h
1962pub const ETH_ALEN: ::c_int = 6;
1963pub const ETH_HLEN: ::c_int = 14;
1964pub const ETH_ZLEN: ::c_int = 60;
1965pub const ETH_DATA_LEN: ::c_int = 1500;
1966pub const ETH_FRAME_LEN: ::c_int = 1514;
1967pub const ETH_FCS_LEN: ::c_int = 4;
1968
1969// These are the defined Ethernet Protocol ID's.
1970pub const ETH_P_LOOP: ::c_int = 0x0060;
1971pub const ETH_P_PUP: ::c_int = 0x0200;
1972pub const ETH_P_PUPAT: ::c_int = 0x0201;
1973pub const ETH_P_IP: ::c_int = 0x0800;
1974pub const ETH_P_X25: ::c_int = 0x0805;
1975pub const ETH_P_ARP: ::c_int = 0x0806;
1976pub const ETH_P_BPQ: ::c_int = 0x08FF;
1977pub const ETH_P_IEEEPUP: ::c_int = 0x0a00;
1978pub const ETH_P_IEEEPUPAT: ::c_int = 0x0a01;
1979pub const ETH_P_BATMAN: ::c_int = 0x4305;
1980pub const ETH_P_DEC: ::c_int = 0x6000;
1981pub const ETH_P_DNA_DL: ::c_int = 0x6001;
1982pub const ETH_P_DNA_RC: ::c_int = 0x6002;
1983pub const ETH_P_DNA_RT: ::c_int = 0x6003;
1984pub const ETH_P_LAT: ::c_int = 0x6004;
1985pub const ETH_P_DIAG: ::c_int = 0x6005;
1986pub const ETH_P_CUST: ::c_int = 0x6006;
1987pub const ETH_P_SCA: ::c_int = 0x6007;
1988pub const ETH_P_TEB: ::c_int = 0x6558;
1989pub const ETH_P_RARP: ::c_int = 0x8035;
1990pub const ETH_P_ATALK: ::c_int = 0x809B;
1991pub const ETH_P_AARP: ::c_int = 0x80F3;
1992pub const ETH_P_8021Q: ::c_int = 0x8100;
1993pub const ETH_P_IPX: ::c_int = 0x8137;
1994pub const ETH_P_IPV6: ::c_int = 0x86DD;
1995pub const ETH_P_PAUSE: ::c_int = 0x8808;
1996pub const ETH_P_SLOW: ::c_int = 0x8809;
1997pub const ETH_P_WCCP: ::c_int = 0x883E;
1998pub const ETH_P_MPLS_UC: ::c_int = 0x8847;
1999pub const ETH_P_MPLS_MC: ::c_int = 0x8848;
2000pub const ETH_P_ATMMPOA: ::c_int = 0x884c;
2001pub const ETH_P_PPP_DISC: ::c_int = 0x8863;
2002pub const ETH_P_PPP_SES: ::c_int = 0x8864;
2003pub const ETH_P_LINK_CTL: ::c_int = 0x886c;
2004pub const ETH_P_ATMFATE: ::c_int = 0x8884;
2005pub const ETH_P_PAE: ::c_int = 0x888E;
2006pub const ETH_P_AOE: ::c_int = 0x88A2;
2007pub const ETH_P_8021AD: ::c_int = 0x88A8;
2008pub const ETH_P_802_EX1: ::c_int = 0x88B5;
2009pub const ETH_P_TIPC: ::c_int = 0x88CA;
2010pub const ETH_P_MACSEC: ::c_int = 0x88E5;
2011pub const ETH_P_8021AH: ::c_int = 0x88E7;
2012pub const ETH_P_MVRP: ::c_int = 0x88F5;
2013pub const ETH_P_1588: ::c_int = 0x88F7;
2014pub const ETH_P_PRP: ::c_int = 0x88FB;
2015pub const ETH_P_FCOE: ::c_int = 0x8906;
2016pub const ETH_P_TDLS: ::c_int = 0x890D;
2017pub const ETH_P_FIP: ::c_int = 0x8914;
2018pub const ETH_P_80221: ::c_int = 0x8917;
2019pub const ETH_P_LOOPBACK: ::c_int = 0x9000;
2020pub const ETH_P_QINQ1: ::c_int = 0x9100;
2021pub const ETH_P_QINQ2: ::c_int = 0x9200;
2022pub const ETH_P_QINQ3: ::c_int = 0x9300;
2023pub const ETH_P_EDSA: ::c_int = 0xDADA;
2024pub const ETH_P_AF_IUCV: ::c_int = 0xFBFB;
2025
2026pub const ETH_P_802_3_MIN: ::c_int = 0x0600;
2027
2028// Non DIX types. Won't clash for 1500 types.
2029pub const ETH_P_802_3: ::c_int = 0x0001;
2030pub const ETH_P_AX25: ::c_int = 0x0002;
2031pub const ETH_P_ALL: ::c_int = 0x0003;
2032pub const ETH_P_802_2: ::c_int = 0x0004;
2033pub const ETH_P_SNAP: ::c_int = 0x0005;
2034pub const ETH_P_DDCMP: ::c_int = 0x0006;
2035pub const ETH_P_WAN_PPP: ::c_int = 0x0007;
2036pub const ETH_P_PPP_MP: ::c_int = 0x0008;
2037pub const ETH_P_LOCALTALK: ::c_int = 0x0009;
2038pub const ETH_P_CANFD: ::c_int = 0x000D;
2039pub const ETH_P_PPPTALK: ::c_int = 0x0010;
2040pub const ETH_P_TR_802_2: ::c_int = 0x0011;
2041pub const ETH_P_MOBITEX: ::c_int = 0x0015;
2042pub const ETH_P_CONTROL: ::c_int = 0x0016;
2043pub const ETH_P_IRDA: ::c_int = 0x0017;
2044pub const ETH_P_ECONET: ::c_int = 0x0018;
2045pub const ETH_P_HDLC: ::c_int = 0x0019;
2046pub const ETH_P_ARCNET: ::c_int = 0x001A;
2047pub const ETH_P_DSA: ::c_int = 0x001B;
2048pub const ETH_P_TRAILER: ::c_int = 0x001C;
2049pub const ETH_P_PHONET: ::c_int = 0x00F5;
2050pub const ETH_P_IEEE802154: ::c_int = 0x00F6;
2051pub const ETH_P_CAIF: ::c_int = 0x00F7;
2052
2053pub const POSIX_SPAWN_RESETIDS: ::c_int = 0x01;
2054pub const POSIX_SPAWN_SETPGROUP: ::c_int = 0x02;
2055pub const POSIX_SPAWN_SETSIGDEF: ::c_int = 0x04;
2056pub const POSIX_SPAWN_SETSIGMASK: ::c_int = 0x08;
2057pub const POSIX_SPAWN_SETSCHEDPARAM: ::c_int = 0x10;
2058pub const POSIX_SPAWN_SETSCHEDULER: ::c_int = 0x20;
2059
2060pub const NLMSG_NOOP: ::c_int = 0x1;
2061pub const NLMSG_ERROR: ::c_int = 0x2;
2062pub const NLMSG_DONE: ::c_int = 0x3;
2063pub const NLMSG_OVERRUN: ::c_int = 0x4;
2064pub const NLMSG_MIN_TYPE: ::c_int = 0x10;
2065
dfeec247
XL
2066// linux/netfilter/nfnetlink.h
2067pub const NFNLGRP_NONE: ::c_int = 0;
2068pub const NFNLGRP_CONNTRACK_NEW: ::c_int = 1;
2069pub const NFNLGRP_CONNTRACK_UPDATE: ::c_int = 2;
2070pub const NFNLGRP_CONNTRACK_DESTROY: ::c_int = 3;
2071pub const NFNLGRP_CONNTRACK_EXP_NEW: ::c_int = 4;
2072pub const NFNLGRP_CONNTRACK_EXP_UPDATE: ::c_int = 5;
2073pub const NFNLGRP_CONNTRACK_EXP_DESTROY: ::c_int = 6;
2074pub const NFNLGRP_NFTABLES: ::c_int = 7;
2075pub const NFNLGRP_ACCT_QUOTA: ::c_int = 8;
2076
2077pub const NFNETLINK_V0: ::c_int = 0;
2078
2079pub const NFNL_SUBSYS_NONE: ::c_int = 0;
2080pub const NFNL_SUBSYS_CTNETLINK: ::c_int = 1;
2081pub const NFNL_SUBSYS_CTNETLINK_EXP: ::c_int = 2;
2082pub const NFNL_SUBSYS_QUEUE: ::c_int = 3;
2083pub const NFNL_SUBSYS_ULOG: ::c_int = 4;
2084pub const NFNL_SUBSYS_OSF: ::c_int = 5;
2085pub const NFNL_SUBSYS_IPSET: ::c_int = 6;
2086pub const NFNL_SUBSYS_ACCT: ::c_int = 7;
2087pub const NFNL_SUBSYS_CTNETLINK_TIMEOUT: ::c_int = 8;
2088pub const NFNL_SUBSYS_CTHELPER: ::c_int = 9;
2089pub const NFNL_SUBSYS_NFTABLES: ::c_int = 10;
2090pub const NFNL_SUBSYS_NFT_COMPAT: ::c_int = 11;
2091pub const NFNL_SUBSYS_COUNT: ::c_int = 12;
2092
2093pub const NFNL_MSG_BATCH_BEGIN: ::c_int = NLMSG_MIN_TYPE;
2094pub const NFNL_MSG_BATCH_END: ::c_int = NLMSG_MIN_TYPE + 1;
2095
2096// linux/netfilter/nfnetlink_log.h
2097pub const NFULNL_MSG_PACKET: ::c_int = 0;
2098pub const NFULNL_MSG_CONFIG: ::c_int = 1;
2099
2100pub const NFULA_UNSPEC: ::c_int = 0;
2101pub const NFULA_PACKET_HDR: ::c_int = 1;
2102pub const NFULA_MARK: ::c_int = 2;
2103pub const NFULA_TIMESTAMP: ::c_int = 3;
2104pub const NFULA_IFINDEX_INDEV: ::c_int = 4;
2105pub const NFULA_IFINDEX_OUTDEV: ::c_int = 5;
2106pub const NFULA_IFINDEX_PHYSINDEV: ::c_int = 6;
2107pub const NFULA_IFINDEX_PHYSOUTDEV: ::c_int = 7;
2108pub const NFULA_HWADDR: ::c_int = 8;
2109pub const NFULA_PAYLOAD: ::c_int = 9;
2110pub const NFULA_PREFIX: ::c_int = 10;
2111pub const NFULA_UID: ::c_int = 11;
2112pub const NFULA_SEQ: ::c_int = 12;
2113pub const NFULA_SEQ_GLOBAL: ::c_int = 13;
2114pub const NFULA_GID: ::c_int = 14;
2115pub const NFULA_HWTYPE: ::c_int = 15;
2116pub const NFULA_HWHEADER: ::c_int = 16;
2117pub const NFULA_HWLEN: ::c_int = 17;
2118pub const NFULA_CT: ::c_int = 18;
2119pub const NFULA_CT_INFO: ::c_int = 19;
2120
2121pub const NFULNL_CFG_CMD_NONE: ::c_int = 0;
2122pub const NFULNL_CFG_CMD_BIND: ::c_int = 1;
2123pub const NFULNL_CFG_CMD_UNBIND: ::c_int = 2;
2124pub const NFULNL_CFG_CMD_PF_BIND: ::c_int = 3;
2125pub const NFULNL_CFG_CMD_PF_UNBIND: ::c_int = 4;
2126
2127pub const NFULA_CFG_UNSPEC: ::c_int = 0;
2128pub const NFULA_CFG_CMD: ::c_int = 1;
2129pub const NFULA_CFG_MODE: ::c_int = 2;
2130pub const NFULA_CFG_NLBUFSIZ: ::c_int = 3;
2131pub const NFULA_CFG_TIMEOUT: ::c_int = 4;
2132pub const NFULA_CFG_QTHRESH: ::c_int = 5;
2133pub const NFULA_CFG_FLAGS: ::c_int = 6;
2134
2135pub const NFULNL_COPY_NONE: ::c_int = 0x00;
2136pub const NFULNL_COPY_META: ::c_int = 0x01;
2137pub const NFULNL_COPY_PACKET: ::c_int = 0x02;
2138
2139pub const NFULNL_CFG_F_SEQ: ::c_int = 0x0001;
2140pub const NFULNL_CFG_F_SEQ_GLOBAL: ::c_int = 0x0002;
2141pub const NFULNL_CFG_F_CONNTRACK: ::c_int = 0x0004;
2142
ba9703b0
XL
2143// linux/netfilter/nfnetlink_log.h
2144pub const NFQNL_MSG_PACKET: ::c_int = 0;
2145pub const NFQNL_MSG_VERDICT: ::c_int = 1;
2146pub const NFQNL_MSG_CONFIG: ::c_int = 2;
2147pub const NFQNL_MSG_VERDICT_BATCH: ::c_int = 3;
2148
2149pub const NFQA_UNSPEC: ::c_int = 0;
2150pub const NFQA_PACKET_HDR: ::c_int = 1;
2151pub const NFQA_VERDICT_HDR: ::c_int = 2;
2152pub const NFQA_MARK: ::c_int = 3;
2153pub const NFQA_TIMESTAMP: ::c_int = 4;
2154pub const NFQA_IFINDEX_INDEV: ::c_int = 5;
2155pub const NFQA_IFINDEX_OUTDEV: ::c_int = 6;
2156pub const NFQA_IFINDEX_PHYSINDEV: ::c_int = 7;
2157pub const NFQA_IFINDEX_PHYSOUTDEV: ::c_int = 8;
2158pub const NFQA_HWADDR: ::c_int = 9;
2159pub const NFQA_PAYLOAD: ::c_int = 10;
2160pub const NFQA_CT: ::c_int = 11;
2161pub const NFQA_CT_INFO: ::c_int = 12;
2162pub const NFQA_CAP_LEN: ::c_int = 13;
2163pub const NFQA_SKB_INFO: ::c_int = 14;
2164pub const NFQA_EXP: ::c_int = 15;
2165pub const NFQA_UID: ::c_int = 16;
2166pub const NFQA_GID: ::c_int = 17;
2167pub const NFQA_SECCTX: ::c_int = 18;
2168/*
2169 FIXME: These are not yet available in musl sanitized kernel headers and
2170 make the tests fail. Enable them once musl has them.
2171
2172 See https://github.com/rust-lang/libc/pull/1628 for more details.
2173pub const NFQA_VLAN: ::c_int = 19;
2174pub const NFQA_L2HDR: ::c_int = 20;
2175
2176pub const NFQA_VLAN_UNSPEC: ::c_int = 0;
2177pub const NFQA_VLAN_PROTO: ::c_int = 1;
2178pub const NFQA_VLAN_TCI: ::c_int = 2;
2179*/
2180
2181pub const NFQNL_CFG_CMD_NONE: ::c_int = 0;
2182pub const NFQNL_CFG_CMD_BIND: ::c_int = 1;
2183pub const NFQNL_CFG_CMD_UNBIND: ::c_int = 2;
2184pub const NFQNL_CFG_CMD_PF_BIND: ::c_int = 3;
2185pub const NFQNL_CFG_CMD_PF_UNBIND: ::c_int = 4;
2186
2187pub const NFQNL_COPY_NONE: ::c_int = 0;
2188pub const NFQNL_COPY_META: ::c_int = 1;
2189pub const NFQNL_COPY_PACKET: ::c_int = 2;
2190
2191pub const NFQA_CFG_UNSPEC: ::c_int = 0;
2192pub const NFQA_CFG_CMD: ::c_int = 1;
2193pub const NFQA_CFG_PARAMS: ::c_int = 2;
2194pub const NFQA_CFG_QUEUE_MAXLEN: ::c_int = 3;
2195pub const NFQA_CFG_MASK: ::c_int = 4;
2196pub const NFQA_CFG_FLAGS: ::c_int = 5;
2197
2198pub const NFQA_CFG_F_FAIL_OPEN: ::c_int = 0x0001;
2199pub const NFQA_CFG_F_CONNTRACK: ::c_int = 0x0002;
2200pub const NFQA_CFG_F_GSO: ::c_int = 0x0004;
2201pub const NFQA_CFG_F_UID_GID: ::c_int = 0x0008;
2202pub const NFQA_CFG_F_SECCTX: ::c_int = 0x0010;
2203pub const NFQA_CFG_F_MAX: ::c_int = 0x0020;
2204
2205pub const NFQA_SKB_CSUMNOTREADY: ::c_int = 0x0001;
2206pub const NFQA_SKB_GSO: ::c_int = 0x0002;
2207pub const NFQA_SKB_CSUM_NOTVERIFIED: ::c_int = 0x0004;
2208
2c00a5a8
XL
2209pub const GENL_NAMSIZ: ::c_int = 16;
2210
2211pub const GENL_MIN_ID: ::c_int = NLMSG_MIN_TYPE;
2212pub const GENL_MAX_ID: ::c_int = 1023;
2213
2214pub const GENL_ADMIN_PERM: ::c_int = 0x01;
2215pub const GENL_CMD_CAP_DO: ::c_int = 0x02;
2216pub const GENL_CMD_CAP_DUMP: ::c_int = 0x04;
2217pub const GENL_CMD_CAP_HASPOL: ::c_int = 0x08;
2218
2219pub const GENL_ID_CTRL: ::c_int = NLMSG_MIN_TYPE;
2220
2221pub const CTRL_CMD_UNSPEC: ::c_int = 0;
2222pub const CTRL_CMD_NEWFAMILY: ::c_int = 1;
2223pub const CTRL_CMD_DELFAMILY: ::c_int = 2;
2224pub const CTRL_CMD_GETFAMILY: ::c_int = 3;
2225pub const CTRL_CMD_NEWOPS: ::c_int = 4;
2226pub const CTRL_CMD_DELOPS: ::c_int = 5;
2227pub const CTRL_CMD_GETOPS: ::c_int = 6;
2228pub const CTRL_CMD_NEWMCAST_GRP: ::c_int = 7;
2229pub const CTRL_CMD_DELMCAST_GRP: ::c_int = 8;
2230pub const CTRL_CMD_GETMCAST_GRP: ::c_int = 9;
2231
2232pub const CTRL_ATTR_UNSPEC: ::c_int = 0;
2233pub const CTRL_ATTR_FAMILY_ID: ::c_int = 1;
2234pub const CTRL_ATTR_FAMILY_NAME: ::c_int = 2;
2235pub const CTRL_ATTR_VERSION: ::c_int = 3;
2236pub const CTRL_ATTR_HDRSIZE: ::c_int = 4;
2237pub const CTRL_ATTR_MAXATTR: ::c_int = 5;
2238pub const CTRL_ATTR_OPS: ::c_int = 6;
2239pub const CTRL_ATTR_MCAST_GROUPS: ::c_int = 7;
2240
2241pub const CTRL_ATTR_OP_UNSPEC: ::c_int = 0;
2242pub const CTRL_ATTR_OP_ID: ::c_int = 1;
2243pub const CTRL_ATTR_OP_FLAGS: ::c_int = 2;
2244
2245pub const CTRL_ATTR_MCAST_GRP_UNSPEC: ::c_int = 0;
2246pub const CTRL_ATTR_MCAST_GRP_NAME: ::c_int = 1;
2247pub const CTRL_ATTR_MCAST_GRP_ID: ::c_int = 2;
2248
b7449926
XL
2249// linux/if_packet.h
2250pub const PACKET_ADD_MEMBERSHIP: ::c_int = 1;
2251pub const PACKET_DROP_MEMBERSHIP: ::c_int = 2;
2252
2253pub const PACKET_MR_MULTICAST: ::c_int = 0;
2254pub const PACKET_MR_PROMISC: ::c_int = 1;
2255pub const PACKET_MR_ALLMULTI: ::c_int = 2;
b7449926 2256
2c00a5a8
XL
2257// linux/netfilter.h
2258pub const NF_DROP: ::c_int = 0;
e74abb32
XL
2259pub const NF_ACCEPT: ::c_int = 1;
2260pub const NF_STOLEN: ::c_int = 2;
2261pub const NF_QUEUE: ::c_int = 3;
2262pub const NF_REPEAT: ::c_int = 4;
2263pub const NF_STOP: ::c_int = 5;
2c00a5a8
XL
2264pub const NF_MAX_VERDICT: ::c_int = NF_STOP;
2265
2266pub const NF_VERDICT_MASK: ::c_int = 0x000000ff;
2267pub const NF_VERDICT_FLAG_QUEUE_BYPASS: ::c_int = 0x00008000;
2268
2269pub const NF_VERDICT_QMASK: ::c_int = 0xffff0000;
2270pub const NF_VERDICT_QBITS: ::c_int = 16;
2271
2272pub const NF_VERDICT_BITS: ::c_int = 16;
2273
2274pub const NF_INET_PRE_ROUTING: ::c_int = 0;
2275pub const NF_INET_LOCAL_IN: ::c_int = 1;
2276pub const NF_INET_FORWARD: ::c_int = 2;
2277pub const NF_INET_LOCAL_OUT: ::c_int = 3;
2278pub const NF_INET_POST_ROUTING: ::c_int = 4;
2279pub const NF_INET_NUMHOOKS: ::c_int = 5;
2280
2281// Some NFPROTO are not compatible with musl and are defined in submodules.
2282pub const NFPROTO_UNSPEC: ::c_int = 0;
2283pub const NFPROTO_IPV4: ::c_int = 2;
2284pub const NFPROTO_ARP: ::c_int = 3;
2285pub const NFPROTO_BRIDGE: ::c_int = 7;
2286pub const NFPROTO_IPV6: ::c_int = 10;
2287pub const NFPROTO_DECNET: ::c_int = 12;
2288pub const NFPROTO_NUMPROTO: ::c_int = 13;
17df50a5
XL
2289pub const NFPROTO_INET: ::c_int = 1;
2290pub const NFPROTO_NETDEV: ::c_int = 5;
2291
2292pub const NF_NETDEV_INGRESS: ::c_int = 0;
2293pub const NF_NETDEV_NUMHOOKS: ::c_int = 1;
2c00a5a8
XL
2294
2295// linux/netfilter_ipv4.h
2296pub const NF_IP_PRE_ROUTING: ::c_int = 0;
2297pub const NF_IP_LOCAL_IN: ::c_int = 1;
2298pub const NF_IP_FORWARD: ::c_int = 2;
2299pub const NF_IP_LOCAL_OUT: ::c_int = 3;
2300pub const NF_IP_POST_ROUTING: ::c_int = 4;
2301pub const NF_IP_NUMHOOKS: ::c_int = 5;
2302
2303pub const NF_IP_PRI_FIRST: ::c_int = ::INT_MIN;
2304pub const NF_IP_PRI_CONNTRACK_DEFRAG: ::c_int = -400;
2305pub const NF_IP_PRI_RAW: ::c_int = -300;
2306pub const NF_IP_PRI_SELINUX_FIRST: ::c_int = -225;
2307pub const NF_IP_PRI_CONNTRACK: ::c_int = -200;
2308pub const NF_IP_PRI_MANGLE: ::c_int = -150;
2309pub const NF_IP_PRI_NAT_DST: ::c_int = -100;
2310pub const NF_IP_PRI_FILTER: ::c_int = 0;
2311pub const NF_IP_PRI_SECURITY: ::c_int = 50;
2312pub const NF_IP_PRI_NAT_SRC: ::c_int = 100;
2313pub const NF_IP_PRI_SELINUX_LAST: ::c_int = 225;
2314pub const NF_IP_PRI_CONNTRACK_HELPER: ::c_int = 300;
2315pub const NF_IP_PRI_CONNTRACK_CONFIRM: ::c_int = ::INT_MAX;
2316pub const NF_IP_PRI_LAST: ::c_int = ::INT_MAX;
2317
2318// linux/netfilter_ipv6.h
2319pub const NF_IP6_PRE_ROUTING: ::c_int = 0;
2320pub const NF_IP6_LOCAL_IN: ::c_int = 1;
2321pub const NF_IP6_FORWARD: ::c_int = 2;
2322pub const NF_IP6_LOCAL_OUT: ::c_int = 3;
2323pub const NF_IP6_POST_ROUTING: ::c_int = 4;
2324pub const NF_IP6_NUMHOOKS: ::c_int = 5;
2325
2326pub const NF_IP6_PRI_FIRST: ::c_int = ::INT_MIN;
2327pub const NF_IP6_PRI_CONNTRACK_DEFRAG: ::c_int = -400;
2328pub const NF_IP6_PRI_RAW: ::c_int = -300;
2329pub const NF_IP6_PRI_SELINUX_FIRST: ::c_int = -225;
2330pub const NF_IP6_PRI_CONNTRACK: ::c_int = -200;
2331pub const NF_IP6_PRI_MANGLE: ::c_int = -150;
2332pub const NF_IP6_PRI_NAT_DST: ::c_int = -100;
2333pub const NF_IP6_PRI_FILTER: ::c_int = 0;
2334pub const NF_IP6_PRI_SECURITY: ::c_int = 50;
2335pub const NF_IP6_PRI_NAT_SRC: ::c_int = 100;
2336pub const NF_IP6_PRI_SELINUX_LAST: ::c_int = 225;
2337pub const NF_IP6_PRI_CONNTRACK_HELPER: ::c_int = 300;
2338pub const NF_IP6_PRI_LAST: ::c_int = ::INT_MAX;
2339
ba9703b0
XL
2340// linux/netfilter_ipv6/ip6_tables.h
2341pub const IP6T_SO_ORIGINAL_DST: ::c_int = 80;
2342
8faf50e0
XL
2343pub const SIOCADDRT: ::c_ulong = 0x0000890B;
2344pub const SIOCDELRT: ::c_ulong = 0x0000890C;
2345pub const SIOCGIFNAME: ::c_ulong = 0x00008910;
2346pub const SIOCSIFLINK: ::c_ulong = 0x00008911;
2347pub const SIOCGIFCONF: ::c_ulong = 0x00008912;
2348pub const SIOCGIFFLAGS: ::c_ulong = 0x00008913;
2349pub const SIOCSIFFLAGS: ::c_ulong = 0x00008914;
2350pub const SIOCGIFADDR: ::c_ulong = 0x00008915;
2351pub const SIOCSIFADDR: ::c_ulong = 0x00008916;
2352pub const SIOCGIFDSTADDR: ::c_ulong = 0x00008917;
2353pub const SIOCSIFDSTADDR: ::c_ulong = 0x00008918;
2354pub const SIOCGIFBRDADDR: ::c_ulong = 0x00008919;
2355pub const SIOCSIFBRDADDR: ::c_ulong = 0x0000891A;
2356pub const SIOCGIFNETMASK: ::c_ulong = 0x0000891B;
2357pub const SIOCSIFNETMASK: ::c_ulong = 0x0000891C;
2358pub const SIOCGIFMETRIC: ::c_ulong = 0x0000891D;
2359pub const SIOCSIFMETRIC: ::c_ulong = 0x0000891E;
2360pub const SIOCGIFMEM: ::c_ulong = 0x0000891F;
2361pub const SIOCSIFMEM: ::c_ulong = 0x00008920;
2362pub const SIOCGIFMTU: ::c_ulong = 0x00008921;
2363pub const SIOCSIFMTU: ::c_ulong = 0x00008922;
2364pub const SIOCSIFHWADDR: ::c_ulong = 0x00008924;
2365pub const SIOCGIFENCAP: ::c_ulong = 0x00008925;
2366pub const SIOCSIFENCAP: ::c_ulong = 0x00008926;
2367pub const SIOCGIFHWADDR: ::c_ulong = 0x00008927;
2368pub const SIOCGIFSLAVE: ::c_ulong = 0x00008929;
2369pub const SIOCSIFSLAVE: ::c_ulong = 0x00008930;
2370pub const SIOCADDMULTI: ::c_ulong = 0x00008931;
2371pub const SIOCDELMULTI: ::c_ulong = 0x00008932;
2372pub const SIOCDARP: ::c_ulong = 0x00008953;
2373pub const SIOCGARP: ::c_ulong = 0x00008954;
2374pub const SIOCSARP: ::c_ulong = 0x00008955;
2375pub const SIOCDRARP: ::c_ulong = 0x00008960;
2376pub const SIOCGRARP: ::c_ulong = 0x00008961;
2377pub const SIOCSRARP: ::c_ulong = 0x00008962;
2378pub const SIOCGIFMAP: ::c_ulong = 0x00008970;
2379pub const SIOCSIFMAP: ::c_ulong = 0x00008971;
2380
2381pub const IPTOS_TOS_MASK: u8 = 0x1E;
2382pub const IPTOS_PREC_MASK: u8 = 0xE0;
2383
0731742a
XL
2384pub const IPTOS_ECN_NOT_ECT: u8 = 0x00;
2385
8faf50e0
XL
2386pub const RTF_UP: ::c_ushort = 0x0001;
2387pub const RTF_GATEWAY: ::c_ushort = 0x0002;
2388
2389pub const RTF_HOST: ::c_ushort = 0x0004;
2390pub const RTF_REINSTATE: ::c_ushort = 0x0008;
2391pub const RTF_DYNAMIC: ::c_ushort = 0x0010;
2392pub const RTF_MODIFIED: ::c_ushort = 0x0020;
2393pub const RTF_MTU: ::c_ushort = 0x0040;
2394pub const RTF_MSS: ::c_ushort = RTF_MTU;
2395pub const RTF_WINDOW: ::c_ushort = 0x0080;
2396pub const RTF_IRTT: ::c_ushort = 0x0100;
2397pub const RTF_REJECT: ::c_ushort = 0x0200;
2398pub const RTF_STATIC: ::c_ushort = 0x0400;
2399pub const RTF_XRESOLVE: ::c_ushort = 0x0800;
2400pub const RTF_NOFORWARD: ::c_ushort = 0x1000;
2401pub const RTF_THROW: ::c_ushort = 0x2000;
2402pub const RTF_NOPMTUDISC: ::c_ushort = 0x4000;
2403
2404pub const RTF_DEFAULT: u32 = 0x00010000;
2405pub const RTF_ALLONLINK: u32 = 0x00020000;
2406pub const RTF_ADDRCONF: u32 = 0x00040000;
2407pub const RTF_LINKRT: u32 = 0x00100000;
2408pub const RTF_NONEXTHOP: u32 = 0x00200000;
2409pub const RTF_CACHE: u32 = 0x01000000;
2410pub const RTF_FLOW: u32 = 0x02000000;
2411pub const RTF_POLICY: u32 = 0x04000000;
2412
2413pub const RTCF_VALVE: u32 = 0x00200000;
2414pub const RTCF_MASQ: u32 = 0x00400000;
2415pub const RTCF_NAT: u32 = 0x00800000;
2416pub const RTCF_DOREDIRECT: u32 = 0x01000000;
2417pub const RTCF_LOG: u32 = 0x02000000;
2418pub const RTCF_DIRECTSRC: u32 = 0x04000000;
2419
2420pub const RTF_LOCAL: u32 = 0x80000000;
2421pub const RTF_INTERFACE: u32 = 0x40000000;
2422pub const RTF_MULTICAST: u32 = 0x20000000;
2423pub const RTF_BROADCAST: u32 = 0x10000000;
2424pub const RTF_NAT: u32 = 0x08000000;
2425pub const RTF_ADDRCLASSMASK: u32 = 0xF8000000;
2426
2427pub const RT_CLASS_UNSPEC: u8 = 0;
2428pub const RT_CLASS_DEFAULT: u8 = 253;
2429pub const RT_CLASS_MAIN: u8 = 254;
2430pub const RT_CLASS_LOCAL: u8 = 255;
2431pub const RT_CLASS_MAX: u8 = 255;
2432
416331ca
XL
2433// linux/neighbor.h
2434pub const NUD_NONE: u16 = 0x00;
2435pub const NUD_INCOMPLETE: u16 = 0x01;
2436pub const NUD_REACHABLE: u16 = 0x02;
2437pub const NUD_STALE: u16 = 0x04;
2438pub const NUD_DELAY: u16 = 0x08;
2439pub const NUD_PROBE: u16 = 0x10;
2440pub const NUD_FAILED: u16 = 0x20;
2441pub const NUD_NOARP: u16 = 0x40;
2442pub const NUD_PERMANENT: u16 = 0x80;
2443
2444pub const NTF_USE: u8 = 0x01;
2445pub const NTF_SELF: u8 = 0x02;
2446pub const NTF_MASTER: u8 = 0x04;
2447pub const NTF_PROXY: u8 = 0x08;
2448pub const NTF_ROUTER: u8 = 0x80;
2449
2450pub const NDA_UNSPEC: ::c_ushort = 0;
2451pub const NDA_DST: ::c_ushort = 1;
2452pub const NDA_LLADDR: ::c_ushort = 2;
2453pub const NDA_CACHEINFO: ::c_ushort = 3;
2454pub const NDA_PROBES: ::c_ushort = 4;
2455pub const NDA_VLAN: ::c_ushort = 5;
2456pub const NDA_PORT: ::c_ushort = 6;
2457pub const NDA_VNI: ::c_ushort = 7;
2458pub const NDA_IFINDEX: ::c_ushort = 8;
2459
e1599b0c
XL
2460// linux/netlink.h
2461pub const NLA_ALIGNTO: ::c_int = 4;
2462
2463pub const NETLINK_ROUTE: ::c_int = 0;
2464pub const NETLINK_UNUSED: ::c_int = 1;
2465pub const NETLINK_USERSOCK: ::c_int = 2;
2466pub const NETLINK_FIREWALL: ::c_int = 3;
2467pub const NETLINK_SOCK_DIAG: ::c_int = 4;
2468pub const NETLINK_NFLOG: ::c_int = 5;
2469pub const NETLINK_XFRM: ::c_int = 6;
2470pub const NETLINK_SELINUX: ::c_int = 7;
2471pub const NETLINK_ISCSI: ::c_int = 8;
2472pub const NETLINK_AUDIT: ::c_int = 9;
2473pub const NETLINK_FIB_LOOKUP: ::c_int = 10;
2474pub const NETLINK_CONNECTOR: ::c_int = 11;
2475pub const NETLINK_NETFILTER: ::c_int = 12;
2476pub const NETLINK_IP6_FW: ::c_int = 13;
2477pub const NETLINK_DNRTMSG: ::c_int = 14;
2478pub const NETLINK_KOBJECT_UEVENT: ::c_int = 15;
2479pub const NETLINK_GENERIC: ::c_int = 16;
2480pub const NETLINK_SCSITRANSPORT: ::c_int = 18;
2481pub const NETLINK_ECRYPTFS: ::c_int = 19;
2482pub const NETLINK_RDMA: ::c_int = 20;
2483pub const NETLINK_CRYPTO: ::c_int = 21;
2484pub const NETLINK_INET_DIAG: ::c_int = NETLINK_SOCK_DIAG;
2485
2486pub const NLM_F_REQUEST: ::c_int = 1;
2487pub const NLM_F_MULTI: ::c_int = 2;
2488pub const NLM_F_ACK: ::c_int = 4;
2489pub const NLM_F_ECHO: ::c_int = 8;
2490pub const NLM_F_DUMP_INTR: ::c_int = 16;
2491pub const NLM_F_DUMP_FILTERED: ::c_int = 32;
2492
2493pub const NLM_F_ROOT: ::c_int = 0x100;
2494pub const NLM_F_MATCH: ::c_int = 0x200;
2495pub const NLM_F_ATOMIC: ::c_int = 0x400;
2496pub const NLM_F_DUMP: ::c_int = NLM_F_ROOT | NLM_F_MATCH;
2497
2498pub const NLM_F_REPLACE: ::c_int = 0x100;
2499pub const NLM_F_EXCL: ::c_int = 0x200;
2500pub const NLM_F_CREATE: ::c_int = 0x400;
2501pub const NLM_F_APPEND: ::c_int = 0x800;
2502
2503pub const NETLINK_ADD_MEMBERSHIP: ::c_int = 1;
2504pub const NETLINK_DROP_MEMBERSHIP: ::c_int = 2;
2505pub const NETLINK_PKTINFO: ::c_int = 3;
2506pub const NETLINK_BROADCAST_ERROR: ::c_int = 4;
2507pub const NETLINK_NO_ENOBUFS: ::c_int = 5;
2508pub const NETLINK_RX_RING: ::c_int = 6;
2509pub const NETLINK_TX_RING: ::c_int = 7;
2510pub const NETLINK_LISTEN_ALL_NSID: ::c_int = 8;
2511pub const NETLINK_LIST_MEMBERSHIPS: ::c_int = 9;
2512pub const NETLINK_CAP_ACK: ::c_int = 10;
3c0e092e
XL
2513pub const NETLINK_EXT_ACK: ::c_int = 11;
2514pub const NETLINK_GET_STRICT_CHK: ::c_int = 12;
e1599b0c
XL
2515
2516pub const NLA_F_NESTED: ::c_int = 1 << 15;
2517pub const NLA_F_NET_BYTEORDER: ::c_int = 1 << 14;
2518pub const NLA_TYPE_MASK: ::c_int = !(NLA_F_NESTED | NLA_F_NET_BYTEORDER);
2519
416331ca
XL
2520// linux/rtnetlink.h
2521pub const TCA_UNSPEC: ::c_ushort = 0;
2522pub const TCA_KIND: ::c_ushort = 1;
2523pub const TCA_OPTIONS: ::c_ushort = 2;
2524pub const TCA_STATS: ::c_ushort = 3;
2525pub const TCA_XSTATS: ::c_ushort = 4;
2526pub const TCA_RATE: ::c_ushort = 5;
2527pub const TCA_FCNT: ::c_ushort = 6;
2528pub const TCA_STATS2: ::c_ushort = 7;
2529pub const TCA_STAB: ::c_ushort = 8;
2530
2531pub const RTM_NEWLINK: u16 = 16;
2532pub const RTM_DELLINK: u16 = 17;
2533pub const RTM_GETLINK: u16 = 18;
2534pub const RTM_SETLINK: u16 = 19;
2535pub const RTM_NEWADDR: u16 = 20;
2536pub const RTM_DELADDR: u16 = 21;
2537pub const RTM_GETADDR: u16 = 22;
2538pub const RTM_NEWROUTE: u16 = 24;
2539pub const RTM_DELROUTE: u16 = 25;
2540pub const RTM_GETROUTE: u16 = 26;
2541pub const RTM_NEWNEIGH: u16 = 28;
2542pub const RTM_DELNEIGH: u16 = 29;
2543pub const RTM_GETNEIGH: u16 = 30;
2544pub const RTM_NEWRULE: u16 = 32;
2545pub const RTM_DELRULE: u16 = 33;
2546pub const RTM_GETRULE: u16 = 34;
2547pub const RTM_NEWQDISC: u16 = 36;
2548pub const RTM_DELQDISC: u16 = 37;
2549pub const RTM_GETQDISC: u16 = 38;
2550pub const RTM_NEWTCLASS: u16 = 40;
2551pub const RTM_DELTCLASS: u16 = 41;
2552pub const RTM_GETTCLASS: u16 = 42;
2553pub const RTM_NEWTFILTER: u16 = 44;
2554pub const RTM_DELTFILTER: u16 = 45;
2555pub const RTM_GETTFILTER: u16 = 46;
2556pub const RTM_NEWACTION: u16 = 48;
2557pub const RTM_DELACTION: u16 = 49;
2558pub const RTM_GETACTION: u16 = 50;
2559pub const RTM_NEWPREFIX: u16 = 52;
2560pub const RTM_GETMULTICAST: u16 = 58;
2561pub const RTM_GETANYCAST: u16 = 62;
2562pub const RTM_NEWNEIGHTBL: u16 = 64;
2563pub const RTM_GETNEIGHTBL: u16 = 66;
2564pub const RTM_SETNEIGHTBL: u16 = 67;
2565pub const RTM_NEWNDUSEROPT: u16 = 68;
2566pub const RTM_NEWADDRLABEL: u16 = 72;
2567pub const RTM_DELADDRLABEL: u16 = 73;
2568pub const RTM_GETADDRLABEL: u16 = 74;
2569pub const RTM_GETDCB: u16 = 78;
2570pub const RTM_SETDCB: u16 = 79;
2571pub const RTM_NEWNETCONF: u16 = 80;
2572pub const RTM_GETNETCONF: u16 = 82;
2573pub const RTM_NEWMDB: u16 = 84;
2574pub const RTM_DELMDB: u16 = 85;
2575pub const RTM_GETMDB: u16 = 86;
2576pub const RTM_NEWNSID: u16 = 88;
2577pub const RTM_DELNSID: u16 = 89;
2578pub const RTM_GETNSID: u16 = 90;
2579
2580pub const RTM_F_NOTIFY: ::c_uint = 0x100;
2581pub const RTM_F_CLONED: ::c_uint = 0x200;
2582pub const RTM_F_EQUALIZE: ::c_uint = 0x400;
2583pub const RTM_F_PREFIX: ::c_uint = 0x800;
2584
2585pub const RTA_UNSPEC: ::c_ushort = 0;
2586pub const RTA_DST: ::c_ushort = 1;
2587pub const RTA_SRC: ::c_ushort = 2;
2588pub const RTA_IIF: ::c_ushort = 3;
2589pub const RTA_OIF: ::c_ushort = 4;
2590pub const RTA_GATEWAY: ::c_ushort = 5;
2591pub const RTA_PRIORITY: ::c_ushort = 6;
2592pub const RTA_PREFSRC: ::c_ushort = 7;
2593pub const RTA_METRICS: ::c_ushort = 8;
2594pub const RTA_MULTIPATH: ::c_ushort = 9;
2595pub const RTA_PROTOINFO: ::c_ushort = 10; // No longer used
2596pub const RTA_FLOW: ::c_ushort = 11;
2597pub const RTA_CACHEINFO: ::c_ushort = 12;
2598pub const RTA_SESSION: ::c_ushort = 13; // No longer used
2599pub const RTA_MP_ALGO: ::c_ushort = 14; // No longer used
2600pub const RTA_TABLE: ::c_ushort = 15;
2601pub const RTA_MARK: ::c_ushort = 16;
2602pub const RTA_MFC_STATS: ::c_ushort = 17;
2603
2604pub const RTN_UNSPEC: ::c_uchar = 0;
2605pub const RTN_UNICAST: ::c_uchar = 1;
2606pub const RTN_LOCAL: ::c_uchar = 2;
2607pub const RTN_BROADCAST: ::c_uchar = 3;
2608pub const RTN_ANYCAST: ::c_uchar = 4;
2609pub const RTN_MULTICAST: ::c_uchar = 5;
2610pub const RTN_BLACKHOLE: ::c_uchar = 6;
2611pub const RTN_UNREACHABLE: ::c_uchar = 7;
2612pub const RTN_PROHIBIT: ::c_uchar = 8;
2613pub const RTN_THROW: ::c_uchar = 9;
2614pub const RTN_NAT: ::c_uchar = 10;
2615pub const RTN_XRESOLVE: ::c_uchar = 11;
2616
2617pub const RTPROT_UNSPEC: ::c_uchar = 0;
2618pub const RTPROT_REDIRECT: ::c_uchar = 1;
2619pub const RTPROT_KERNEL: ::c_uchar = 2;
2620pub const RTPROT_BOOT: ::c_uchar = 3;
2621pub const RTPROT_STATIC: ::c_uchar = 4;
2622
2623pub const RT_SCOPE_UNIVERSE: ::c_uchar = 0;
2624pub const RT_SCOPE_SITE: ::c_uchar = 200;
2625pub const RT_SCOPE_LINK: ::c_uchar = 253;
2626pub const RT_SCOPE_HOST: ::c_uchar = 254;
2627pub const RT_SCOPE_NOWHERE: ::c_uchar = 255;
2628
2629pub const RT_TABLE_UNSPEC: ::c_uchar = 0;
2630pub const RT_TABLE_COMPAT: ::c_uchar = 252;
2631pub const RT_TABLE_DEFAULT: ::c_uchar = 253;
2632pub const RT_TABLE_MAIN: ::c_uchar = 254;
2633pub const RT_TABLE_LOCAL: ::c_uchar = 255;
2634
8faf50e0
XL
2635pub const RTMSG_OVERRUN: u32 = ::NLMSG_OVERRUN as u32;
2636pub const RTMSG_NEWDEVICE: u32 = 0x11;
2637pub const RTMSG_DELDEVICE: u32 = 0x12;
2638pub const RTMSG_NEWROUTE: u32 = 0x21;
2639pub const RTMSG_DELROUTE: u32 = 0x22;
2640pub const RTMSG_NEWRULE: u32 = 0x31;
2641pub const RTMSG_DELRULE: u32 = 0x32;
2642pub const RTMSG_CONTROL: u32 = 0x40;
2643pub const RTMSG_AR_FAILED: u32 = 0x51;
2644
b7449926
XL
2645pub const MAX_ADDR_LEN: usize = 7;
2646pub const ARPD_UPDATE: ::c_ushort = 0x01;
2647pub const ARPD_LOOKUP: ::c_ushort = 0x02;
2648pub const ARPD_FLUSH: ::c_ushort = 0x03;
2649pub const ATF_MAGIC: ::c_int = 0x80;
2650
2651// linux/module.h
2652pub const MODULE_INIT_IGNORE_MODVERSIONS: ::c_uint = 0x0001;
2653pub const MODULE_INIT_IGNORE_VERMAGIC: ::c_uint = 0x0002;
2654
69743fb6
XL
2655// linux/net_tstamp.h
2656pub const SOF_TIMESTAMPING_TX_HARDWARE: ::c_uint = 1 << 0;
2657pub const SOF_TIMESTAMPING_TX_SOFTWARE: ::c_uint = 1 << 1;
2658pub const SOF_TIMESTAMPING_RX_HARDWARE: ::c_uint = 1 << 2;
2659pub const SOF_TIMESTAMPING_RX_SOFTWARE: ::c_uint = 1 << 3;
2660pub const SOF_TIMESTAMPING_SOFTWARE: ::c_uint = 1 << 4;
2661pub const SOF_TIMESTAMPING_SYS_HARDWARE: ::c_uint = 1 << 5;
2662pub const SOF_TIMESTAMPING_RAW_HARDWARE: ::c_uint = 1 << 6;
923072b8
FG
2663pub const SOF_TXTIME_DEADLINE_MODE: u32 = 1 << 0;
2664pub const SOF_TXTIME_REPORT_ERRORS: u32 = 1 << 1;
69743fb6 2665
532ac7d7
XL
2666// linux/if_alg.h
2667pub const ALG_SET_KEY: ::c_int = 1;
2668pub const ALG_SET_IV: ::c_int = 2;
2669pub const ALG_SET_OP: ::c_int = 3;
2670pub const ALG_SET_AEAD_ASSOCLEN: ::c_int = 4;
2671pub const ALG_SET_AEAD_AUTHSIZE: ::c_int = 5;
2672
2673pub const ALG_OP_DECRYPT: ::c_int = 0;
2674pub const ALG_OP_ENCRYPT: ::c_int = 1;
2675
ba9703b0
XL
2676// include/uapi/linux/udp.h
2677pub const UDP_CORK: ::c_int = 1;
2678pub const UDP_ENCAP: ::c_int = 100;
2679pub const UDP_NO_CHECK6_TX: ::c_int = 101;
2680pub const UDP_NO_CHECK6_RX: ::c_int = 102;
ba9703b0
XL
2681
2682// include/uapi/linux/mman.h
2683pub const MAP_SHARED_VALIDATE: ::c_int = 0x3;
2684
2685// include/uapi/asm-generic/mman-common.h
2686pub const MAP_FIXED_NOREPLACE: ::c_int = 0x100000;
a2a8927a 2687pub const MLOCK_ONFAULT: ::c_uint = 0x01;
ba9703b0 2688
416331ca
XL
2689// uapi/linux/vm_sockets.h
2690pub const VMADDR_CID_ANY: ::c_uint = 0xFFFFFFFF;
2691pub const VMADDR_CID_HYPERVISOR: ::c_uint = 0;
3dfed10e
XL
2692#[deprecated(
2693 since = "0.2.74",
2694 note = "VMADDR_CID_RESERVED is removed since Linux v5.6 and \
2695 replaced with VMADDR_CID_LOCAL"
2696)]
416331ca 2697pub const VMADDR_CID_RESERVED: ::c_uint = 1;
3dfed10e 2698pub const VMADDR_CID_LOCAL: ::c_uint = 1;
416331ca
XL
2699pub const VMADDR_CID_HOST: ::c_uint = 2;
2700pub const VMADDR_PORT_ANY: ::c_uint = 0xFFFFFFFF;
2701
532ac7d7 2702// uapi/linux/inotify.h
e74abb32
XL
2703pub const IN_ACCESS: u32 = 0x0000_0001;
2704pub const IN_MODIFY: u32 = 0x0000_0002;
2705pub const IN_ATTRIB: u32 = 0x0000_0004;
2706pub const IN_CLOSE_WRITE: u32 = 0x0000_0008;
416331ca 2707pub const IN_CLOSE_NOWRITE: u32 = 0x0000_0010;
ba9703b0 2708pub const IN_CLOSE: u32 = IN_CLOSE_WRITE | IN_CLOSE_NOWRITE;
e74abb32
XL
2709pub const IN_OPEN: u32 = 0x0000_0020;
2710pub const IN_MOVED_FROM: u32 = 0x0000_0040;
2711pub const IN_MOVED_TO: u32 = 0x0000_0080;
ba9703b0 2712pub const IN_MOVE: u32 = IN_MOVED_FROM | IN_MOVED_TO;
e74abb32
XL
2713pub const IN_CREATE: u32 = 0x0000_0100;
2714pub const IN_DELETE: u32 = 0x0000_0200;
2715pub const IN_DELETE_SELF: u32 = 0x0000_0400;
2716pub const IN_MOVE_SELF: u32 = 0x0000_0800;
2717pub const IN_UNMOUNT: u32 = 0x0000_2000;
2718pub const IN_Q_OVERFLOW: u32 = 0x0000_4000;
2719pub const IN_IGNORED: u32 = 0x0000_8000;
2720pub const IN_ONLYDIR: u32 = 0x0100_0000;
2721pub const IN_DONT_FOLLOW: u32 = 0x0200_0000;
416331ca
XL
2722// pub const IN_EXCL_UNLINK: u32 = 0x0400_0000;
2723
ba9703b0
XL
2724// linux/keyctl.h
2725pub const KEY_SPEC_THREAD_KEYRING: i32 = -1;
2726pub const KEY_SPEC_PROCESS_KEYRING: i32 = -2;
2727pub const KEY_SPEC_SESSION_KEYRING: i32 = -3;
2728pub const KEY_SPEC_USER_KEYRING: i32 = -4;
2729pub const KEY_SPEC_USER_SESSION_KEYRING: i32 = -5;
2730pub const KEY_SPEC_GROUP_KEYRING: i32 = -6;
2731pub const KEY_SPEC_REQKEY_AUTH_KEY: i32 = -7;
2732pub const KEY_SPEC_REQUESTOR_KEYRING: i32 = -8;
2733
2734pub const KEY_REQKEY_DEFL_NO_CHANGE: i32 = -1;
2735pub const KEY_REQKEY_DEFL_DEFAULT: i32 = 0;
2736pub const KEY_REQKEY_DEFL_THREAD_KEYRING: i32 = 1;
2737pub const KEY_REQKEY_DEFL_PROCESS_KEYRING: i32 = 2;
2738pub const KEY_REQKEY_DEFL_SESSION_KEYRING: i32 = 3;
2739pub const KEY_REQKEY_DEFL_USER_KEYRING: i32 = 4;
2740pub const KEY_REQKEY_DEFL_USER_SESSION_KEYRING: i32 = 5;
2741pub const KEY_REQKEY_DEFL_GROUP_KEYRING: i32 = 6;
2742pub const KEY_REQKEY_DEFL_REQUESTOR_KEYRING: i32 = 7;
2743
2744pub const KEYCTL_GET_KEYRING_ID: u32 = 0;
2745pub const KEYCTL_JOIN_SESSION_KEYRING: u32 = 1;
2746pub const KEYCTL_UPDATE: u32 = 2;
2747pub const KEYCTL_REVOKE: u32 = 3;
2748pub const KEYCTL_CHOWN: u32 = 4;
2749pub const KEYCTL_SETPERM: u32 = 5;
2750pub const KEYCTL_DESCRIBE: u32 = 6;
2751pub const KEYCTL_CLEAR: u32 = 7;
2752pub const KEYCTL_LINK: u32 = 8;
2753pub const KEYCTL_UNLINK: u32 = 9;
2754pub const KEYCTL_SEARCH: u32 = 10;
2755pub const KEYCTL_READ: u32 = 11;
2756pub const KEYCTL_INSTANTIATE: u32 = 12;
2757pub const KEYCTL_NEGATE: u32 = 13;
2758pub const KEYCTL_SET_REQKEY_KEYRING: u32 = 14;
2759pub const KEYCTL_SET_TIMEOUT: u32 = 15;
2760pub const KEYCTL_ASSUME_AUTHORITY: u32 = 16;
2761pub const KEYCTL_GET_SECURITY: u32 = 17;
2762pub const KEYCTL_SESSION_TO_PARENT: u32 = 18;
2763pub const KEYCTL_REJECT: u32 = 19;
2764pub const KEYCTL_INSTANTIATE_IOV: u32 = 20;
2765pub const KEYCTL_INVALIDATE: u32 = 21;
2766pub const KEYCTL_GET_PERSISTENT: u32 = 22;
2767
416331ca
XL
2768// pub const IN_MASK_CREATE: u32 = 0x1000_0000;
2769// pub const IN_MASK_ADD: u32 = 0x2000_0000;
e74abb32
XL
2770pub const IN_ISDIR: u32 = 0x4000_0000;
2771pub const IN_ONESHOT: u32 = 0x8000_0000;
2772
ba9703b0 2773pub const IN_ALL_EVENTS: u32 = IN_ACCESS
e74abb32
XL
2774 | IN_MODIFY
2775 | IN_ATTRIB
2776 | IN_CLOSE_WRITE
2777 | IN_CLOSE_NOWRITE
2778 | IN_OPEN
2779 | IN_MOVED_FROM
2780 | IN_MOVED_TO
2781 | IN_DELETE
2782 | IN_CREATE
2783 | IN_DELETE_SELF
ba9703b0 2784 | IN_MOVE_SELF;
532ac7d7
XL
2785
2786pub const IN_CLOEXEC: ::c_int = O_CLOEXEC;
2787pub const IN_NONBLOCK: ::c_int = O_NONBLOCK;
2788
17df50a5
XL
2789// uapi/linux/netfilter/nf_tables.h
2790pub const NFT_TABLE_MAXNAMELEN: ::c_int = 256;
2791pub const NFT_CHAIN_MAXNAMELEN: ::c_int = 256;
2792pub const NFT_SET_MAXNAMELEN: ::c_int = 256;
2793pub const NFT_OBJ_MAXNAMELEN: ::c_int = 256;
2794pub const NFT_USERDATA_MAXLEN: ::c_int = 256;
2795
2796pub const NFT_REG_VERDICT: ::c_int = 0;
2797pub const NFT_REG_1: ::c_int = 1;
2798pub const NFT_REG_2: ::c_int = 2;
2799pub const NFT_REG_3: ::c_int = 3;
2800pub const NFT_REG_4: ::c_int = 4;
2801pub const __NFT_REG_MAX: ::c_int = 5;
2802pub const NFT_REG32_00: ::c_int = 8;
2803pub const NFT_REG32_01: ::c_int = 9;
2804pub const NFT_REG32_02: ::c_int = 10;
2805pub const NFT_REG32_03: ::c_int = 11;
2806pub const NFT_REG32_04: ::c_int = 12;
2807pub const NFT_REG32_05: ::c_int = 13;
2808pub const NFT_REG32_06: ::c_int = 14;
2809pub const NFT_REG32_07: ::c_int = 15;
2810pub const NFT_REG32_08: ::c_int = 16;
2811pub const NFT_REG32_09: ::c_int = 17;
2812pub const NFT_REG32_10: ::c_int = 18;
2813pub const NFT_REG32_11: ::c_int = 19;
2814pub const NFT_REG32_12: ::c_int = 20;
2815pub const NFT_REG32_13: ::c_int = 21;
2816pub const NFT_REG32_14: ::c_int = 22;
2817pub const NFT_REG32_15: ::c_int = 23;
2818
2819pub const NFT_REG_SIZE: ::c_int = 16;
2820pub const NFT_REG32_SIZE: ::c_int = 4;
2821
2822pub const NFT_CONTINUE: ::c_int = -1;
2823pub const NFT_BREAK: ::c_int = -2;
2824pub const NFT_JUMP: ::c_int = -3;
2825pub const NFT_GOTO: ::c_int = -4;
2826pub const NFT_RETURN: ::c_int = -5;
2827
2828pub const NFT_MSG_NEWTABLE: ::c_int = 0;
2829pub const NFT_MSG_GETTABLE: ::c_int = 1;
2830pub const NFT_MSG_DELTABLE: ::c_int = 2;
2831pub const NFT_MSG_NEWCHAIN: ::c_int = 3;
2832pub const NFT_MSG_GETCHAIN: ::c_int = 4;
2833pub const NFT_MSG_DELCHAIN: ::c_int = 5;
2834pub const NFT_MSG_NEWRULE: ::c_int = 6;
2835pub const NFT_MSG_GETRULE: ::c_int = 7;
2836pub const NFT_MSG_DELRULE: ::c_int = 8;
2837pub const NFT_MSG_NEWSET: ::c_int = 9;
2838pub const NFT_MSG_GETSET: ::c_int = 10;
2839pub const NFT_MSG_DELSET: ::c_int = 11;
2840pub const NFT_MSG_NEWSETELEM: ::c_int = 12;
2841pub const NFT_MSG_GETSETELEM: ::c_int = 13;
2842pub const NFT_MSG_DELSETELEM: ::c_int = 14;
2843pub const NFT_MSG_NEWGEN: ::c_int = 15;
2844pub const NFT_MSG_GETGEN: ::c_int = 16;
2845pub const NFT_MSG_TRACE: ::c_int = 17;
2846cfg_if! {
2847 if #[cfg(not(target_arch = "sparc64"))] {
2848 pub const NFT_MSG_NEWOBJ: ::c_int = 18;
2849 pub const NFT_MSG_GETOBJ: ::c_int = 19;
2850 pub const NFT_MSG_DELOBJ: ::c_int = 20;
2851 pub const NFT_MSG_GETOBJ_RESET: ::c_int = 21;
2852 }
2853}
2854pub const NFT_MSG_MAX: ::c_int = 25;
2855
2856pub const NFT_SET_ANONYMOUS: ::c_int = 0x1;
2857pub const NFT_SET_CONSTANT: ::c_int = 0x2;
2858pub const NFT_SET_INTERVAL: ::c_int = 0x4;
2859pub const NFT_SET_MAP: ::c_int = 0x8;
2860pub const NFT_SET_TIMEOUT: ::c_int = 0x10;
2861pub const NFT_SET_EVAL: ::c_int = 0x20;
2862
2863pub const NFT_SET_POL_PERFORMANCE: ::c_int = 0;
2864pub const NFT_SET_POL_MEMORY: ::c_int = 1;
2865
2866pub const NFT_SET_ELEM_INTERVAL_END: ::c_int = 0x1;
2867
2868pub const NFT_DATA_VALUE: ::c_uint = 0;
2869pub const NFT_DATA_VERDICT: ::c_uint = 0xffffff00;
2870
2871pub const NFT_DATA_RESERVED_MASK: ::c_uint = 0xffffff00;
2872
2873pub const NFT_DATA_VALUE_MAXLEN: ::c_int = 64;
2874
2875pub const NFT_BYTEORDER_NTOH: ::c_int = 0;
2876pub const NFT_BYTEORDER_HTON: ::c_int = 1;
2877
2878pub const NFT_CMP_EQ: ::c_int = 0;
2879pub const NFT_CMP_NEQ: ::c_int = 1;
2880pub const NFT_CMP_LT: ::c_int = 2;
2881pub const NFT_CMP_LTE: ::c_int = 3;
2882pub const NFT_CMP_GT: ::c_int = 4;
2883pub const NFT_CMP_GTE: ::c_int = 5;
2884
2885pub const NFT_RANGE_EQ: ::c_int = 0;
2886pub const NFT_RANGE_NEQ: ::c_int = 1;
2887
2888pub const NFT_LOOKUP_F_INV: ::c_int = 1 << 0;
2889
2890pub const NFT_DYNSET_OP_ADD: ::c_int = 0;
2891pub const NFT_DYNSET_OP_UPDATE: ::c_int = 1;
2892
2893pub const NFT_DYNSET_F_INV: ::c_int = 1 << 0;
2894
2895pub const NFT_PAYLOAD_LL_HEADER: ::c_int = 0;
2896pub const NFT_PAYLOAD_NETWORK_HEADER: ::c_int = 1;
2897pub const NFT_PAYLOAD_TRANSPORT_HEADER: ::c_int = 2;
2898
2899pub const NFT_PAYLOAD_CSUM_NONE: ::c_int = 0;
2900pub const NFT_PAYLOAD_CSUM_INET: ::c_int = 1;
2901
2902pub const NFT_META_LEN: ::c_int = 0;
2903pub const NFT_META_PROTOCOL: ::c_int = 1;
2904pub const NFT_META_PRIORITY: ::c_int = 2;
2905pub const NFT_META_MARK: ::c_int = 3;
2906pub const NFT_META_IIF: ::c_int = 4;
2907pub const NFT_META_OIF: ::c_int = 5;
2908pub const NFT_META_IIFNAME: ::c_int = 6;
2909pub const NFT_META_OIFNAME: ::c_int = 7;
2910pub const NFT_META_IIFTYPE: ::c_int = 8;
2911pub const NFT_META_OIFTYPE: ::c_int = 9;
2912pub const NFT_META_SKUID: ::c_int = 10;
2913pub const NFT_META_SKGID: ::c_int = 11;
2914pub const NFT_META_NFTRACE: ::c_int = 12;
2915pub const NFT_META_RTCLASSID: ::c_int = 13;
2916pub const NFT_META_SECMARK: ::c_int = 14;
2917pub const NFT_META_NFPROTO: ::c_int = 15;
2918pub const NFT_META_L4PROTO: ::c_int = 16;
2919pub const NFT_META_BRI_IIFNAME: ::c_int = 17;
2920pub const NFT_META_BRI_OIFNAME: ::c_int = 18;
2921pub const NFT_META_PKTTYPE: ::c_int = 19;
2922pub const NFT_META_CPU: ::c_int = 20;
2923pub const NFT_META_IIFGROUP: ::c_int = 21;
2924pub const NFT_META_OIFGROUP: ::c_int = 22;
2925pub const NFT_META_CGROUP: ::c_int = 23;
2926pub const NFT_META_PRANDOM: ::c_int = 24;
2927
2928pub const NFT_CT_STATE: ::c_int = 0;
2929pub const NFT_CT_DIRECTION: ::c_int = 1;
2930pub const NFT_CT_STATUS: ::c_int = 2;
2931pub const NFT_CT_MARK: ::c_int = 3;
2932pub const NFT_CT_SECMARK: ::c_int = 4;
2933pub const NFT_CT_EXPIRATION: ::c_int = 5;
2934pub const NFT_CT_HELPER: ::c_int = 6;
2935pub const NFT_CT_L3PROTOCOL: ::c_int = 7;
2936pub const NFT_CT_SRC: ::c_int = 8;
2937pub const NFT_CT_DST: ::c_int = 9;
2938pub const NFT_CT_PROTOCOL: ::c_int = 10;
2939pub const NFT_CT_PROTO_SRC: ::c_int = 11;
2940pub const NFT_CT_PROTO_DST: ::c_int = 12;
2941pub const NFT_CT_LABELS: ::c_int = 13;
2942pub const NFT_CT_PKTS: ::c_int = 14;
2943pub const NFT_CT_BYTES: ::c_int = 15;
2944
2945pub const NFT_LIMIT_PKTS: ::c_int = 0;
2946pub const NFT_LIMIT_PKT_BYTES: ::c_int = 1;
2947
2948pub const NFT_LIMIT_F_INV: ::c_int = 1 << 0;
2949
2950pub const NFT_QUEUE_FLAG_BYPASS: ::c_int = 0x01;
2951pub const NFT_QUEUE_FLAG_CPU_FANOUT: ::c_int = 0x02;
2952pub const NFT_QUEUE_FLAG_MASK: ::c_int = 0x03;
2953
2954pub const NFT_QUOTA_F_INV: ::c_int = 1 << 0;
2955
2956pub const NFT_REJECT_ICMP_UNREACH: ::c_int = 0;
2957pub const NFT_REJECT_TCP_RST: ::c_int = 1;
2958pub const NFT_REJECT_ICMPX_UNREACH: ::c_int = 2;
2959
2960pub const NFT_REJECT_ICMPX_NO_ROUTE: ::c_int = 0;
2961pub const NFT_REJECT_ICMPX_PORT_UNREACH: ::c_int = 1;
2962pub const NFT_REJECT_ICMPX_HOST_UNREACH: ::c_int = 2;
2963pub const NFT_REJECT_ICMPX_ADMIN_PROHIBITED: ::c_int = 3;
2964
2965pub const NFT_NAT_SNAT: ::c_int = 0;
2966pub const NFT_NAT_DNAT: ::c_int = 1;
2967
2968pub const NFT_TRACETYPE_UNSPEC: ::c_int = 0;
2969pub const NFT_TRACETYPE_POLICY: ::c_int = 1;
2970pub const NFT_TRACETYPE_RETURN: ::c_int = 2;
2971pub const NFT_TRACETYPE_RULE: ::c_int = 3;
2972
2973pub const NFT_NG_INCREMENTAL: ::c_int = 0;
2974pub const NFT_NG_RANDOM: ::c_int = 1;
2975
cdc7bbd5
XL
2976// linux/input.h
2977pub const FF_MAX: ::__u16 = 0x7f;
2978pub const FF_CNT: usize = FF_MAX as usize + 1;
2979
2980// linux/input-event-codes.h
2981pub const INPUT_PROP_MAX: ::__u16 = 0x1f;
2982pub const INPUT_PROP_CNT: usize = INPUT_PROP_MAX as usize + 1;
2983pub const EV_MAX: ::__u16 = 0x1f;
2984pub const EV_CNT: usize = EV_MAX as usize + 1;
2985pub const SYN_MAX: ::__u16 = 0xf;
2986pub const SYN_CNT: usize = SYN_MAX as usize + 1;
2987pub const KEY_MAX: ::__u16 = 0x2ff;
2988pub const KEY_CNT: usize = KEY_MAX as usize + 1;
2989pub const REL_MAX: ::__u16 = 0x0f;
2990pub const REL_CNT: usize = REL_MAX as usize + 1;
2991pub const ABS_MAX: ::__u16 = 0x3f;
2992pub const ABS_CNT: usize = ABS_MAX as usize + 1;
2993pub const SW_MAX: ::__u16 = 0x10;
2994pub const SW_CNT: usize = SW_MAX as usize + 1;
2995pub const MSC_MAX: ::__u16 = 0x07;
2996pub const MSC_CNT: usize = MSC_MAX as usize + 1;
2997pub const LED_MAX: ::__u16 = 0x0f;
2998pub const LED_CNT: usize = LED_MAX as usize + 1;
2999pub const REP_MAX: ::__u16 = 0x01;
3000pub const REP_CNT: usize = REP_MAX as usize + 1;
3001pub const SND_MAX: ::__u16 = 0x07;
3002pub const SND_CNT: usize = SND_MAX as usize + 1;
3003
3004// linux/uinput.h
3005pub const UINPUT_VERSION: ::c_uint = 5;
3006pub const UINPUT_MAX_NAME_SIZE: usize = 80;
3007
ba9703b0
XL
3008// uapi/linux/fanotify.h
3009pub const FAN_ACCESS: u64 = 0x0000_0001;
3010pub const FAN_MODIFY: u64 = 0x0000_0002;
3011pub const FAN_CLOSE_WRITE: u64 = 0x0000_0008;
3012pub const FAN_CLOSE_NOWRITE: u64 = 0x0000_0010;
3013pub const FAN_OPEN: u64 = 0x0000_0020;
3014
3015pub const FAN_Q_OVERFLOW: u64 = 0x0000_4000;
3016
3017pub const FAN_OPEN_PERM: u64 = 0x0001_0000;
3018pub const FAN_ACCESS_PERM: u64 = 0x0002_0000;
3019
3020pub const FAN_ONDIR: u64 = 0x4000_0000;
3021
3022pub const FAN_EVENT_ON_CHILD: u64 = 0x0800_0000;
3023
3024pub const FAN_CLOSE: u64 = FAN_CLOSE_WRITE | FAN_CLOSE_NOWRITE;
3025
3026pub const FAN_CLOEXEC: ::c_uint = 0x0000_0001;
3027pub const FAN_NONBLOCK: ::c_uint = 0x0000_0002;
3028
3029pub const FAN_CLASS_NOTIF: ::c_uint = 0x0000_0000;
3030pub const FAN_CLASS_CONTENT: ::c_uint = 0x0000_0004;
3031pub const FAN_CLASS_PRE_CONTENT: ::c_uint = 0x0000_0008;
3032
3033pub const FAN_UNLIMITED_QUEUE: ::c_uint = 0x0000_0010;
3034pub const FAN_UNLIMITED_MARKS: ::c_uint = 0x0000_0020;
3035
3036pub const FAN_MARK_ADD: ::c_uint = 0x0000_0001;
3037pub const FAN_MARK_REMOVE: ::c_uint = 0x0000_0002;
3038pub const FAN_MARK_DONT_FOLLOW: ::c_uint = 0x0000_0004;
3039pub const FAN_MARK_ONLYDIR: ::c_uint = 0x0000_0008;
ba9703b0
XL
3040pub const FAN_MARK_IGNORED_MASK: ::c_uint = 0x0000_0020;
3041pub const FAN_MARK_IGNORED_SURV_MODIFY: ::c_uint = 0x0000_0040;
3042pub const FAN_MARK_FLUSH: ::c_uint = 0x0000_0080;
3043
3044pub const FANOTIFY_METADATA_VERSION: u8 = 3;
3045
3046pub const FAN_ALLOW: u32 = 0x01;
3047pub const FAN_DENY: u32 = 0x02;
3048
3049pub const FAN_NOFD: ::c_int = -1;
3050
416331ca
XL
3051pub const FUTEX_WAIT: ::c_int = 0;
3052pub const FUTEX_WAKE: ::c_int = 1;
3053pub const FUTEX_FD: ::c_int = 2;
3054pub const FUTEX_REQUEUE: ::c_int = 3;
3055pub const FUTEX_CMP_REQUEUE: ::c_int = 4;
3056pub const FUTEX_WAKE_OP: ::c_int = 5;
3057pub const FUTEX_LOCK_PI: ::c_int = 6;
3058pub const FUTEX_UNLOCK_PI: ::c_int = 7;
3059pub const FUTEX_TRYLOCK_PI: ::c_int = 8;
3060pub const FUTEX_WAIT_BITSET: ::c_int = 9;
3061pub const FUTEX_WAKE_BITSET: ::c_int = 10;
3062pub const FUTEX_WAIT_REQUEUE_PI: ::c_int = 11;
3063pub const FUTEX_CMP_REQUEUE_PI: ::c_int = 12;
3064
3065pub const FUTEX_PRIVATE_FLAG: ::c_int = 128;
3066pub const FUTEX_CLOCK_REALTIME: ::c_int = 256;
cdc7bbd5 3067pub const FUTEX_CMD_MASK: ::c_int = !(FUTEX_PRIVATE_FLAG | FUTEX_CLOCK_REALTIME);
416331ca 3068
ba9703b0
XL
3069// linux/reboot.h
3070pub const LINUX_REBOOT_MAGIC1: ::c_int = 0xfee1dead;
3071pub const LINUX_REBOOT_MAGIC2: ::c_int = 672274793;
3072pub const LINUX_REBOOT_MAGIC2A: ::c_int = 85072278;
3073pub const LINUX_REBOOT_MAGIC2B: ::c_int = 369367448;
3074pub const LINUX_REBOOT_MAGIC2C: ::c_int = 537993216;
3075
3076pub const LINUX_REBOOT_CMD_RESTART: ::c_int = 0x01234567;
3077pub const LINUX_REBOOT_CMD_HALT: ::c_int = 0xCDEF0123;
3078pub const LINUX_REBOOT_CMD_CAD_ON: ::c_int = 0x89ABCDEF;
3079pub const LINUX_REBOOT_CMD_CAD_OFF: ::c_int = 0x00000000;
3080pub const LINUX_REBOOT_CMD_POWER_OFF: ::c_int = 0x4321FEDC;
3081pub const LINUX_REBOOT_CMD_RESTART2: ::c_int = 0xA1B2C3D4;
3082pub const LINUX_REBOOT_CMD_SW_SUSPEND: ::c_int = 0xD000FCE2;
3083pub const LINUX_REBOOT_CMD_KEXEC: ::c_int = 0x45584543;
3084
3085pub const REG_EXTENDED: ::c_int = 1;
3086pub const REG_ICASE: ::c_int = 2;
3087pub const REG_NEWLINE: ::c_int = 4;
3088pub const REG_NOSUB: ::c_int = 8;
3089
3090pub const REG_NOTBOL: ::c_int = 1;
3091pub const REG_NOTEOL: ::c_int = 2;
3092
3093pub const REG_ENOSYS: ::c_int = -1;
3094pub const REG_NOMATCH: ::c_int = 1;
3095pub const REG_BADPAT: ::c_int = 2;
3096pub const REG_ECOLLATE: ::c_int = 3;
3097pub const REG_ECTYPE: ::c_int = 4;
3098pub const REG_EESCAPE: ::c_int = 5;
3099pub const REG_ESUBREG: ::c_int = 6;
3100pub const REG_EBRACK: ::c_int = 7;
3101pub const REG_EPAREN: ::c_int = 8;
3102pub const REG_EBRACE: ::c_int = 9;
3103pub const REG_BADBR: ::c_int = 10;
3104pub const REG_ERANGE: ::c_int = 11;
3105pub const REG_ESPACE: ::c_int = 12;
3106pub const REG_BADRPT: ::c_int = 13;
3107
3108// linux/errqueue.h
3109pub const SO_EE_ORIGIN_NONE: u8 = 0;
3110pub const SO_EE_ORIGIN_LOCAL: u8 = 1;
3111pub const SO_EE_ORIGIN_ICMP: u8 = 2;
3112pub const SO_EE_ORIGIN_ICMP6: u8 = 3;
3113pub const SO_EE_ORIGIN_TXSTATUS: u8 = 4;
3114pub const SO_EE_ORIGIN_TIMESTAMPING: u8 = SO_EE_ORIGIN_TXSTATUS;
3115
3116// errno.h
3117pub const EPERM: ::c_int = 1;
3118pub const ENOENT: ::c_int = 2;
3119pub const ESRCH: ::c_int = 3;
3120pub const EINTR: ::c_int = 4;
3121pub const EIO: ::c_int = 5;
3122pub const ENXIO: ::c_int = 6;
3123pub const E2BIG: ::c_int = 7;
3124pub const ENOEXEC: ::c_int = 8;
3125pub const EBADF: ::c_int = 9;
3126pub const ECHILD: ::c_int = 10;
3127pub const EAGAIN: ::c_int = 11;
3128pub const ENOMEM: ::c_int = 12;
3129pub const EACCES: ::c_int = 13;
3130pub const EFAULT: ::c_int = 14;
3131pub const ENOTBLK: ::c_int = 15;
3132pub const EBUSY: ::c_int = 16;
3133pub const EEXIST: ::c_int = 17;
3134pub const EXDEV: ::c_int = 18;
3135pub const ENODEV: ::c_int = 19;
3136pub const ENOTDIR: ::c_int = 20;
3137pub const EISDIR: ::c_int = 21;
3138pub const EINVAL: ::c_int = 22;
3139pub const ENFILE: ::c_int = 23;
3140pub const EMFILE: ::c_int = 24;
3141pub const ENOTTY: ::c_int = 25;
3142pub const ETXTBSY: ::c_int = 26;
3143pub const EFBIG: ::c_int = 27;
3144pub const ENOSPC: ::c_int = 28;
3145pub const ESPIPE: ::c_int = 29;
3146pub const EROFS: ::c_int = 30;
3147pub const EMLINK: ::c_int = 31;
3148pub const EPIPE: ::c_int = 32;
3149pub const EDOM: ::c_int = 33;
3150pub const ERANGE: ::c_int = 34;
3151pub const EWOULDBLOCK: ::c_int = EAGAIN;
3152
5869c6ff
XL
3153// linux/can.h
3154pub const CAN_EFF_FLAG: canid_t = 0x80000000;
3155pub const CAN_RTR_FLAG: canid_t = 0x40000000;
3156pub const CAN_ERR_FLAG: canid_t = 0x20000000;
3157pub const CAN_SFF_MASK: canid_t = 0x000007FF;
3158pub const CAN_EFF_MASK: canid_t = 0x1FFFFFFF;
3159pub const CAN_ERR_MASK: canid_t = 0x1FFFFFFF;
3160
3161pub const CAN_SFF_ID_BITS: ::c_int = 11;
3162pub const CAN_EFF_ID_BITS: ::c_int = 29;
3163
3164pub const CAN_MAX_DLC: ::c_int = 8;
3165pub const CAN_MAX_DLEN: usize = 8;
3166pub const CANFD_MAX_DLC: ::c_int = 15;
3167pub const CANFD_MAX_DLEN: usize = 64;
3168
3169pub const CANFD_BRS: ::c_int = 0x01;
3170pub const CANFD_ESI: ::c_int = 0x02;
3171
3172cfg_if! {
3173 if #[cfg(libc_align)] {
3174 pub const CAN_MTU: usize = ::mem::size_of::<can_frame>();
3175 pub const CANFD_MTU: usize = ::mem::size_of::<canfd_frame>();
3176 }
3177}
3178
3179pub const CAN_RAW: ::c_int = 1;
3180pub const CAN_BCM: ::c_int = 2;
3181pub const CAN_TP16: ::c_int = 3;
3182pub const CAN_TP20: ::c_int = 4;
3183pub const CAN_MCNET: ::c_int = 5;
3184pub const CAN_ISOTP: ::c_int = 6;
3185pub const CAN_J1939: ::c_int = 7;
3186pub const CAN_NPROTO: ::c_int = 8;
3187
3188pub const SOL_CAN_BASE: ::c_int = 100;
3189
3190pub const CAN_INV_FILTER: canid_t = 0x20000000;
3191pub const CAN_RAW_FILTER_MAX: ::c_int = 512;
3192
3c0e092e
XL
3193// linux/can/raw.h
3194pub const SOL_CAN_RAW: ::c_int = SOL_CAN_BASE + CAN_RAW;
3195pub const CAN_RAW_FILTER: ::c_int = 1;
3196pub const CAN_RAW_ERR_FILTER: ::c_int = 2;
3197pub const CAN_RAW_LOOPBACK: ::c_int = 3;
3198pub const CAN_RAW_RECV_OWN_MSGS: ::c_int = 4;
3199pub const CAN_RAW_FD_FRAMES: ::c_int = 5;
3200pub const CAN_RAW_JOIN_FILTERS: ::c_int = 6;
136023e0 3201
5e7ed085
FG
3202// linux/can/j1939.h
3203pub const SOL_CAN_J1939: ::c_int = SOL_CAN_BASE + CAN_J1939;
3204
3205pub const J1939_MAX_UNICAST_ADDR: ::c_uchar = 0xfd;
3206pub const J1939_IDLE_ADDR: ::c_uchar = 0xfe;
3207pub const J1939_NO_ADDR: ::c_uchar = 0xff;
3208pub const J1939_NO_NAME: ::c_ulong = 0;
3209pub const J1939_PGN_REQUEST: ::c_uint = 0x0ea00;
3210pub const J1939_PGN_ADDRESS_CLAIMED: ::c_uint = 0x0ee00;
3211pub const J1939_PGN_ADDRESS_COMMANDED: ::c_uint = 0x0fed8;
3212pub const J1939_PGN_PDU1_MAX: ::c_uint = 0x3ff00;
3213pub const J1939_PGN_MAX: ::c_uint = 0x3ffff;
3214pub const J1939_NO_PGN: ::c_uint = 0x40000;
3215
3216pub const SO_J1939_FILTER: ::c_int = 1;
3217pub const SO_J1939_PROMISC: ::c_int = 2;
3218pub const SO_J1939_SEND_PRIO: ::c_int = 3;
3219pub const SO_J1939_ERRQUEUE: ::c_int = 4;
3220
3221pub const SCM_J1939_DEST_ADDR: ::c_int = 1;
3222pub const SCM_J1939_DEST_NAME: ::c_int = 2;
3223pub const SCM_J1939_PRIO: ::c_int = 3;
3224pub const SCM_J1939_ERRQUEUE: ::c_int = 4;
3225
3226pub const J1939_NLA_PAD: ::c_int = 0;
3227pub const J1939_NLA_BYTES_ACKED: ::c_int = 1;
3228pub const J1939_NLA_TOTAL_SIZE: ::c_int = 2;
3229pub const J1939_NLA_PGN: ::c_int = 3;
3230pub const J1939_NLA_SRC_NAME: ::c_int = 4;
3231pub const J1939_NLA_DEST_NAME: ::c_int = 5;
3232pub const J1939_NLA_SRC_ADDR: ::c_int = 6;
3233pub const J1939_NLA_DEST_ADDR: ::c_int = 7;
3234
3235pub const J1939_EE_INFO_NONE: ::c_int = 0;
3236pub const J1939_EE_INFO_TX_ABORT: ::c_int = 1;
3237pub const J1939_EE_INFO_RX_RTS: ::c_int = 2;
3238pub const J1939_EE_INFO_RX_DPO: ::c_int = 3;
3239pub const J1939_EE_INFO_RX_ABORT: ::c_int = 4;
3240
3241pub const J1939_FILTER_MAX: ::c_int = 512;
3242
476ff2be 3243f! {
e1599b0c
XL
3244 pub fn NLA_ALIGN(len: ::c_int) -> ::c_int {
3245 return ((len) + NLA_ALIGNTO - 1) & !(NLA_ALIGNTO - 1)
3246 }
3247
532ac7d7
XL
3248 pub fn CMSG_NXTHDR(mhdr: *const msghdr,
3249 cmsg: *const cmsghdr) -> *mut cmsghdr {
3250 if ((*cmsg).cmsg_len as usize) < ::mem::size_of::<cmsghdr>() {
3251 return 0 as *mut cmsghdr;
3252 };
3253 let next = (cmsg as usize +
3254 super::CMSG_ALIGN((*cmsg).cmsg_len as usize))
3255 as *mut cmsghdr;
3256 let max = (*mhdr).msg_control as usize
3257 + (*mhdr).msg_controllen as usize;
3258 if (next.offset(1)) as usize > max ||
3259 next as usize + super::CMSG_ALIGN((*next).cmsg_len as usize) > max
3260 {
3261 0 as *mut cmsghdr
3262 } else {
3263 next as *mut cmsghdr
3264 }
3265 }
3266
f035d41b
XL
3267 pub fn CPU_ALLOC_SIZE(count: ::c_int) -> ::size_t {
3268 let _dummy: cpu_set_t = ::mem::zeroed();
3269 let size_in_bits = 8 * ::mem::size_of_val(&_dummy.bits[0]);
3270 ((count as ::size_t + size_in_bits - 1) / 8) as ::size_t
3271 }
3272
476ff2be
SL
3273 pub fn CPU_ZERO(cpuset: &mut cpu_set_t) -> () {
3274 for slot in cpuset.bits.iter_mut() {
3275 *slot = 0;
3276 }
3277 }
3278
3279 pub fn CPU_SET(cpu: usize, cpuset: &mut cpu_set_t) -> () {
532ac7d7
XL
3280 let size_in_bits
3281 = 8 * ::mem::size_of_val(&cpuset.bits[0]); // 32, 64 etc
476ff2be
SL
3282 let (idx, offset) = (cpu / size_in_bits, cpu % size_in_bits);
3283 cpuset.bits[idx] |= 1 << offset;
3284 ()
3285 }
3286
3287 pub fn CPU_CLR(cpu: usize, cpuset: &mut cpu_set_t) -> () {
532ac7d7
XL
3288 let size_in_bits
3289 = 8 * ::mem::size_of_val(&cpuset.bits[0]); // 32, 64 etc
476ff2be
SL
3290 let (idx, offset) = (cpu / size_in_bits, cpu % size_in_bits);
3291 cpuset.bits[idx] &= !(1 << offset);
3292 ()
3293 }
3294
3295 pub fn CPU_ISSET(cpu: usize, cpuset: &cpu_set_t) -> bool {
532ac7d7 3296 let size_in_bits = 8 * ::mem::size_of_val(&cpuset.bits[0]);
476ff2be
SL
3297 let (idx, offset) = (cpu / size_in_bits, cpu % size_in_bits);
3298 0 != (cpuset.bits[idx] & (1 << offset))
3299 }
3300
f035d41b
XL
3301 pub fn CPU_COUNT_S(size: usize, cpuset: &cpu_set_t) -> ::c_int {
3302 let mut s: u32 = 0;
3303 let size_of_mask = ::mem::size_of_val(&cpuset.bits[0]);
3304 for i in cpuset.bits[..(size / size_of_mask)].iter() {
3305 s += i.count_ones();
3306 };
3307 s as ::c_int
3308 }
3309
3310 pub fn CPU_COUNT(cpuset: &cpu_set_t) -> ::c_int {
3311 CPU_COUNT_S(::mem::size_of::<cpu_set_t>(), cpuset)
3312 }
3313
476ff2be
SL
3314 pub fn CPU_EQUAL(set1: &cpu_set_t, set2: &cpu_set_t) -> bool {
3315 set1.bits == set2.bits
3316 }
041b39d2
XL
3317
3318 pub fn major(dev: ::dev_t) -> ::c_uint {
3319 let mut major = 0;
3320 major |= (dev & 0x00000000000fff00) >> 8;
3321 major |= (dev & 0xfffff00000000000) >> 32;
3322 major as ::c_uint
3323 }
3324
3325 pub fn minor(dev: ::dev_t) -> ::c_uint {
3326 let mut minor = 0;
ea8adc8c 3327 minor |= (dev & 0x00000000000000ff) >> 0;
041b39d2
XL
3328 minor |= (dev & 0x00000ffffff00000) >> 12;
3329 minor as ::c_uint
3330 }
3331
3332 pub fn makedev(major: ::c_uint, minor: ::c_uint) -> ::dev_t {
3333 let major = major as ::dev_t;
3334 let minor = minor as ::dev_t;
3335 let mut dev = 0;
3336 dev |= (major & 0x00000fff) << 8;
3337 dev |= (major & 0xfffff000) << 32;
3338 dev |= (minor & 0x000000ff) << 0;
3339 dev |= (minor & 0xffffff00) << 12;
3340 dev
3341 }
8faf50e0
XL
3342
3343 pub fn IPTOS_TOS(tos: u8) -> u8 {
3344 tos & IPTOS_TOS_MASK
3345 }
3346
3347 pub fn IPTOS_PREC(tos: u8) -> u8 {
3348 tos & IPTOS_PREC_MASK
3349 }
3350
3351 pub fn RT_TOS(tos: u8) -> u8 {
3352 tos & ::IPTOS_TOS_MASK
3353 }
3354
3355 pub fn RT_ADDRCLASS(flags: u32) -> u32 {
3356 flags >> 23
3357 }
3358
3359 pub fn RT_LOCALADDR(flags: u32) -> bool {
3360 (flags & RTF_ADDRCLASSMASK) == (RTF_LOCAL | RTF_INTERFACE)
3361 }
ba9703b0
XL
3362
3363 pub fn SO_EE_OFFENDER(ee: *const ::sock_extended_err) -> *mut ::sockaddr {
3364 ee.offset(1) as *mut ::sockaddr
3365 }
5099ac24
FG
3366
3367 pub fn BPF_RVAL(code: ::__u32) -> ::__u32 {
3368 code & 0x18
3369 }
3370
3371 pub fn BPF_MISCOP(code: ::__u32) -> ::__u32 {
3372 code & 0xf8
3373 }
3374
3375 pub fn BPF_STMT(code: ::__u16, k: ::__u32) -> sock_filter {
3376 sock_filter{code: code, jt: 0, jf: 0, k: k}
3377 }
3378
3379 pub fn BPF_JUMP(code: ::__u16, k: ::__u32, jt: ::__u8, jf: ::__u8) -> sock_filter {
3380 sock_filter{code: code, jt: jt, jf: jf, k: k}
3381 }
476ff2be
SL
3382}
3383
6a06907d
XL
3384cfg_if! {
3385 if #[cfg(not(target_env = "uclibc"))] {
3386 extern "C" {
3387 pub fn aio_read(aiocbp: *mut aiocb) -> ::c_int;
3388 pub fn aio_write(aiocbp: *mut aiocb) -> ::c_int;
3389 pub fn aio_fsync(op: ::c_int, aiocbp: *mut aiocb) -> ::c_int;
3390 pub fn aio_error(aiocbp: *const aiocb) -> ::c_int;
3391 pub fn aio_return(aiocbp: *mut aiocb) -> ::ssize_t;
3392 pub fn aio_suspend(
3393 aiocb_list: *const *const aiocb,
3394 nitems: ::c_int,
3395 timeout: *const ::timespec,
3396 ) -> ::c_int;
3397 pub fn aio_cancel(fd: ::c_int, aiocbp: *mut aiocb) -> ::c_int;
3398 pub fn lio_listio(
3399 mode: ::c_int,
3400 aiocb_list: *const *mut aiocb,
3401 nitems: ::c_int,
3402 sevp: *mut ::sigevent,
3403 ) -> ::c_int;
3404 pub fn pwritev(
3405 fd: ::c_int,
3406 iov: *const ::iovec,
3407 iovcnt: ::c_int,
3408 offset: ::off_t,
3409 ) -> ::ssize_t;
3410 pub fn preadv(
3411 fd: ::c_int,
3412 iov: *const ::iovec,
3413 iovcnt: ::c_int,
3414 offset: ::off_t,
3415 ) -> ::ssize_t;
3416 pub fn getnameinfo(
3417 sa: *const ::sockaddr,
3418 salen: ::socklen_t,
3419 host: *mut ::c_char,
3420 hostlen: ::socklen_t,
3421 serv: *mut ::c_char,
3422 sevlen: ::socklen_t,
3423 flags: ::c_int,
3424 ) -> ::c_int;
3425 pub fn getloadavg(
3426 loadavg: *mut ::c_double,
3427 nelem: ::c_int
3428 ) -> ::c_int;
3429 pub fn process_vm_readv(
3430 pid: ::pid_t,
3431 local_iov: *const ::iovec,
3432 liovcnt: ::c_ulong,
3433 remote_iov: *const ::iovec,
3434 riovcnt: ::c_ulong,
3435 flags: ::c_ulong,
3436 ) -> isize;
3437 pub fn process_vm_writev(
3438 pid: ::pid_t,
3439 local_iov: *const ::iovec,
3440 liovcnt: ::c_ulong,
3441 remote_iov: *const ::iovec,
3442 riovcnt: ::c_ulong,
3443 flags: ::c_ulong,
3444 ) -> isize;
3445 pub fn futimes(
3446 fd: ::c_int,
3447 times: *const ::timeval
3448 ) -> ::c_int;
3449 }
3450 }
3451}
3452
e74abb32
XL
3453extern "C" {
3454 #[cfg_attr(not(target_env = "musl"), link_name = "__xpg_strerror_r")]
cdc7bbd5 3455 pub fn strerror_r(errnum: ::c_int, buf: *mut c_char, buflen: ::size_t) -> ::c_int;
416331ca 3456
69743fb6
XL
3457 pub fn abs(i: ::c_int) -> ::c_int;
3458 pub fn atof(s: *const ::c_char) -> ::c_double;
3459 pub fn labs(i: ::c_long) -> ::c_long;
3460 pub fn rand() -> ::c_int;
3461 pub fn srand(seed: ::c_uint);
3462
476ff2be
SL
3463 pub fn lutimes(file: *const ::c_char, times: *const ::timeval) -> ::c_int;
3464
3465 pub fn setpwent();
ea8adc8c 3466 pub fn endpwent();
476ff2be 3467 pub fn getpwent() -> *mut passwd;
2c00a5a8
XL
3468 pub fn setgrent();
3469 pub fn endgrent();
3470 pub fn getgrent() -> *mut ::group;
476ff2be
SL
3471 pub fn setspent();
3472 pub fn endspent();
3473 pub fn getspent() -> *mut spwd;
2c00a5a8 3474
ba9703b0
XL
3475 pub fn getspnam(name: *const ::c_char) -> *mut spwd;
3476 // Only `getspnam_r` is implemented for musl, out of all of the reenterant
3477 // functions from `shadow.h`.
3478 // https://git.musl-libc.org/cgit/musl/tree/include/shadow.h
3479 pub fn getspnam_r(
3480 name: *const ::c_char,
3481 spbuf: *mut spwd,
3482 buf: *mut ::c_char,
3483 buflen: ::size_t,
3484 spbufp: *mut *mut spwd,
3485 ) -> ::c_int;
476ff2be 3486
cdc7bbd5 3487 pub fn shm_open(name: *const c_char, oflag: ::c_int, mode: mode_t) -> ::c_int;
476ff2be
SL
3488
3489 // System V IPC
3490 pub fn shmget(key: ::key_t, size: ::size_t, shmflg: ::c_int) -> ::c_int;
cdc7bbd5 3491 pub fn shmat(shmid: ::c_int, shmaddr: *const ::c_void, shmflg: ::c_int) -> *mut ::c_void;
476ff2be 3492 pub fn shmdt(shmaddr: *const ::c_void) -> ::c_int;
cdc7bbd5 3493 pub fn shmctl(shmid: ::c_int, cmd: ::c_int, buf: *mut ::shmid_ds) -> ::c_int;
476ff2be 3494 pub fn ftok(pathname: *const ::c_char, proj_id: ::c_int) -> ::key_t;
041b39d2 3495 pub fn semget(key: ::key_t, nsems: ::c_int, semflag: ::c_int) -> ::c_int;
cdc7bbd5
XL
3496 pub fn semop(semid: ::c_int, sops: *mut ::sembuf, nsops: ::size_t) -> ::c_int;
3497 pub fn semctl(semid: ::c_int, semnum: ::c_int, cmd: ::c_int, ...) -> ::c_int;
3498 pub fn msgctl(msqid: ::c_int, cmd: ::c_int, buf: *mut msqid_ds) -> ::c_int;
476ff2be 3499 pub fn msgget(key: ::key_t, msgflg: ::c_int) -> ::c_int;
e74abb32
XL
3500 pub fn msgrcv(
3501 msqid: ::c_int,
3502 msgp: *mut ::c_void,
3503 msgsz: ::size_t,
3504 msgtyp: ::c_long,
3505 msgflg: ::c_int,
3506 ) -> ::ssize_t;
3507 pub fn msgsnd(
3508 msqid: ::c_int,
3509 msgp: *const ::c_void,
3510 msgsz: ::size_t,
3511 msgflg: ::c_int,
3512 ) -> ::c_int;
476ff2be 3513
cdc7bbd5 3514 pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int;
476ff2be
SL
3515 pub fn __errno_location() -> *mut ::c_int;
3516
cdc7bbd5 3517 pub fn fopen64(filename: *const c_char, mode: *const c_char) -> *mut ::FILE;
e74abb32
XL
3518 pub fn freopen64(
3519 filename: *const c_char,
3520 mode: *const c_char,
3521 file: *mut ::FILE,
3522 ) -> *mut ::FILE;
476ff2be
SL
3523 pub fn tmpfile64() -> *mut ::FILE;
3524 pub fn fgetpos64(stream: *mut ::FILE, ptr: *mut fpos64_t) -> ::c_int;
3525 pub fn fsetpos64(stream: *mut ::FILE, ptr: *const fpos64_t) -> ::c_int;
cdc7bbd5 3526 pub fn fseeko64(stream: *mut ::FILE, offset: ::off64_t, whence: ::c_int) -> ::c_int;
476ff2be 3527 pub fn ftello64(stream: *mut ::FILE) -> ::off64_t;
cdc7bbd5
XL
3528 pub fn fallocate(fd: ::c_int, mode: ::c_int, offset: ::off_t, len: ::off_t) -> ::c_int;
3529 pub fn fallocate64(fd: ::c_int, mode: ::c_int, offset: ::off64_t, len: ::off64_t) -> ::c_int;
3530 pub fn posix_fallocate(fd: ::c_int, offset: ::off_t, len: ::off_t) -> ::c_int;
3531 pub fn posix_fallocate64(fd: ::c_int, offset: ::off64_t, len: ::off64_t) -> ::c_int;
3532 pub fn readahead(fd: ::c_int, offset: ::off64_t, count: ::size_t) -> ::ssize_t;
e74abb32
XL
3533 pub fn getxattr(
3534 path: *const c_char,
3535 name: *const c_char,
3536 value: *mut ::c_void,
3537 size: ::size_t,
3538 ) -> ::ssize_t;
3539 pub fn lgetxattr(
3540 path: *const c_char,
3541 name: *const c_char,
3542 value: *mut ::c_void,
3543 size: ::size_t,
3544 ) -> ::ssize_t;
3545 pub fn fgetxattr(
3546 filedes: ::c_int,
3547 name: *const c_char,
3548 value: *mut ::c_void,
3549 size: ::size_t,
3550 ) -> ::ssize_t;
3551 pub fn setxattr(
3552 path: *const c_char,
3553 name: *const c_char,
3554 value: *const ::c_void,
3555 size: ::size_t,
3556 flags: ::c_int,
3557 ) -> ::c_int;
3558 pub fn lsetxattr(
3559 path: *const c_char,
3560 name: *const c_char,
3561 value: *const ::c_void,
3562 size: ::size_t,
3563 flags: ::c_int,
3564 ) -> ::c_int;
3565 pub fn fsetxattr(
3566 filedes: ::c_int,
3567 name: *const c_char,
3568 value: *const ::c_void,
3569 size: ::size_t,
3570 flags: ::c_int,
3571 ) -> ::c_int;
cdc7bbd5
XL
3572 pub fn listxattr(path: *const c_char, list: *mut c_char, size: ::size_t) -> ::ssize_t;
3573 pub fn llistxattr(path: *const c_char, list: *mut c_char, size: ::size_t) -> ::ssize_t;
3574 pub fn flistxattr(filedes: ::c_int, list: *mut c_char, size: ::size_t) -> ::ssize_t;
476ff2be
SL
3575 pub fn removexattr(path: *const c_char, name: *const c_char) -> ::c_int;
3576 pub fn lremovexattr(path: *const c_char, name: *const c_char) -> ::c_int;
3577 pub fn fremovexattr(filedes: ::c_int, name: *const c_char) -> ::c_int;
cdc7bbd5 3578 pub fn signalfd(fd: ::c_int, mask: *const ::sigset_t, flags: ::c_int) -> ::c_int;
136023e0 3579 pub fn timerfd_create(clockid: ::clockid_t, flags: ::c_int) -> ::c_int;
cdc7bbd5 3580 pub fn timerfd_gettime(fd: ::c_int, curr_value: *mut itimerspec) -> ::c_int;
e74abb32
XL
3581 pub fn timerfd_settime(
3582 fd: ::c_int,
3583 flags: ::c_int,
3584 new_value: *const itimerspec,
3585 old_value: *mut itimerspec,
3586 ) -> ::c_int;
e74abb32
XL
3587 pub fn quotactl(
3588 cmd: ::c_int,
3589 special: *const ::c_char,
3590 id: ::c_int,
3591 data: *mut ::c_char,
3592 ) -> ::c_int;
476ff2be
SL
3593 pub fn mq_open(name: *const ::c_char, oflag: ::c_int, ...) -> ::mqd_t;
3594 pub fn mq_close(mqd: ::mqd_t) -> ::c_int;
3595 pub fn mq_unlink(name: *const ::c_char) -> ::c_int;
e74abb32
XL
3596 pub fn mq_receive(
3597 mqd: ::mqd_t,
3598 msg_ptr: *mut ::c_char,
3599 msg_len: ::size_t,
3600 msg_prio: *mut ::c_uint,
3601 ) -> ::ssize_t;
3602 pub fn mq_timedreceive(
3603 mqd: ::mqd_t,
3604 msg_ptr: *mut ::c_char,
3605 msg_len: ::size_t,
3606 msg_prio: *mut ::c_uint,
3607 abs_timeout: *const ::timespec,
3608 ) -> ::ssize_t;
3609 pub fn mq_send(
3610 mqd: ::mqd_t,
3611 msg_ptr: *const ::c_char,
3612 msg_len: ::size_t,
3613 msg_prio: ::c_uint,
3614 ) -> ::c_int;
3615 pub fn mq_timedsend(
3616 mqd: ::mqd_t,
3617 msg_ptr: *const ::c_char,
3618 msg_len: ::size_t,
3619 msg_prio: ::c_uint,
3620 abs_timeout: *const ::timespec,
3621 ) -> ::c_int;
476ff2be 3622 pub fn mq_getattr(mqd: ::mqd_t, attr: *mut ::mq_attr) -> ::c_int;
cdc7bbd5 3623 pub fn mq_setattr(mqd: ::mqd_t, newattr: *const ::mq_attr, oldattr: *mut ::mq_attr) -> ::c_int;
e74abb32
XL
3624 pub fn epoll_pwait(
3625 epfd: ::c_int,
3626 events: *mut ::epoll_event,
3627 maxevents: ::c_int,
3628 timeout: ::c_int,
3629 sigmask: *const ::sigset_t,
3630 ) -> ::c_int;
476ff2be 3631 pub fn dup3(oldfd: ::c_int, newfd: ::c_int, flags: ::c_int) -> ::c_int;
476ff2be 3632 pub fn mkostemp(template: *mut ::c_char, flags: ::c_int) -> ::c_int;
cdc7bbd5 3633 pub fn mkostemps(template: *mut ::c_char, suffixlen: ::c_int, flags: ::c_int) -> ::c_int;
e74abb32
XL
3634 pub fn sigtimedwait(
3635 set: *const sigset_t,
3636 info: *mut siginfo_t,
3637 timeout: *const ::timespec,
3638 ) -> ::c_int;
3639 pub fn sigwaitinfo(set: *const sigset_t, info: *mut siginfo_t) -> ::c_int;
cdc7bbd5 3640 pub fn nl_langinfo_l(item: ::nl_item, locale: ::locale_t) -> *mut ::c_char;
5869c6ff
XL
3641 pub fn accept4(
3642 fd: ::c_int,
3643 addr: *mut ::sockaddr,
3644 len: *mut ::socklen_t,
3645 flg: ::c_int,
3646 ) -> ::c_int;
c295e0f8
XL
3647 pub fn pthread_getaffinity_np(
3648 thread: ::pthread_t,
3649 cpusetsize: ::size_t,
3650 cpuset: *mut ::cpu_set_t,
3651 ) -> ::c_int;
3652 pub fn pthread_setaffinity_np(
3653 thread: ::pthread_t,
3654 cpusetsize: ::size_t,
3655 cpuset: *const ::cpu_set_t,
3656 ) -> ::c_int;
cdc7bbd5 3657 pub fn pthread_setschedprio(native: ::pthread_t, priority: ::c_int) -> ::c_int;
476ff2be 3658 pub fn reboot(how_to: ::c_int) -> ::c_int;
8bb4bdeb
XL
3659 pub fn setfsgid(gid: ::gid_t) -> ::c_int;
3660 pub fn setfsuid(uid: ::uid_t) -> ::c_int;
476ff2be
SL
3661
3662 // Not available now on Android
cdc7bbd5 3663 pub fn mkfifoat(dirfd: ::c_int, pathname: *const ::c_char, mode: ::mode_t) -> ::c_int;
476ff2be
SL
3664 pub fn if_nameindex() -> *mut if_nameindex;
3665 pub fn if_freenameindex(ptr: *mut if_nameindex);
e74abb32
XL
3666 pub fn sync_file_range(
3667 fd: ::c_int,
3668 offset: ::off64_t,
3669 nbytes: ::off64_t,
3670 flags: ::c_uint,
3671 ) -> ::c_int;
3672 pub fn mremap(
3673 addr: *mut ::c_void,
3674 len: ::size_t,
3675 new_len: ::size_t,
3676 flags: ::c_int,
3677 ...
3678 ) -> *mut ::c_void;
3679
3680 pub fn glob(
3681 pattern: *const c_char,
3682 flags: ::c_int,
cdc7bbd5 3683 errfunc: ::Option<extern "C" fn(epath: *const c_char, errno: ::c_int) -> ::c_int>,
e74abb32
XL
3684 pglob: *mut ::glob_t,
3685 ) -> ::c_int;
8bb4bdeb
XL
3686 pub fn globfree(pglob: *mut ::glob_t);
3687
cdc7bbd5 3688 pub fn posix_madvise(addr: *mut ::c_void, len: ::size_t, advice: ::c_int) -> ::c_int;
8bb4bdeb
XL
3689
3690 pub fn shm_unlink(name: *const ::c_char) -> ::c_int;
3691
3692 pub fn seekdir(dirp: *mut ::DIR, loc: ::c_long);
3693
3694 pub fn telldir(dirp: *mut ::DIR) -> ::c_long;
cdc7bbd5 3695 pub fn madvise(addr: *mut ::c_void, len: ::size_t, advice: ::c_int) -> ::c_int;
e74abb32 3696
cdc7bbd5 3697 pub fn msync(addr: *mut ::c_void, len: ::size_t, flags: ::c_int) -> ::c_int;
e74abb32
XL
3698 pub fn remap_file_pages(
3699 addr: *mut ::c_void,
3700 size: ::size_t,
3701 prot: ::c_int,
3702 pgoff: ::size_t,
3703 flags: ::c_int,
3704 ) -> ::c_int;
3705 pub fn recvfrom(
3706 socket: ::c_int,
3707 buf: *mut ::c_void,
3708 len: ::size_t,
3709 flags: ::c_int,
3710 addr: *mut ::sockaddr,
3711 addrlen: *mut ::socklen_t,
3712 ) -> ::ssize_t;
8bb4bdeb 3713 pub fn mkstemps(template: *mut ::c_char, suffixlen: ::c_int) -> ::c_int;
6a06907d 3714
8bb4bdeb
XL
3715 pub fn nl_langinfo(item: ::nl_item) -> *mut ::c_char;
3716
041b39d2
XL
3717 pub fn getdomainname(name: *mut ::c_char, len: ::size_t) -> ::c_int;
3718 pub fn setdomainname(name: *const ::c_char, len: ::size_t) -> ::c_int;
3719 pub fn vhangup() -> ::c_int;
041b39d2 3720 pub fn sync();
17df50a5 3721 pub fn syncfs(fd: ::c_int) -> ::c_int;
ea8adc8c 3722 pub fn syscall(num: ::c_long, ...) -> ::c_long;
cdc7bbd5
XL
3723 pub fn sched_getaffinity(pid: ::pid_t, cpusetsize: ::size_t, cpuset: *mut cpu_set_t)
3724 -> ::c_int;
e74abb32
XL
3725 pub fn sched_setaffinity(
3726 pid: ::pid_t,
3727 cpusetsize: ::size_t,
3728 cpuset: *const cpu_set_t,
3729 ) -> ::c_int;
ea8adc8c
XL
3730 pub fn epoll_create(size: ::c_int) -> ::c_int;
3731 pub fn epoll_create1(flags: ::c_int) -> ::c_int;
e74abb32
XL
3732 pub fn epoll_wait(
3733 epfd: ::c_int,
3734 events: *mut ::epoll_event,
3735 maxevents: ::c_int,
3736 timeout: ::c_int,
3737 ) -> ::c_int;
cdc7bbd5
XL
3738 pub fn epoll_ctl(epfd: ::c_int, op: ::c_int, fd: ::c_int, event: *mut ::epoll_event)
3739 -> ::c_int;
e74abb32
XL
3740 pub fn pthread_getschedparam(
3741 native: ::pthread_t,
3742 policy: *mut ::c_int,
3743 param: *mut ::sched_param,
3744 ) -> ::c_int;
ea8adc8c
XL
3745 pub fn unshare(flags: ::c_int) -> ::c_int;
3746 pub fn umount(target: *const ::c_char) -> ::c_int;
3747 pub fn sched_get_priority_max(policy: ::c_int) -> ::c_int;
cdc7bbd5
XL
3748 pub fn tee(fd_in: ::c_int, fd_out: ::c_int, len: ::size_t, flags: ::c_uint) -> ::ssize_t;
3749 pub fn settimeofday(tv: *const ::timeval, tz: *const ::timezone) -> ::c_int;
e74abb32
XL
3750 pub fn splice(
3751 fd_in: ::c_int,
3752 off_in: *mut ::loff_t,
3753 fd_out: ::c_int,
3754 off_out: *mut ::loff_t,
3755 len: ::size_t,
3756 flags: ::c_uint,
3757 ) -> ::ssize_t;
ea8adc8c 3758 pub fn eventfd(init: ::c_uint, flags: ::c_int) -> ::c_int;
cdc7bbd5
XL
3759 pub fn sched_rr_get_interval(pid: ::pid_t, tp: *mut ::timespec) -> ::c_int;
3760 pub fn sem_timedwait(sem: *mut sem_t, abstime: *const ::timespec) -> ::c_int;
e74abb32 3761 pub fn sem_getvalue(sem: *mut sem_t, sval: *mut ::c_int) -> ::c_int;
cdc7bbd5 3762 pub fn sched_setparam(pid: ::pid_t, param: *const ::sched_param) -> ::c_int;
ea8adc8c 3763 pub fn setns(fd: ::c_int, nstype: ::c_int) -> ::c_int;
cdc7bbd5 3764 pub fn swapoff(path: *const ::c_char) -> ::c_int;
e74abb32
XL
3765 pub fn vmsplice(
3766 fd: ::c_int,
3767 iov: *const ::iovec,
3768 nr_segs: ::size_t,
3769 flags: ::c_uint,
3770 ) -> ::ssize_t;
3771 pub fn mount(
3772 src: *const ::c_char,
3773 target: *const ::c_char,
3774 fstype: *const ::c_char,
3775 flags: ::c_ulong,
3776 data: *const ::c_void,
3777 ) -> ::c_int;
ea8adc8c
XL
3778 pub fn personality(persona: ::c_ulong) -> ::c_int;
3779 pub fn prctl(option: ::c_int, ...) -> ::c_int;
3780 pub fn sched_getparam(pid: ::pid_t, param: *mut ::sched_param) -> ::c_int;
e74abb32
XL
3781 pub fn ppoll(
3782 fds: *mut ::pollfd,
3783 nfds: nfds_t,
3784 timeout: *const ::timespec,
3785 sigmask: *const sigset_t,
3786 ) -> ::c_int;
04454e1e
FG
3787 pub fn pthread_mutexattr_getprotocol(
3788 attr: *const pthread_mutexattr_t,
3789 protocol: *mut ::c_int,
3790 ) -> ::c_int;
3791 pub fn pthread_mutexattr_setprotocol(
3792 attr: *mut pthread_mutexattr_t,
3793 protocol: ::c_int,
3794 ) -> ::c_int;
3c0e092e 3795 pub fn pthread_mutex_consistent(mutex: *mut pthread_mutex_t) -> ::c_int;
e74abb32
XL
3796 pub fn pthread_mutex_timedlock(
3797 lock: *mut pthread_mutex_t,
3798 abstime: *const ::timespec,
3799 ) -> ::c_int;
136023e0
XL
3800 pub fn pthread_spin_init(lock: *mut ::pthread_spinlock_t, pshared: ::c_int) -> ::c_int;
3801 pub fn pthread_spin_destroy(lock: *mut ::pthread_spinlock_t) -> ::c_int;
3802 pub fn pthread_spin_lock(lock: *mut ::pthread_spinlock_t) -> ::c_int;
3803 pub fn pthread_spin_trylock(lock: *mut ::pthread_spinlock_t) -> ::c_int;
3804 pub fn pthread_spin_unlock(lock: *mut ::pthread_spinlock_t) -> ::c_int;
e74abb32
XL
3805 pub fn clone(
3806 cb: extern "C" fn(*mut ::c_void) -> ::c_int,
3807 child_stack: *mut ::c_void,
3808 flags: ::c_int,
3809 arg: *mut ::c_void,
3810 ...
3811 ) -> ::c_int;
ea8adc8c 3812 pub fn sched_getscheduler(pid: ::pid_t) -> ::c_int;
e74abb32
XL
3813 pub fn clock_nanosleep(
3814 clk_id: ::clockid_t,
3815 flags: ::c_int,
3816 rqtp: *const ::timespec,
3817 rmtp: *mut ::timespec,
3818 ) -> ::c_int;
3819 pub fn pthread_attr_getguardsize(
3820 attr: *const ::pthread_attr_t,
3821 guardsize: *mut ::size_t,
3822 ) -> ::c_int;
ea8adc8c
XL
3823 pub fn sethostname(name: *const ::c_char, len: ::size_t) -> ::c_int;
3824 pub fn sched_get_priority_min(policy: ::c_int) -> ::c_int;
e74abb32
XL
3825 pub fn pthread_condattr_getpshared(
3826 attr: *const pthread_condattr_t,
3827 pshared: *mut ::c_int,
3828 ) -> ::c_int;
ea8adc8c
XL
3829 pub fn sysinfo(info: *mut ::sysinfo) -> ::c_int;
3830 pub fn umount2(target: *const ::c_char, flags: ::c_int) -> ::c_int;
e74abb32
XL
3831 pub fn pthread_setschedparam(
3832 native: ::pthread_t,
3833 policy: ::c_int,
3834 param: *const ::sched_param,
3835 ) -> ::c_int;
ea8adc8c 3836 pub fn swapon(path: *const ::c_char, swapflags: ::c_int) -> ::c_int;
e74abb32
XL
3837 pub fn sched_setscheduler(
3838 pid: ::pid_t,
3839 policy: ::c_int,
3840 param: *const ::sched_param,
3841 ) -> ::c_int;
3842 pub fn sendfile(
3843 out_fd: ::c_int,
3844 in_fd: ::c_int,
3845 offset: *mut off_t,
3846 count: ::size_t,
3847 ) -> ::ssize_t;
fc512014
XL
3848 pub fn sendfile64(
3849 out_fd: ::c_int,
3850 in_fd: ::c_int,
3851 offset: *mut off64_t,
3852 count: ::size_t,
3853 ) -> ::ssize_t;
ea8adc8c 3854 pub fn sigsuspend(mask: *const ::sigset_t) -> ::c_int;
e74abb32
XL
3855 pub fn getgrgid_r(
3856 gid: ::gid_t,
3857 grp: *mut ::group,
3858 buf: *mut ::c_char,
3859 buflen: ::size_t,
3860 result: *mut *mut ::group,
3861 ) -> ::c_int;
e74abb32 3862 pub fn sigaltstack(ss: *const stack_t, oss: *mut stack_t) -> ::c_int;
ea8adc8c
XL
3863 pub fn sem_close(sem: *mut sem_t) -> ::c_int;
3864 pub fn getdtablesize() -> ::c_int;
e74abb32
XL
3865 pub fn getgrnam_r(
3866 name: *const ::c_char,
3867 grp: *mut ::group,
3868 buf: *mut ::c_char,
3869 buflen: ::size_t,
3870 result: *mut *mut ::group,
3871 ) -> ::c_int;
ea8adc8c 3872 pub fn initgroups(user: *const ::c_char, group: ::gid_t) -> ::c_int;
cdc7bbd5 3873 pub fn pthread_sigmask(how: ::c_int, set: *const sigset_t, oldset: *mut sigset_t) -> ::c_int;
ea8adc8c
XL
3874 pub fn sem_open(name: *const ::c_char, oflag: ::c_int, ...) -> *mut sem_t;
3875 pub fn getgrnam(name: *const ::c_char) -> *mut ::group;
abe05a73 3876 pub fn pthread_cancel(thread: ::pthread_t) -> ::c_int;
ea8adc8c
XL
3877 pub fn pthread_kill(thread: ::pthread_t, sig: ::c_int) -> ::c_int;
3878 pub fn sem_unlink(name: *const ::c_char) -> ::c_int;
3879 pub fn daemon(nochdir: ::c_int, noclose: ::c_int) -> ::c_int;
e74abb32
XL
3880 pub fn getpwnam_r(
3881 name: *const ::c_char,
3882 pwd: *mut passwd,
3883 buf: *mut ::c_char,
3884 buflen: ::size_t,
3885 result: *mut *mut passwd,
3886 ) -> ::c_int;
e74abb32
XL
3887 pub fn getpwuid_r(
3888 uid: ::uid_t,
3889 pwd: *mut passwd,
3890 buf: *mut ::c_char,
3891 buflen: ::size_t,
3892 result: *mut *mut passwd,
3893 ) -> ::c_int;
e74abb32
XL
3894 pub fn sigwait(set: *const sigset_t, sig: *mut ::c_int) -> ::c_int;
3895 pub fn pthread_atfork(
3896 prepare: ::Option<unsafe extern "C" fn()>,
3897 parent: ::Option<unsafe extern "C" fn()>,
3898 child: ::Option<unsafe extern "C" fn()>,
3899 ) -> ::c_int;
ea8adc8c 3900 pub fn getgrgid(gid: ::gid_t) -> *mut ::group;
e74abb32
XL
3901 pub fn getgrouplist(
3902 user: *const ::c_char,
3903 group: ::gid_t,
3904 groups: *mut ::gid_t,
3905 ngroups: *mut ::c_int,
3906 ) -> ::c_int;
3907 pub fn pthread_mutexattr_getpshared(
3908 attr: *const pthread_mutexattr_t,
3909 pshared: *mut ::c_int,
3910 ) -> ::c_int;
3c0e092e
XL
3911 pub fn pthread_mutexattr_getrobust(
3912 attr: *const pthread_mutexattr_t,
3913 robustness: *mut ::c_int,
3914 ) -> ::c_int;
3915 pub fn pthread_mutexattr_setrobust(
3916 attr: *mut pthread_mutexattr_t,
3917 robustness: ::c_int,
3918 ) -> ::c_int;
e74abb32
XL
3919 pub fn popen(command: *const c_char, mode: *const c_char) -> *mut ::FILE;
3920 pub fn faccessat(
3921 dirfd: ::c_int,
3922 pathname: *const ::c_char,
3923 mode: ::c_int,
3924 flags: ::c_int,
3925 ) -> ::c_int;
3926 pub fn pthread_create(
3927 native: *mut ::pthread_t,
3928 attr: *const ::pthread_attr_t,
3929 f: extern "C" fn(*mut ::c_void) -> *mut ::c_void,
3930 value: *mut ::c_void,
3931 ) -> ::c_int;
ff7c6d11 3932 pub fn dl_iterate_phdr(
e74abb32
XL
3933 callback: ::Option<
3934 unsafe extern "C" fn(
3935 info: *mut ::dl_phdr_info,
3936 size: ::size_t,
3937 data: *mut ::c_void,
3938 ) -> ::c_int,
3939 >,
3940 data: *mut ::c_void,
ff7c6d11 3941 ) -> ::c_int;
2c00a5a8 3942
cdc7bbd5 3943 pub fn setmntent(filename: *const ::c_char, ty: *const ::c_char) -> *mut ::FILE;
2c00a5a8
XL
3944 pub fn getmntent(stream: *mut ::FILE) -> *mut ::mntent;
3945 pub fn addmntent(stream: *mut ::FILE, mnt: *const ::mntent) -> ::c_int;
3946 pub fn endmntent(streamp: *mut ::FILE) -> ::c_int;
cdc7bbd5 3947 pub fn hasmntopt(mnt: *const ::mntent, opt: *const ::c_char) -> *mut ::c_char;
e74abb32
XL
3948
3949 pub fn posix_spawn(
3950 pid: *mut ::pid_t,
3951 path: *const ::c_char,
3952 file_actions: *const ::posix_spawn_file_actions_t,
3953 attrp: *const ::posix_spawnattr_t,
3954 argv: *const *mut ::c_char,
3955 envp: *const *mut ::c_char,
3956 ) -> ::c_int;
3957 pub fn posix_spawnp(
3958 pid: *mut ::pid_t,
3959 file: *const ::c_char,
3960 file_actions: *const ::posix_spawn_file_actions_t,
3961 attrp: *const ::posix_spawnattr_t,
3962 argv: *const *mut ::c_char,
3963 envp: *const *mut ::c_char,
3964 ) -> ::c_int;
2c00a5a8
XL
3965 pub fn posix_spawnattr_init(attr: *mut posix_spawnattr_t) -> ::c_int;
3966 pub fn posix_spawnattr_destroy(attr: *mut posix_spawnattr_t) -> ::c_int;
e74abb32
XL
3967 pub fn posix_spawnattr_getsigdefault(
3968 attr: *const posix_spawnattr_t,
3969 default: *mut ::sigset_t,
3970 ) -> ::c_int;
3971 pub fn posix_spawnattr_setsigdefault(
3972 attr: *mut posix_spawnattr_t,
3973 default: *const ::sigset_t,
3974 ) -> ::c_int;
3975 pub fn posix_spawnattr_getsigmask(
3976 attr: *const posix_spawnattr_t,
3977 default: *mut ::sigset_t,
3978 ) -> ::c_int;
3979 pub fn posix_spawnattr_setsigmask(
3980 attr: *mut posix_spawnattr_t,
3981 default: *const ::sigset_t,
3982 ) -> ::c_int;
3983 pub fn posix_spawnattr_getflags(
3984 attr: *const posix_spawnattr_t,
3985 flags: *mut ::c_short,
3986 ) -> ::c_int;
cdc7bbd5 3987 pub fn posix_spawnattr_setflags(attr: *mut posix_spawnattr_t, flags: ::c_short) -> ::c_int;
e74abb32
XL
3988 pub fn posix_spawnattr_getpgroup(
3989 attr: *const posix_spawnattr_t,
3990 flags: *mut ::pid_t,
3991 ) -> ::c_int;
cdc7bbd5 3992 pub fn posix_spawnattr_setpgroup(attr: *mut posix_spawnattr_t, flags: ::pid_t) -> ::c_int;
e74abb32
XL
3993 pub fn posix_spawnattr_getschedpolicy(
3994 attr: *const posix_spawnattr_t,
3995 flags: *mut ::c_int,
3996 ) -> ::c_int;
cdc7bbd5 3997 pub fn posix_spawnattr_setschedpolicy(attr: *mut posix_spawnattr_t, flags: ::c_int) -> ::c_int;
2c00a5a8
XL
3998 pub fn posix_spawnattr_getschedparam(
3999 attr: *const posix_spawnattr_t,
4000 param: *mut ::sched_param,
4001 ) -> ::c_int;
4002 pub fn posix_spawnattr_setschedparam(
4003 attr: *mut posix_spawnattr_t,
4004 param: *const ::sched_param,
4005 ) -> ::c_int;
4006
cdc7bbd5
XL
4007 pub fn posix_spawn_file_actions_init(actions: *mut posix_spawn_file_actions_t) -> ::c_int;
4008 pub fn posix_spawn_file_actions_destroy(actions: *mut posix_spawn_file_actions_t) -> ::c_int;
2c00a5a8
XL
4009 pub fn posix_spawn_file_actions_addopen(
4010 actions: *mut posix_spawn_file_actions_t,
4011 fd: ::c_int,
4012 path: *const ::c_char,
4013 oflag: ::c_int,
4014 mode: ::mode_t,
4015 ) -> ::c_int;
4016 pub fn posix_spawn_file_actions_addclose(
4017 actions: *mut posix_spawn_file_actions_t,
4018 fd: ::c_int,
4019 ) -> ::c_int;
4020 pub fn posix_spawn_file_actions_adddup2(
4021 actions: *mut posix_spawn_file_actions_t,
4022 fd: ::c_int,
4023 newfd: ::c_int,
4024 ) -> ::c_int;
e74abb32
XL
4025 pub fn fread_unlocked(
4026 ptr: *mut ::c_void,
8faf50e0
XL
4027 size: ::size_t,
4028 nobj: ::size_t,
e74abb32 4029 stream: *mut ::FILE,
8faf50e0 4030 ) -> ::size_t;
532ac7d7
XL
4031 pub fn inotify_rm_watch(fd: ::c_int, wd: ::c_int) -> ::c_int;
4032 pub fn inotify_init() -> ::c_int;
4033 pub fn inotify_init1(flags: ::c_int) -> ::c_int;
cdc7bbd5 4034 pub fn inotify_add_watch(fd: ::c_int, path: *const ::c_char, mask: u32) -> ::c_int;
ba9703b0
XL
4035 pub fn fanotify_init(flags: ::c_uint, event_f_flags: ::c_uint) -> ::c_int;
4036
cdc7bbd5 4037 pub fn regcomp(preg: *mut ::regex_t, pattern: *const ::c_char, cflags: ::c_int) -> ::c_int;
ba9703b0
XL
4038
4039 pub fn regexec(
4040 preg: *const ::regex_t,
4041 input: *const ::c_char,
4042 nmatch: ::size_t,
4043 pmatch: *mut regmatch_t,
4044 eflags: ::c_int,
4045 ) -> ::c_int;
4046
4047 pub fn regerror(
4048 errcode: ::c_int,
4049 preg: *const ::regex_t,
4050 errbuf: *mut ::c_char,
4051 errbuf_size: ::size_t,
4052 ) -> ::size_t;
4053
4054 pub fn regfree(preg: *mut ::regex_t);
6a06907d 4055
cdc7bbd5 4056 pub fn iconv_open(tocode: *const ::c_char, fromcode: *const ::c_char) -> iconv_t;
6a06907d
XL
4057 pub fn iconv(
4058 cd: iconv_t,
4059 inbuf: *mut *mut ::c_char,
4060 inbytesleft: *mut ::size_t,
4061 outbuf: *mut *mut ::c_char,
4062 outbytesleft: *mut ::size_t,
4063 ) -> ::size_t;
4064 pub fn iconv_close(cd: iconv_t) -> ::c_int;
4065
4066 pub fn gettid() -> ::pid_t;
136023e0
XL
4067
4068 pub fn timer_create(
4069 clockid: ::clockid_t,
4070 sevp: *mut ::sigevent,
4071 timerid: *mut ::timer_t,
4072 ) -> ::c_int;
4073 pub fn timer_delete(timerid: ::timer_t) -> ::c_int;
4074 pub fn timer_getoverrun(timerid: ::timer_t) -> ::c_int;
4075 pub fn timer_gettime(timerid: ::timer_t, curr_value: *mut ::itimerspec) -> ::c_int;
4076 pub fn timer_settime(
4077 timerid: ::timer_t,
4078 flags: ::c_int,
4079 new_value: *const ::itimerspec,
4080 old_value: *mut ::itimerspec,
4081 ) -> ::c_int;
c295e0f8
XL
4082
4083 pub fn gethostid() -> ::c_long;
4084
4085 pub fn pthread_getcpuclockid(thread: ::pthread_t, clk_id: *mut ::clockid_t) -> ::c_int;
4086 pub fn memmem(
4087 haystack: *const ::c_void,
4088 haystacklen: ::size_t,
4089 needle: *const ::c_void,
4090 needlelen: ::size_t,
4091 ) -> *mut ::c_void;
4092 pub fn sched_getcpu() -> ::c_int;
923072b8
FG
4093
4094 pub fn pthread_getname_np(thread: ::pthread_t, name: *mut ::c_char, len: ::size_t) -> ::c_int;
4095 pub fn pthread_setname_np(thread: ::pthread_t, name: *const ::c_char) -> ::c_int;
476ff2be
SL
4096}
4097
4098cfg_if! {
6a06907d
XL
4099 if #[cfg(target_env = "uclibc")] {
4100 mod uclibc;
4101 pub use self::uclibc::*;
4102 } else if #[cfg(target_env = "musl")] {
476ff2be
SL
4103 mod musl;
4104 pub use self::musl::*;
416331ca
XL
4105 } else if #[cfg(target_env = "gnu")] {
4106 mod gnu;
4107 pub use self::gnu::*;
476ff2be
SL
4108 }
4109}
532ac7d7 4110
cdc7bbd5
XL
4111mod arch;
4112pub use self::arch::*;
4113
532ac7d7
XL
4114cfg_if! {
4115 if #[cfg(libc_align)] {
4116 #[macro_use]
4117 mod align;
4118 } else {
4119 #[macro_use]
4120 mod no_align;
4121 }
4122}
4123expand_align!();
a2a8927a
XL
4124
4125cfg_if! {
4126 if #[cfg(libc_non_exhaustive)] {
4127 mod non_exhaustive;
4128 pub use self::non_exhaustive::*;
4129 }
4130}