1#![allow(non_camel_case_types, non_upper_case_globals, non_snake_case)]
2#![cfg_attr(not(feature = "std"), no_std)]
3
4#[cfg(feature = "std")]
5pub use std::os::raw as ctypes;
6
7#[cfg(all(not(feature = "std"), feature = "no_std"))]
8pub mod ctypes {
9 // The signedness of `char` is platform-specific, however a consequence
10 // of it being platform-specific is that any code which depends on the
11 // signedness of `char` is already non-portable. So we can just use `u8`
12 // here and no portable code will notice.
13 pub type c_char = u8;
14
15 // The following assumes that Linux is always either ILP32 or LP64,
16 // and char is always 8-bit.
17 //
18 // In theory, `c_long` and `c_ulong` could be `isize` and `usize`
19 // respectively, however in practice Linux doesn't use them in that way
20 // consistently. So stick with the convention followed by `libc` and
21 // others and use the fixed-width types.
22 pub type c_schar = i8;
23 pub type c_uchar = u8;
24 pub type c_short = i16;
25 pub type c_ushort = u16;
26 pub type c_int = i32;
27 pub type c_uint = u32;
28 #[cfg(target_pointer_width = "32")]
29 pub type c_long = i32;
30 #[cfg(target_pointer_width = "32")]
31 pub type c_ulong = u32;
32 #[cfg(target_pointer_width = "64")]
33 pub type c_long = i64;
34 #[cfg(target_pointer_width = "64")]
35 pub type c_ulong = u64;
36 pub type c_longlong = i64;
37 pub type c_ulonglong = u64;
38 pub type c_float = f32;
39 pub type c_double = f64;
40
41 pub use core::ffi::c_void;
42}
43
44// Confirm that our type definitions above match the actual type definitions.
45#[cfg(test)]
46mod assertions {
47 use super::ctypes;
48 static_assertions::assert_eq_size!(ctypes::c_char, libc::c_char);
49 static_assertions::assert_type_eq_all!(ctypes::c_schar, libc::c_schar);
50 static_assertions::assert_type_eq_all!(ctypes::c_uchar, libc::c_uchar);
51 static_assertions::assert_type_eq_all!(ctypes::c_short, libc::c_short);
52 static_assertions::assert_type_eq_all!(ctypes::c_ushort, libc::c_ushort);
53 static_assertions::assert_type_eq_all!(ctypes::c_int, libc::c_int);
54 static_assertions::assert_type_eq_all!(ctypes::c_uint, libc::c_uint);
55 static_assertions::assert_type_eq_all!(ctypes::c_long, libc::c_long);
56 static_assertions::assert_type_eq_all!(ctypes::c_ulong, libc::c_ulong);
57 static_assertions::assert_type_eq_all!(ctypes::c_longlong, libc::c_longlong);
58 static_assertions::assert_type_eq_all!(ctypes::c_ulonglong, libc::c_ulonglong);
59 static_assertions::assert_type_eq_all!(ctypes::c_float, libc::c_float);
60 static_assertions::assert_type_eq_all!(ctypes::c_double, libc::c_double);
61}
62
63// We don't enable `derive_eq` in bindgen because adding `PartialEq`/`Eq` to
64// *all* structs noticeably increases compile times. But we can add a few
65// manual impls where they're especially useful.
66#[cfg(feature = "general")]
67impl PartialEq for general::__kernel_timespec {
68 fn eq(&self, other: &Self) -> bool {
69 ({
70 let Self { tv_sec: &i64, tv_nsec: &i64 } = self;
71 (tv_sec, tv_nsec)
72 }) == ({
73 let Self { tv_sec: &i64, tv_nsec: &i64 } = other;
74 (tv_sec, tv_nsec)
75 })
76 }
77}
78#[cfg(feature = "general")]
79impl Eq for general::__kernel_timespec {}
80
81#[cfg(feature = "net")]
82pub mod cmsg_macros {
83 use crate::ctypes::{c_long, c_uchar, c_uint};
84 use crate::net::{cmsghdr, msghdr};
85 use core::mem::size_of;
86 use core::ptr;
87
88 pub const unsafe fn CMSG_ALIGN(len: c_uint) -> c_uint {
89 let c_long_size = size_of::<c_long>() as c_uint;
90 (len + c_long_size - 1) & !(c_long_size - 1)
91 }
92
93 pub const unsafe fn CMSG_DATA(cmsg: *const cmsghdr) -> *mut c_uchar {
94 (cmsg as *mut c_uchar).add(size_of::<cmsghdr>())
95 }
96
97 pub const unsafe fn CMSG_SPACE(len: c_uint) -> c_uint {
98 size_of::<cmsghdr>() as c_uint + CMSG_ALIGN(len)
99 }
100
101 pub const unsafe fn CMSG_LEN(len: c_uint) -> c_uint {
102 size_of::<cmsghdr>() as c_uint + len
103 }
104
105 pub const unsafe fn CMSG_FIRSTHDR(mhdr: *const msghdr) -> *mut cmsghdr {
106 if (*mhdr).msg_controllen < size_of::<cmsghdr>() as _ {
107 return ptr::null_mut();
108 }
109
110 (*mhdr).msg_control as *mut cmsghdr
111 }
112
113 pub unsafe fn CMSG_NXTHDR(mhdr: *const msghdr, cmsg: *const cmsghdr) -> *mut cmsghdr {
114 // We convert from raw pointers to usize here, which may not be sound in a
115 // future version of Rust. Once the provenance rules are set in stone,
116 // it will be a good idea to give this function a once-over.
117
118 let cmsg_len = (*cmsg).cmsg_len;
119 let next_cmsg = (cmsg as *mut u8).add(CMSG_ALIGN(cmsg_len as _) as usize) as *mut cmsghdr;
120 let max = ((*mhdr).msg_control as usize) + ((*mhdr).msg_controllen as usize);
121
122 if cmsg_len < size_of::<cmsghdr>() as _ {
123 return ptr::null_mut();
124 }
125
126 if next_cmsg.add(1) as usize > max
127 || next_cmsg as usize + CMSG_ALIGN((*next_cmsg).cmsg_len as _) as usize > max
128 {
129 return ptr::null_mut();
130 }
131
132 next_cmsg
133 }
134}
135
136#[cfg(feature = "general")]
137pub mod select_macros {
138 use crate::ctypes::c_int;
139 use crate::general::__kernel_fd_set;
140 use core::mem::size_of;
141
142 pub unsafe fn FD_CLR(fd: c_int, set: *mut __kernel_fd_set) {
143 let bytes = set as *mut u8;
144 if fd >= 0 {
145 *bytes.add((fd / 8) as usize) &= !(1 << (fd % 8));
146 }
147 }
148
149 pub unsafe fn FD_SET(fd: c_int, set: *mut __kernel_fd_set) {
150 let bytes = set as *mut u8;
151 if fd >= 0 {
152 *bytes.add((fd / 8) as usize) |= 1 << (fd % 8);
153 }
154 }
155
156 pub unsafe fn FD_ISSET(fd: c_int, set: *const __kernel_fd_set) -> bool {
157 let bytes = set as *const u8;
158 if fd >= 0 {
159 *bytes.add((fd / 8) as usize) & (1 << (fd % 8)) != 0
160 } else {
161 false
162 }
163 }
164
165 pub unsafe fn FD_ZERO(set: *mut __kernel_fd_set) {
166 let bytes = set as *mut u8;
167 core::ptr::write_bytes(bytes, 0, size_of::<__kernel_fd_set>());
168 }
169}
170
171#[cfg(feature = "general")]
172pub mod signal_macros {
173 pub const SIG_DFL: super::general::__kernel_sighandler_t = None;
174
175 /// Rust doesn't currently permit us to use `transmute` to convert the
176 /// `SIG_IGN` value into a function pointer in a `const` initializer, so
177 /// we make it a function instead.
178 ///
179 #[inline]
180 pub const fn sig_ign() -> super::general::__kernel_sighandler_t {
181 // Safety: This creates an invalid pointer, but the pointer type
182 // includes `unsafe`, which covers the safety of calling it.
183 Some(unsafe {
184 core::mem::transmute::<usize, unsafe extern "C" fn(crate::ctypes::c_int)>(src:1)
185 })
186 }
187}
188
189#[cfg(feature = "elf")]
190pub mod elf;
191
192// The rest of this file is auto-generated!
193#[cfg(feature = "errno")]
194#[cfg(target_arch = "arm")]
195#[path = "arm/errno.rs"]
196pub mod errno;
197#[cfg(feature = "general")]
198#[cfg(target_arch = "arm")]
199#[path = "arm/general.rs"]
200pub mod general;
201#[cfg(feature = "if_ether")]
202#[cfg(target_arch = "arm")]
203#[path = "arm/if_ether.rs"]
204pub mod if_ether;
205#[cfg(feature = "if_packet")]
206#[cfg(target_arch = "arm")]
207#[path = "arm/if_packet.rs"]
208pub mod if_packet;
209#[cfg(feature = "io_uring")]
210#[cfg(target_arch = "arm")]
211#[path = "arm/io_uring.rs"]
212pub mod io_uring;
213#[cfg(feature = "ioctl")]
214#[cfg(target_arch = "arm")]
215#[path = "arm/ioctl.rs"]
216pub mod ioctl;
217#[cfg(feature = "mempolicy")]
218#[cfg(target_arch = "arm")]
219#[path = "arm/mempolicy.rs"]
220pub mod mempolicy;
221#[cfg(feature = "net")]
222#[cfg(target_arch = "arm")]
223#[path = "arm/net.rs"]
224pub mod net;
225#[cfg(feature = "netlink")]
226#[cfg(target_arch = "arm")]
227#[path = "arm/netlink.rs"]
228pub mod netlink;
229#[cfg(feature = "prctl")]
230#[cfg(target_arch = "arm")]
231#[path = "arm/prctl.rs"]
232pub mod prctl;
233#[cfg(feature = "system")]
234#[cfg(target_arch = "arm")]
235#[path = "arm/system.rs"]
236pub mod system;
237#[cfg(feature = "xdp")]
238#[cfg(target_arch = "arm")]
239#[path = "arm/xdp.rs"]
240pub mod xdp;
241#[cfg(feature = "errno")]
242#[cfg(target_arch = "aarch64")]
243#[path = "aarch64/errno.rs"]
244pub mod errno;
245#[cfg(feature = "general")]
246#[cfg(target_arch = "aarch64")]
247#[path = "aarch64/general.rs"]
248pub mod general;
249#[cfg(feature = "if_ether")]
250#[cfg(target_arch = "aarch64")]
251#[path = "aarch64/if_ether.rs"]
252pub mod if_ether;
253#[cfg(feature = "if_packet")]
254#[cfg(target_arch = "aarch64")]
255#[path = "aarch64/if_packet.rs"]
256pub mod if_packet;
257#[cfg(feature = "io_uring")]
258#[cfg(target_arch = "aarch64")]
259#[path = "aarch64/io_uring.rs"]
260pub mod io_uring;
261#[cfg(feature = "ioctl")]
262#[cfg(target_arch = "aarch64")]
263#[path = "aarch64/ioctl.rs"]
264pub mod ioctl;
265#[cfg(feature = "mempolicy")]
266#[cfg(target_arch = "aarch64")]
267#[path = "aarch64/mempolicy.rs"]
268pub mod mempolicy;
269#[cfg(feature = "net")]
270#[cfg(target_arch = "aarch64")]
271#[path = "aarch64/net.rs"]
272pub mod net;
273#[cfg(feature = "netlink")]
274#[cfg(target_arch = "aarch64")]
275#[path = "aarch64/netlink.rs"]
276pub mod netlink;
277#[cfg(feature = "prctl")]
278#[cfg(target_arch = "aarch64")]
279#[path = "aarch64/prctl.rs"]
280pub mod prctl;
281#[cfg(feature = "system")]
282#[cfg(target_arch = "aarch64")]
283#[path = "aarch64/system.rs"]
284pub mod system;
285#[cfg(feature = "xdp")]
286#[cfg(target_arch = "aarch64")]
287#[path = "aarch64/xdp.rs"]
288pub mod xdp;
289#[cfg(feature = "errno")]
290#[cfg(target_arch = "csky")]
291#[path = "csky/errno.rs"]
292pub mod errno;
293#[cfg(feature = "general")]
294#[cfg(target_arch = "csky")]
295#[path = "csky/general.rs"]
296pub mod general;
297#[cfg(feature = "if_ether")]
298#[cfg(target_arch = "csky")]
299#[path = "csky/if_ether.rs"]
300pub mod if_ether;
301#[cfg(feature = "if_packet")]
302#[cfg(target_arch = "csky")]
303#[path = "csky/if_packet.rs"]
304pub mod if_packet;
305#[cfg(feature = "io_uring")]
306#[cfg(target_arch = "csky")]
307#[path = "csky/io_uring.rs"]
308pub mod io_uring;
309#[cfg(feature = "ioctl")]
310#[cfg(target_arch = "csky")]
311#[path = "csky/ioctl.rs"]
312pub mod ioctl;
313#[cfg(feature = "mempolicy")]
314#[cfg(target_arch = "csky")]
315#[path = "csky/mempolicy.rs"]
316pub mod mempolicy;
317#[cfg(feature = "net")]
318#[cfg(target_arch = "csky")]
319#[path = "csky/net.rs"]
320pub mod net;
321#[cfg(feature = "netlink")]
322#[cfg(target_arch = "csky")]
323#[path = "csky/netlink.rs"]
324pub mod netlink;
325#[cfg(feature = "prctl")]
326#[cfg(target_arch = "csky")]
327#[path = "csky/prctl.rs"]
328pub mod prctl;
329#[cfg(feature = "system")]
330#[cfg(target_arch = "csky")]
331#[path = "csky/system.rs"]
332pub mod system;
333#[cfg(feature = "xdp")]
334#[cfg(target_arch = "csky")]
335#[path = "csky/xdp.rs"]
336pub mod xdp;
337#[cfg(feature = "errno")]
338#[cfg(target_arch = "loongarch64")]
339#[path = "loongarch64/errno.rs"]
340pub mod errno;
341#[cfg(feature = "general")]
342#[cfg(target_arch = "loongarch64")]
343#[path = "loongarch64/general.rs"]
344pub mod general;
345#[cfg(feature = "if_ether")]
346#[cfg(target_arch = "loongarch64")]
347#[path = "loongarch64/if_ether.rs"]
348pub mod if_ether;
349#[cfg(feature = "if_packet")]
350#[cfg(target_arch = "loongarch64")]
351#[path = "loongarch64/if_packet.rs"]
352pub mod if_packet;
353#[cfg(feature = "io_uring")]
354#[cfg(target_arch = "loongarch64")]
355#[path = "loongarch64/io_uring.rs"]
356pub mod io_uring;
357#[cfg(feature = "ioctl")]
358#[cfg(target_arch = "loongarch64")]
359#[path = "loongarch64/ioctl.rs"]
360pub mod ioctl;
361#[cfg(feature = "mempolicy")]
362#[cfg(target_arch = "loongarch64")]
363#[path = "loongarch64/mempolicy.rs"]
364pub mod mempolicy;
365#[cfg(feature = "net")]
366#[cfg(target_arch = "loongarch64")]
367#[path = "loongarch64/net.rs"]
368pub mod net;
369#[cfg(feature = "netlink")]
370#[cfg(target_arch = "loongarch64")]
371#[path = "loongarch64/netlink.rs"]
372pub mod netlink;
373#[cfg(feature = "prctl")]
374#[cfg(target_arch = "loongarch64")]
375#[path = "loongarch64/prctl.rs"]
376pub mod prctl;
377#[cfg(feature = "system")]
378#[cfg(target_arch = "loongarch64")]
379#[path = "loongarch64/system.rs"]
380pub mod system;
381#[cfg(feature = "xdp")]
382#[cfg(target_arch = "loongarch64")]
383#[path = "loongarch64/xdp.rs"]
384pub mod xdp;
385#[cfg(feature = "errno")]
386#[cfg(target_arch = "mips")]
387#[path = "mips/errno.rs"]
388pub mod errno;
389#[cfg(feature = "general")]
390#[cfg(target_arch = "mips")]
391#[path = "mips/general.rs"]
392pub mod general;
393#[cfg(feature = "if_ether")]
394#[cfg(target_arch = "mips")]
395#[path = "mips/if_ether.rs"]
396pub mod if_ether;
397#[cfg(feature = "if_packet")]
398#[cfg(target_arch = "mips")]
399#[path = "mips/if_packet.rs"]
400pub mod if_packet;
401#[cfg(feature = "io_uring")]
402#[cfg(target_arch = "mips")]
403#[path = "mips/io_uring.rs"]
404pub mod io_uring;
405#[cfg(feature = "ioctl")]
406#[cfg(target_arch = "mips")]
407#[path = "mips/ioctl.rs"]
408pub mod ioctl;
409#[cfg(feature = "mempolicy")]
410#[cfg(target_arch = "mips")]
411#[path = "mips/mempolicy.rs"]
412pub mod mempolicy;
413#[cfg(feature = "net")]
414#[cfg(target_arch = "mips")]
415#[path = "mips/net.rs"]
416pub mod net;
417#[cfg(feature = "netlink")]
418#[cfg(target_arch = "mips")]
419#[path = "mips/netlink.rs"]
420pub mod netlink;
421#[cfg(feature = "prctl")]
422#[cfg(target_arch = "mips")]
423#[path = "mips/prctl.rs"]
424pub mod prctl;
425#[cfg(feature = "system")]
426#[cfg(target_arch = "mips")]
427#[path = "mips/system.rs"]
428pub mod system;
429#[cfg(feature = "xdp")]
430#[cfg(target_arch = "mips")]
431#[path = "mips/xdp.rs"]
432pub mod xdp;
433#[cfg(feature = "errno")]
434#[cfg(target_arch = "mips64")]
435#[path = "mips64/errno.rs"]
436pub mod errno;
437#[cfg(feature = "general")]
438#[cfg(target_arch = "mips64")]
439#[path = "mips64/general.rs"]
440pub mod general;
441#[cfg(feature = "if_ether")]
442#[cfg(target_arch = "mips64")]
443#[path = "mips64/if_ether.rs"]
444pub mod if_ether;
445#[cfg(feature = "if_packet")]
446#[cfg(target_arch = "mips64")]
447#[path = "mips64/if_packet.rs"]
448pub mod if_packet;
449#[cfg(feature = "io_uring")]
450#[cfg(target_arch = "mips64")]
451#[path = "mips64/io_uring.rs"]
452pub mod io_uring;
453#[cfg(feature = "ioctl")]
454#[cfg(target_arch = "mips64")]
455#[path = "mips64/ioctl.rs"]
456pub mod ioctl;
457#[cfg(feature = "mempolicy")]
458#[cfg(target_arch = "mips64")]
459#[path = "mips64/mempolicy.rs"]
460pub mod mempolicy;
461#[cfg(feature = "net")]
462#[cfg(target_arch = "mips64")]
463#[path = "mips64/net.rs"]
464pub mod net;
465#[cfg(feature = "netlink")]
466#[cfg(target_arch = "mips64")]
467#[path = "mips64/netlink.rs"]
468pub mod netlink;
469#[cfg(feature = "prctl")]
470#[cfg(target_arch = "mips64")]
471#[path = "mips64/prctl.rs"]
472pub mod prctl;
473#[cfg(feature = "system")]
474#[cfg(target_arch = "mips64")]
475#[path = "mips64/system.rs"]
476pub mod system;
477#[cfg(feature = "xdp")]
478#[cfg(target_arch = "mips64")]
479#[path = "mips64/xdp.rs"]
480pub mod xdp;
481#[cfg(feature = "errno")]
482#[cfg(target_arch = "mips32r6")]
483#[path = "mips32r6/errno.rs"]
484pub mod errno;
485#[cfg(feature = "general")]
486#[cfg(target_arch = "mips32r6")]
487#[path = "mips32r6/general.rs"]
488pub mod general;
489#[cfg(feature = "if_ether")]
490#[cfg(target_arch = "mips32r6")]
491#[path = "mips32r6/if_ether.rs"]
492pub mod if_ether;
493#[cfg(feature = "if_packet")]
494#[cfg(target_arch = "mips32r6")]
495#[path = "mips32r6/if_packet.rs"]
496pub mod if_packet;
497#[cfg(feature = "io_uring")]
498#[cfg(target_arch = "mips32r6")]
499#[path = "mips32r6/io_uring.rs"]
500pub mod io_uring;
501#[cfg(feature = "ioctl")]
502#[cfg(target_arch = "mips32r6")]
503#[path = "mips32r6/ioctl.rs"]
504pub mod ioctl;
505#[cfg(feature = "mempolicy")]
506#[cfg(target_arch = "mips32r6")]
507#[path = "mips32r6/mempolicy.rs"]
508pub mod mempolicy;
509#[cfg(feature = "net")]
510#[cfg(target_arch = "mips32r6")]
511#[path = "mips32r6/net.rs"]
512pub mod net;
513#[cfg(feature = "netlink")]
514#[cfg(target_arch = "mips32r6")]
515#[path = "mips32r6/netlink.rs"]
516pub mod netlink;
517#[cfg(feature = "prctl")]
518#[cfg(target_arch = "mips32r6")]
519#[path = "mips32r6/prctl.rs"]
520pub mod prctl;
521#[cfg(feature = "system")]
522#[cfg(target_arch = "mips32r6")]
523#[path = "mips32r6/system.rs"]
524pub mod system;
525#[cfg(feature = "xdp")]
526#[cfg(target_arch = "mips32r6")]
527#[path = "mips32r6/xdp.rs"]
528pub mod xdp;
529#[cfg(feature = "errno")]
530#[cfg(target_arch = "mips64r6")]
531#[path = "mips64r6/errno.rs"]
532pub mod errno;
533#[cfg(feature = "general")]
534#[cfg(target_arch = "mips64r6")]
535#[path = "mips64r6/general.rs"]
536pub mod general;
537#[cfg(feature = "if_ether")]
538#[cfg(target_arch = "mips64r6")]
539#[path = "mips64r6/if_ether.rs"]
540pub mod if_ether;
541#[cfg(feature = "if_packet")]
542#[cfg(target_arch = "mips64r6")]
543#[path = "mips64r6/if_packet.rs"]
544pub mod if_packet;
545#[cfg(feature = "io_uring")]
546#[cfg(target_arch = "mips64r6")]
547#[path = "mips64r6/io_uring.rs"]
548pub mod io_uring;
549#[cfg(feature = "ioctl")]
550#[cfg(target_arch = "mips64r6")]
551#[path = "mips64r6/ioctl.rs"]
552pub mod ioctl;
553#[cfg(feature = "mempolicy")]
554#[cfg(target_arch = "mips64r6")]
555#[path = "mips64r6/mempolicy.rs"]
556pub mod mempolicy;
557#[cfg(feature = "net")]
558#[cfg(target_arch = "mips64r6")]
559#[path = "mips64r6/net.rs"]
560pub mod net;
561#[cfg(feature = "netlink")]
562#[cfg(target_arch = "mips64r6")]
563#[path = "mips64r6/netlink.rs"]
564pub mod netlink;
565#[cfg(feature = "prctl")]
566#[cfg(target_arch = "mips64r6")]
567#[path = "mips64r6/prctl.rs"]
568pub mod prctl;
569#[cfg(feature = "system")]
570#[cfg(target_arch = "mips64r6")]
571#[path = "mips64r6/system.rs"]
572pub mod system;
573#[cfg(feature = "xdp")]
574#[cfg(target_arch = "mips64r6")]
575#[path = "mips64r6/xdp.rs"]
576pub mod xdp;
577#[cfg(feature = "errno")]
578#[cfg(target_arch = "powerpc")]
579#[path = "powerpc/errno.rs"]
580pub mod errno;
581#[cfg(feature = "general")]
582#[cfg(target_arch = "powerpc")]
583#[path = "powerpc/general.rs"]
584pub mod general;
585#[cfg(feature = "if_ether")]
586#[cfg(target_arch = "powerpc")]
587#[path = "powerpc/if_ether.rs"]
588pub mod if_ether;
589#[cfg(feature = "if_packet")]
590#[cfg(target_arch = "powerpc")]
591#[path = "powerpc/if_packet.rs"]
592pub mod if_packet;
593#[cfg(feature = "io_uring")]
594#[cfg(target_arch = "powerpc")]
595#[path = "powerpc/io_uring.rs"]
596pub mod io_uring;
597#[cfg(feature = "ioctl")]
598#[cfg(target_arch = "powerpc")]
599#[path = "powerpc/ioctl.rs"]
600pub mod ioctl;
601#[cfg(feature = "mempolicy")]
602#[cfg(target_arch = "powerpc")]
603#[path = "powerpc/mempolicy.rs"]
604pub mod mempolicy;
605#[cfg(feature = "net")]
606#[cfg(target_arch = "powerpc")]
607#[path = "powerpc/net.rs"]
608pub mod net;
609#[cfg(feature = "netlink")]
610#[cfg(target_arch = "powerpc")]
611#[path = "powerpc/netlink.rs"]
612pub mod netlink;
613#[cfg(feature = "prctl")]
614#[cfg(target_arch = "powerpc")]
615#[path = "powerpc/prctl.rs"]
616pub mod prctl;
617#[cfg(feature = "system")]
618#[cfg(target_arch = "powerpc")]
619#[path = "powerpc/system.rs"]
620pub mod system;
621#[cfg(feature = "xdp")]
622#[cfg(target_arch = "powerpc")]
623#[path = "powerpc/xdp.rs"]
624pub mod xdp;
625#[cfg(feature = "errno")]
626#[cfg(target_arch = "powerpc64")]
627#[path = "powerpc64/errno.rs"]
628pub mod errno;
629#[cfg(feature = "general")]
630#[cfg(target_arch = "powerpc64")]
631#[path = "powerpc64/general.rs"]
632pub mod general;
633#[cfg(feature = "if_ether")]
634#[cfg(target_arch = "powerpc64")]
635#[path = "powerpc64/if_ether.rs"]
636pub mod if_ether;
637#[cfg(feature = "if_packet")]
638#[cfg(target_arch = "powerpc64")]
639#[path = "powerpc64/if_packet.rs"]
640pub mod if_packet;
641#[cfg(feature = "io_uring")]
642#[cfg(target_arch = "powerpc64")]
643#[path = "powerpc64/io_uring.rs"]
644pub mod io_uring;
645#[cfg(feature = "ioctl")]
646#[cfg(target_arch = "powerpc64")]
647#[path = "powerpc64/ioctl.rs"]
648pub mod ioctl;
649#[cfg(feature = "mempolicy")]
650#[cfg(target_arch = "powerpc64")]
651#[path = "powerpc64/mempolicy.rs"]
652pub mod mempolicy;
653#[cfg(feature = "net")]
654#[cfg(target_arch = "powerpc64")]
655#[path = "powerpc64/net.rs"]
656pub mod net;
657#[cfg(feature = "netlink")]
658#[cfg(target_arch = "powerpc64")]
659#[path = "powerpc64/netlink.rs"]
660pub mod netlink;
661#[cfg(feature = "prctl")]
662#[cfg(target_arch = "powerpc64")]
663#[path = "powerpc64/prctl.rs"]
664pub mod prctl;
665#[cfg(feature = "system")]
666#[cfg(target_arch = "powerpc64")]
667#[path = "powerpc64/system.rs"]
668pub mod system;
669#[cfg(feature = "xdp")]
670#[cfg(target_arch = "powerpc64")]
671#[path = "powerpc64/xdp.rs"]
672pub mod xdp;
673#[cfg(feature = "errno")]
674#[cfg(target_arch = "riscv32")]
675#[path = "riscv32/errno.rs"]
676pub mod errno;
677#[cfg(feature = "general")]
678#[cfg(target_arch = "riscv32")]
679#[path = "riscv32/general.rs"]
680pub mod general;
681#[cfg(feature = "if_ether")]
682#[cfg(target_arch = "riscv32")]
683#[path = "riscv32/if_ether.rs"]
684pub mod if_ether;
685#[cfg(feature = "if_packet")]
686#[cfg(target_arch = "riscv32")]
687#[path = "riscv32/if_packet.rs"]
688pub mod if_packet;
689#[cfg(feature = "io_uring")]
690#[cfg(target_arch = "riscv32")]
691#[path = "riscv32/io_uring.rs"]
692pub mod io_uring;
693#[cfg(feature = "ioctl")]
694#[cfg(target_arch = "riscv32")]
695#[path = "riscv32/ioctl.rs"]
696pub mod ioctl;
697#[cfg(feature = "mempolicy")]
698#[cfg(target_arch = "riscv32")]
699#[path = "riscv32/mempolicy.rs"]
700pub mod mempolicy;
701#[cfg(feature = "net")]
702#[cfg(target_arch = "riscv32")]
703#[path = "riscv32/net.rs"]
704pub mod net;
705#[cfg(feature = "netlink")]
706#[cfg(target_arch = "riscv32")]
707#[path = "riscv32/netlink.rs"]
708pub mod netlink;
709#[cfg(feature = "prctl")]
710#[cfg(target_arch = "riscv32")]
711#[path = "riscv32/prctl.rs"]
712pub mod prctl;
713#[cfg(feature = "system")]
714#[cfg(target_arch = "riscv32")]
715#[path = "riscv32/system.rs"]
716pub mod system;
717#[cfg(feature = "xdp")]
718#[cfg(target_arch = "riscv32")]
719#[path = "riscv32/xdp.rs"]
720pub mod xdp;
721#[cfg(feature = "errno")]
722#[cfg(target_arch = "riscv64")]
723#[path = "riscv64/errno.rs"]
724pub mod errno;
725#[cfg(feature = "general")]
726#[cfg(target_arch = "riscv64")]
727#[path = "riscv64/general.rs"]
728pub mod general;
729#[cfg(feature = "if_ether")]
730#[cfg(target_arch = "riscv64")]
731#[path = "riscv64/if_ether.rs"]
732pub mod if_ether;
733#[cfg(feature = "if_packet")]
734#[cfg(target_arch = "riscv64")]
735#[path = "riscv64/if_packet.rs"]
736pub mod if_packet;
737#[cfg(feature = "io_uring")]
738#[cfg(target_arch = "riscv64")]
739#[path = "riscv64/io_uring.rs"]
740pub mod io_uring;
741#[cfg(feature = "ioctl")]
742#[cfg(target_arch = "riscv64")]
743#[path = "riscv64/ioctl.rs"]
744pub mod ioctl;
745#[cfg(feature = "mempolicy")]
746#[cfg(target_arch = "riscv64")]
747#[path = "riscv64/mempolicy.rs"]
748pub mod mempolicy;
749#[cfg(feature = "net")]
750#[cfg(target_arch = "riscv64")]
751#[path = "riscv64/net.rs"]
752pub mod net;
753#[cfg(feature = "netlink")]
754#[cfg(target_arch = "riscv64")]
755#[path = "riscv64/netlink.rs"]
756pub mod netlink;
757#[cfg(feature = "prctl")]
758#[cfg(target_arch = "riscv64")]
759#[path = "riscv64/prctl.rs"]
760pub mod prctl;
761#[cfg(feature = "system")]
762#[cfg(target_arch = "riscv64")]
763#[path = "riscv64/system.rs"]
764pub mod system;
765#[cfg(feature = "xdp")]
766#[cfg(target_arch = "riscv64")]
767#[path = "riscv64/xdp.rs"]
768pub mod xdp;
769#[cfg(feature = "errno")]
770#[cfg(target_arch = "s390x")]
771#[path = "s390x/errno.rs"]
772pub mod errno;
773#[cfg(feature = "general")]
774#[cfg(target_arch = "s390x")]
775#[path = "s390x/general.rs"]
776pub mod general;
777#[cfg(feature = "if_ether")]
778#[cfg(target_arch = "s390x")]
779#[path = "s390x/if_ether.rs"]
780pub mod if_ether;
781#[cfg(feature = "if_packet")]
782#[cfg(target_arch = "s390x")]
783#[path = "s390x/if_packet.rs"]
784pub mod if_packet;
785#[cfg(feature = "io_uring")]
786#[cfg(target_arch = "s390x")]
787#[path = "s390x/io_uring.rs"]
788pub mod io_uring;
789#[cfg(feature = "ioctl")]
790#[cfg(target_arch = "s390x")]
791#[path = "s390x/ioctl.rs"]
792pub mod ioctl;
793#[cfg(feature = "mempolicy")]
794#[cfg(target_arch = "s390x")]
795#[path = "s390x/mempolicy.rs"]
796pub mod mempolicy;
797#[cfg(feature = "net")]
798#[cfg(target_arch = "s390x")]
799#[path = "s390x/net.rs"]
800pub mod net;
801#[cfg(feature = "netlink")]
802#[cfg(target_arch = "s390x")]
803#[path = "s390x/netlink.rs"]
804pub mod netlink;
805#[cfg(feature = "prctl")]
806#[cfg(target_arch = "s390x")]
807#[path = "s390x/prctl.rs"]
808pub mod prctl;
809#[cfg(feature = "system")]
810#[cfg(target_arch = "s390x")]
811#[path = "s390x/system.rs"]
812pub mod system;
813#[cfg(feature = "xdp")]
814#[cfg(target_arch = "s390x")]
815#[path = "s390x/xdp.rs"]
816pub mod xdp;
817#[cfg(feature = "errno")]
818#[cfg(target_arch = "sparc")]
819#[path = "sparc/errno.rs"]
820pub mod errno;
821#[cfg(feature = "general")]
822#[cfg(target_arch = "sparc")]
823#[path = "sparc/general.rs"]
824pub mod general;
825#[cfg(feature = "if_ether")]
826#[cfg(target_arch = "sparc")]
827#[path = "sparc/if_ether.rs"]
828pub mod if_ether;
829#[cfg(feature = "if_packet")]
830#[cfg(target_arch = "sparc")]
831#[path = "sparc/if_packet.rs"]
832pub mod if_packet;
833#[cfg(feature = "io_uring")]
834#[cfg(target_arch = "sparc")]
835#[path = "sparc/io_uring.rs"]
836pub mod io_uring;
837#[cfg(feature = "ioctl")]
838#[cfg(target_arch = "sparc")]
839#[path = "sparc/ioctl.rs"]
840pub mod ioctl;
841#[cfg(feature = "mempolicy")]
842#[cfg(target_arch = "sparc")]
843#[path = "sparc/mempolicy.rs"]
844pub mod mempolicy;
845#[cfg(feature = "net")]
846#[cfg(target_arch = "sparc")]
847#[path = "sparc/net.rs"]
848pub mod net;
849#[cfg(feature = "netlink")]
850#[cfg(target_arch = "sparc")]
851#[path = "sparc/netlink.rs"]
852pub mod netlink;
853#[cfg(feature = "prctl")]
854#[cfg(target_arch = "sparc")]
855#[path = "sparc/prctl.rs"]
856pub mod prctl;
857#[cfg(feature = "system")]
858#[cfg(target_arch = "sparc")]
859#[path = "sparc/system.rs"]
860pub mod system;
861#[cfg(feature = "xdp")]
862#[cfg(target_arch = "sparc")]
863#[path = "sparc/xdp.rs"]
864pub mod xdp;
865#[cfg(feature = "errno")]
866#[cfg(target_arch = "sparc64")]
867#[path = "sparc64/errno.rs"]
868pub mod errno;
869#[cfg(feature = "general")]
870#[cfg(target_arch = "sparc64")]
871#[path = "sparc64/general.rs"]
872pub mod general;
873#[cfg(feature = "if_ether")]
874#[cfg(target_arch = "sparc64")]
875#[path = "sparc64/if_ether.rs"]
876pub mod if_ether;
877#[cfg(feature = "if_packet")]
878#[cfg(target_arch = "sparc64")]
879#[path = "sparc64/if_packet.rs"]
880pub mod if_packet;
881#[cfg(feature = "io_uring")]
882#[cfg(target_arch = "sparc64")]
883#[path = "sparc64/io_uring.rs"]
884pub mod io_uring;
885#[cfg(feature = "ioctl")]
886#[cfg(target_arch = "sparc64")]
887#[path = "sparc64/ioctl.rs"]
888pub mod ioctl;
889#[cfg(feature = "mempolicy")]
890#[cfg(target_arch = "sparc64")]
891#[path = "sparc64/mempolicy.rs"]
892pub mod mempolicy;
893#[cfg(feature = "net")]
894#[cfg(target_arch = "sparc64")]
895#[path = "sparc64/net.rs"]
896pub mod net;
897#[cfg(feature = "netlink")]
898#[cfg(target_arch = "sparc64")]
899#[path = "sparc64/netlink.rs"]
900pub mod netlink;
901#[cfg(feature = "prctl")]
902#[cfg(target_arch = "sparc64")]
903#[path = "sparc64/prctl.rs"]
904pub mod prctl;
905#[cfg(feature = "system")]
906#[cfg(target_arch = "sparc64")]
907#[path = "sparc64/system.rs"]
908pub mod system;
909#[cfg(feature = "xdp")]
910#[cfg(target_arch = "sparc64")]
911#[path = "sparc64/xdp.rs"]
912pub mod xdp;
913#[cfg(feature = "errno")]
914#[cfg(target_arch = "x86")]
915#[path = "x86/errno.rs"]
916pub mod errno;
917#[cfg(feature = "general")]
918#[cfg(target_arch = "x86")]
919#[path = "x86/general.rs"]
920pub mod general;
921#[cfg(feature = "if_ether")]
922#[cfg(target_arch = "x86")]
923#[path = "x86/if_ether.rs"]
924pub mod if_ether;
925#[cfg(feature = "if_packet")]
926#[cfg(target_arch = "x86")]
927#[path = "x86/if_packet.rs"]
928pub mod if_packet;
929#[cfg(feature = "io_uring")]
930#[cfg(target_arch = "x86")]
931#[path = "x86/io_uring.rs"]
932pub mod io_uring;
933#[cfg(feature = "ioctl")]
934#[cfg(target_arch = "x86")]
935#[path = "x86/ioctl.rs"]
936pub mod ioctl;
937#[cfg(feature = "mempolicy")]
938#[cfg(target_arch = "x86")]
939#[path = "x86/mempolicy.rs"]
940pub mod mempolicy;
941#[cfg(feature = "net")]
942#[cfg(target_arch = "x86")]
943#[path = "x86/net.rs"]
944pub mod net;
945#[cfg(feature = "netlink")]
946#[cfg(target_arch = "x86")]
947#[path = "x86/netlink.rs"]
948pub mod netlink;
949#[cfg(feature = "prctl")]
950#[cfg(target_arch = "x86")]
951#[path = "x86/prctl.rs"]
952pub mod prctl;
953#[cfg(feature = "system")]
954#[cfg(target_arch = "x86")]
955#[path = "x86/system.rs"]
956pub mod system;
957#[cfg(feature = "xdp")]
958#[cfg(target_arch = "x86")]
959#[path = "x86/xdp.rs"]
960pub mod xdp;
961#[cfg(feature = "errno")]
962#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))]
963#[path = "x86_64/errno.rs"]
964pub mod errno;
965#[cfg(feature = "general")]
966#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))]
967#[path = "x86_64/general.rs"]
968pub mod general;
969#[cfg(feature = "if_ether")]
970#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))]
971#[path = "x86_64/if_ether.rs"]
972pub mod if_ether;
973#[cfg(feature = "if_packet")]
974#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))]
975#[path = "x86_64/if_packet.rs"]
976pub mod if_packet;
977#[cfg(feature = "io_uring")]
978#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))]
979#[path = "x86_64/io_uring.rs"]
980pub mod io_uring;
981#[cfg(feature = "ioctl")]
982#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))]
983#[path = "x86_64/ioctl.rs"]
984pub mod ioctl;
985#[cfg(feature = "mempolicy")]
986#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))]
987#[path = "x86_64/mempolicy.rs"]
988pub mod mempolicy;
989#[cfg(feature = "net")]
990#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))]
991#[path = "x86_64/net.rs"]
992pub mod net;
993#[cfg(feature = "netlink")]
994#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))]
995#[path = "x86_64/netlink.rs"]
996pub mod netlink;
997#[cfg(feature = "prctl")]
998#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))]
999#[path = "x86_64/prctl.rs"]
1000pub mod prctl;
1001#[cfg(feature = "system")]
1002#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))]
1003#[path = "x86_64/system.rs"]
1004pub mod system;
1005#[cfg(feature = "xdp")]
1006#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))]
1007#[path = "x86_64/xdp.rs"]
1008pub mod xdp;
1009#[cfg(feature = "errno")]
1010#[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
1011#[path = "x32/errno.rs"]
1012pub mod errno;
1013#[cfg(feature = "general")]
1014#[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
1015#[path = "x32/general.rs"]
1016pub mod general;
1017#[cfg(feature = "if_ether")]
1018#[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
1019#[path = "x32/if_ether.rs"]
1020pub mod if_ether;
1021#[cfg(feature = "if_packet")]
1022#[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
1023#[path = "x32/if_packet.rs"]
1024pub mod if_packet;
1025#[cfg(feature = "io_uring")]
1026#[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
1027#[path = "x32/io_uring.rs"]
1028pub mod io_uring;
1029#[cfg(feature = "ioctl")]
1030#[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
1031#[path = "x32/ioctl.rs"]
1032pub mod ioctl;
1033#[cfg(feature = "mempolicy")]
1034#[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
1035#[path = "x32/mempolicy.rs"]
1036pub mod mempolicy;
1037#[cfg(feature = "net")]
1038#[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
1039#[path = "x32/net.rs"]
1040pub mod net;
1041#[cfg(feature = "netlink")]
1042#[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
1043#[path = "x32/netlink.rs"]
1044pub mod netlink;
1045#[cfg(feature = "prctl")]
1046#[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
1047#[path = "x32/prctl.rs"]
1048pub mod prctl;
1049#[cfg(feature = "system")]
1050#[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
1051#[path = "x32/system.rs"]
1052pub mod system;
1053#[cfg(feature = "xdp")]
1054#[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
1055#[path = "x32/xdp.rs"]
1056pub mod xdp;
1057