1 pub type c_long = i64;
2 pub type c_ulong = u64;
3 pub type regoff_t = ::c_long;
4 
5 s! {
6     pub struct statfs64 {
7         pub f_type: ::c_ulong,
8         pub f_bsize: ::c_ulong,
9         pub f_blocks: ::fsblkcnt_t,
10         pub f_bfree: ::fsblkcnt_t,
11         pub f_bavail: ::fsblkcnt_t,
12         pub f_files: ::fsfilcnt_t,
13         pub f_ffree: ::fsfilcnt_t,
14         pub f_fsid: ::fsid_t,
15         pub f_namelen: ::c_ulong,
16         pub f_frsize: ::c_ulong,
17         pub f_flags: ::c_ulong,
18         pub f_spare: [::c_ulong; 4],
19     }
20 
21     pub struct statvfs64 {
22         pub f_bsize: ::c_ulong,
23         pub f_frsize: ::c_ulong,
24         pub f_blocks: u64,
25         pub f_bfree: u64,
26         pub f_bavail: u64,
27         pub f_files: u64,
28         pub f_ffree: u64,
29         pub f_favail: u64,
30         pub f_fsid: ::c_ulong,
31         pub f_flag: ::c_ulong,
32         pub f_namemax: ::c_ulong,
33         __f_spare: [::c_int; 6],
34     }
35 
36     pub struct stack_t {
37         pub ss_sp: *mut ::c_void,
38         pub ss_flags: ::c_int,
39         pub ss_size: ::size_t
40     }
41 
42     pub struct pthread_attr_t {
43         __size: [u64; 7]
44     }
45 
46     pub struct sigset_t {
47         __val: [::c_ulong; 16],
48     }
49 
50     pub struct shmid_ds {
51         pub shm_perm: ::ipc_perm,
52         pub shm_segsz: ::size_t,
53         pub shm_atime: ::time_t,
54         pub shm_dtime: ::time_t,
55         pub shm_ctime: ::time_t,
56         pub shm_cpid: ::pid_t,
57         pub shm_lpid: ::pid_t,
58         pub shm_nattch: ::c_ulong,
59         __pad1: ::c_ulong,
60         __pad2: ::c_ulong,
61     }
62 
63     pub struct msqid_ds {
64         pub msg_perm: ::ipc_perm,
65         pub msg_stime: ::time_t,
66         pub msg_rtime: ::time_t,
67         pub msg_ctime: ::time_t,
68         __msg_cbytes: ::c_ulong,
69         pub msg_qnum: ::msgqnum_t,
70         pub msg_qbytes: ::msglen_t,
71         pub msg_lspid: ::pid_t,
72         pub msg_lrpid: ::pid_t,
73         __pad1: ::c_ulong,
74         __pad2: ::c_ulong,
75     }
76 
77     pub struct statfs {
78         pub f_type: ::c_ulong,
79         pub f_bsize: ::c_ulong,
80         pub f_blocks: ::fsblkcnt_t,
81         pub f_bfree: ::fsblkcnt_t,
82         pub f_bavail: ::fsblkcnt_t,
83         pub f_files: ::fsfilcnt_t,
84         pub f_ffree: ::fsfilcnt_t,
85         pub f_fsid: ::fsid_t,
86         pub f_namelen: ::c_ulong,
87         pub f_frsize: ::c_ulong,
88         pub f_flags: ::c_ulong,
89         pub f_spare: [::c_ulong; 4],
90     }
91 
92     pub struct msghdr {
93         pub msg_name: *mut ::c_void,
94         pub msg_namelen: ::socklen_t,
95         pub msg_iov: *mut ::iovec,
96         #[cfg(target_endian = "big")]
97         __pad1: ::c_int,
98         pub msg_iovlen: ::c_int,
99         #[cfg(target_endian = "little")]
100         __pad1: ::c_int,
101         pub msg_control: *mut ::c_void,
102         #[cfg(target_endian = "big")]
103         __pad2: ::c_int,
104         pub msg_controllen: ::socklen_t,
105         #[cfg(target_endian = "little")]
106         __pad2: ::c_int,
107         pub msg_flags: ::c_int,
108     }
109 
110     pub struct cmsghdr {
111         #[cfg(target_endian = "big")]
112         pub __pad1: ::c_int,
113         pub cmsg_len: ::socklen_t,
114         #[cfg(target_endian = "little")]
115         pub __pad1: ::c_int,
116         pub cmsg_level: ::c_int,
117         pub cmsg_type: ::c_int,
118     }
119 
120     pub struct sem_t {
121         __val: [::c_int; 8],
122     }
123 
124     pub struct siginfo_t {
125         pub si_signo: ::c_int,
126         pub si_errno: ::c_int,
127         pub si_code: ::c_int,
128         pub _pad: [::c_int; 29],
129         _align: [usize; 0],
130     }
131 }
132 
133 pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 56;
134 pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 40;
135 
136 pub const RLIMIT_RSS: ::c_int = 5;
137 pub const RLIMIT_NOFILE: ::c_int = 7;
138 pub const RLIMIT_AS: ::c_int = 9;
139 pub const RLIMIT_NPROC: ::c_int = 6;
140 pub const RLIMIT_MEMLOCK: ::c_int = 8;
141 
142 pub const SOCK_NONBLOCK: ::c_int = 2048;
143 
144 pub const SOCK_SEQPACKET: ::c_int = 5;
145 
146 extern "C" {
getrandom( buf: *mut ::c_void, buflen: ::size_t, flags: ::c_uint, ) -> ::ssize_t147     pub fn getrandom(
148         buf: *mut ::c_void,
149         buflen: ::size_t,
150         flags: ::c_uint,
151     ) -> ::ssize_t;
152 }
153 
154 cfg_if! {
155     if #[cfg(target_arch = "aarch64")] {
156         mod aarch64;
157         pub use self::aarch64::*;
158     } else if #[cfg(target_arch = "mips64")] {
159         mod mips64;
160         pub use self::mips64::*;
161     } else if #[cfg(any(target_arch = "powerpc64"))] {
162         mod powerpc64;
163         pub use self::powerpc64::*;
164     } else if #[cfg(any(target_arch = "x86_64"))] {
165         mod x86_64;
166         pub use self::x86_64::*;
167     } else {
168         // Unknown target_arch
169     }
170 }
171