1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
s! {
pub struct lconv {
pub decimal_point: *mut ::c_char,
pub thousands_sep: *mut ::c_char,
pub grouping: *mut ::c_char,
pub int_curr_symbol: *mut ::c_char,
pub currency_symbol: *mut ::c_char,
pub mon_decimal_point: *mut ::c_char,
pub mon_thousands_sep: *mut ::c_char,
pub mon_grouping: *mut ::c_char,
pub positive_sign: *mut ::c_char,
pub negative_sign: *mut ::c_char,
pub int_frac_digits: ::c_char,
pub frac_digits: ::c_char,
pub p_cs_precedes: ::c_char,
pub p_sep_by_space: ::c_char,
pub n_cs_precedes: ::c_char,
pub n_sep_by_space: ::c_char,
pub p_sign_posn: ::c_char,
pub n_sign_posn: ::c_char,
pub int_p_cs_precedes: ::c_char,
pub int_p_sep_by_space: ::c_char,
pub int_n_cs_precedes: ::c_char,
pub int_n_sep_by_space: ::c_char,
pub int_p_sign_posn: ::c_char,
pub int_n_sign_posn: ::c_char,
}
pub struct statfs {
pub f_flags: ::uint32_t,
pub f_bsize: ::uint32_t,
pub f_iosize: ::uint32_t,
pub f_blocks: ::uint64_t,
pub f_bfree: ::uint64_t,
pub f_bavail: ::int64_t,
pub f_files: ::uint64_t,
pub f_ffree: ::uint64_t,
pub f_favail: ::int64_t,
pub f_syncwrites: ::uint64_t,
pub f_syncreads: ::uint64_t,
pub f_asyncwrites: ::uint64_t,
pub f_asyncreads: ::uint64_t,
pub f_fsid: ::fsid_t,
pub f_namemax: ::uint32_t,
pub f_owner: ::uid_t,
pub f_ctime: ::uint64_t,
pub f_fstypename: [::c_char; 16],
pub f_mntonname: [::c_char; 90],
pub f_mntfromname: [::c_char; 90],
pub f_mntfromspec: [::c_char; 90],
pub mount_info: mount_info,
}
pub union mount_info {
pub ufs_args: ufs_args,
pub mfs_args: mfs_args,
pub nfs_args: nfs_args,
pub iso_args: iso_args,
pub msdosfs_args: msdosfs_args,
pub ntfs_args: ntfs_args,
pub tmpfs_args: tmpfs_args,
align: [::c_char; 160],
}
pub struct ufs_args {
pub fspec: *mut ::c_char,
pub export_info: export_args,
}
pub struct mfs_args {
pub fspec: *mut ::c_char,
pub export_info: export_args,
pub base: *mut ::c_char,
pub size: ::c_ulong,
}
pub struct iso_args {
pub fspec: *mut ::c_char,
pub export_info: export_args,
pub flags: ::c_int,
pub sess: ::c_int,
}
pub struct nfs_args {
pub version: ::c_int,
pub addr: *mut ::sockaddr,
pub addrlen: ::c_int,
pub sotype: ::c_int,
pub proto: ::c_int,
pub fh: *mut ::c_uchar,
pub fhsize: ::c_int,
pub flags: ::c_int,
pub wsize: ::c_int,
pub rsize: ::c_int,
pub readdirsize: ::c_int,
pub timeo: ::c_int,
pub retrans: ::c_int,
pub maxgrouplist: ::c_int,
pub readahead: ::c_int,
pub leaseterm: ::c_int,
pub deadthresh: ::c_int,
pub hostname: *mut ::c_char,
pub acregmin: ::c_int,
pub acregmax: ::c_int,
pub acdirmin: ::c_int,
pub acdirmax: ::c_int,
}
pub struct msdosfs_args {
pub fspec: *mut ::c_char,
pub export_info: export_args,
pub uid: ::uid_t,
pub gid: ::gid_t,
pub mask: ::mode_t,
pub flags: ::c_int,
}
pub struct ntfs_args {
pub fspec: *mut ::c_char,
pub export_info: export_args,
pub uid: ::uid_t,
pub gid: ::gid_t,
pub mode: ::mode_t,
pub flag: ::c_ulong,
}
pub struct udf_args {
pub fspec: *mut ::c_char,
pub lastblock: ::uint32_t,
}
pub struct tmpfs_args {
pub ta_version: ::c_int,
pub ta_nodes_max: ::ino_t,
pub ta_size_max: ::off_t,
pub ta_root_uid: ::uid_t,
pub ta_root_gid: ::gid_t,
pub ta_root_mode: ::mode_t,
}
pub struct fusefs_args {
pub name: *mut ::c_char,
pub fd: ::c_int,
pub max_read: ::c_int,
pub allow_other: ::c_int,
}
pub struct xucred {
pub cr_uid: ::uid_t,
pub cr_gid: ::gid_t,
pub cr_ngroups: ::c_short,
pub cr_groups: [::gid_t; 16],
}
pub struct export_args {
pub ex_flags: ::c_int,
pub ex_root: ::uid_t,
pub ex_anon: xucred,
pub ex_addr: *mut ::sockaddr,
pub ex_addrlen: ::c_int,
pub ex_mask: *mut ::sockaddr,
pub ex_masklen: ::c_int,
}
}
pub const ISOFSMNT_NORRIP: ::c_int = 0x1;
pub const ISOFSMNT_GENS: ::c_int = 0x2;
pub const ISOFSMNT_EXTATT: ::c_int = 0x4;
pub const ISOFSMNT_NOJOLIET: ::c_int = 0x8;
pub const ISOFSMNT_SESS: ::c_int = 0x10;
pub const NFS_ARGSVERSION: ::c_int = 4;
pub const NFSMNT_RESVPORT: ::c_int = 0;
pub const NFSMNT_SOFT: ::c_int = 0x1;
pub const NFSMNT_WSIZE: ::c_int = 0x2;
pub const NFSMNT_RSIZE: ::c_int = 0x4;
pub const NFSMNT_TIMEO: ::c_int = 0x8;
pub const NFSMNT_RETRANS: ::c_int = 0x10;
pub const NFSMNT_MAXGRPS: ::c_int = 0x20;
pub const NFSMNT_INT: ::c_int = 0x40;
pub const NFSMNT_NOCONN: ::c_int = 0x80;
pub const NFSMNT_NQNFS: ::c_int = 0x100;
pub const NFSMNT_NFSV3: ::c_int = 0x200;
pub const NFSMNT_KERB: ::c_int = 0x400;
pub const NFSMNT_DUMBTIMR: ::c_int = 0x800;
pub const NFSMNT_LEASETERM: ::c_int = 0x1000;
pub const NFSMNT_READAHEAD: ::c_int = 0x2000;
pub const NFSMNT_DEADTHRESH: ::c_int = 0x4000;
pub const NFSMNT_NOAC: ::c_int = 0x8000;
pub const NFSMNT_RDIRPLUS: ::c_int = 0x10000;
pub const NFSMNT_READDIRSIZE: ::c_int = 0x20000;
pub const NFSMNT_ACREGMIN: ::c_int = 0x40000;
pub const NFSMNT_ACREGMAX: ::c_int = 0x80000;
pub const NFSMNT_ACDIRMIN: ::c_int = 0x100000;
pub const NFSMNT_ACDIRMAX: ::c_int = 0x200000;
pub const NFSMNT_INTERNAL: ::c_int = 0xfffc0000;
pub const NFSMNT_HASWRITEVERF: ::c_int = 0x40000;
pub const NFSMNT_GOTPATHCONF: ::c_int = 0x80000;
pub const NFSMNT_GOTFSINFO: ::c_int = 0x100000;
pub const NFSMNT_MNTD: ::c_int = 0x200000;
pub const NFSMNT_DISMINPROG: ::c_int = 0x400000;
pub const NFSMNT_DISMNT: ::c_int = 0x800000;
pub const NFSMNT_SNDLOCK: ::c_int = 0x1000000;
pub const NFSMNT_WANTSND: ::c_int = 0x2000000;
pub const NFSMNT_RCVLOCK: ::c_int = 0x4000000;
pub const NFSMNT_WANTRCV: ::c_int = 0x8000000;
pub const NFSMNT_WAITAUTH: ::c_int = 0x10000000;
pub const NFSMNT_HASAUTH: ::c_int = 0x20000000;
pub const NFSMNT_WANTAUTH: ::c_int = 0x40000000;
pub const NFSMNT_AUTHERR: ::c_int = 0x80000000;
pub const MSDOSFSMNT_SHORTNAME: ::c_int = 0x1;
pub const MSDOSFSMNT_LONGNAME: ::c_int = 0x2;
pub const MSDOSFSMNT_NOWIN95: ::c_int = 0x4;
pub const NTFS_MFLAG_CASEINS: ::c_int = 0x1;
pub const NTFS_MFLAG_ALLNAMES: ::c_int = 0x2;
pub const TMPFS_ARGS_VERSION: ::c_int = 1;
pub const MAP_STACK : ::c_int = 0x4000;
pub const IFF_UP: ::c_int = 0x1;
pub const IFF_BROADCAST: ::c_int = 0x2;
pub const IFF_DEBUG: ::c_int = 0x4;
pub const IFF_LOOPBACK: ::c_int = 0x8;
pub const IFF_POINTOPOINT: ::c_int = 0x10;
pub const IFF_STATICARP: ::c_int = 0x20;
pub const IFF_RUNNING: ::c_int = 0x40;
pub const IFF_NOARP: ::c_int = 0x80;
pub const IFF_PROMISC: ::c_int = 0x100;
pub const IFF_ALLMULTI: ::c_int = 0x200;
pub const IFF_OACTIVE: ::c_int = 0x400;
pub const IFF_SIMPLEX: ::c_int = 0x800;
pub const IFF_LINK0: ::c_int = 0x1000;
pub const IFF_LINK1: ::c_int = 0x2000;
pub const IFF_LINK2: ::c_int = 0x4000;
pub const IFF_MULTICAST: ::c_int = 0x8000;
pub const SIGSTKSZ : ::size_t = 28672;
pub const PT_FIRSTMACH: ::c_int = 32;
extern {
pub fn accept4(s: ::c_int, addr: *mut ::sockaddr,
addrlen: *mut ::socklen_t, flags: ::c_int) -> ::c_int;
pub fn execvpe(file: *const ::c_char, argv: *const *const ::c_char,
envp: *const *const ::c_char) -> ::c_int;
pub fn pledge(promises: *const ::c_char,
execpromises: *const ::c_char) -> ::c_int;
pub fn strtonum(nptr: *const ::c_char, minval: ::c_longlong,
maxval: ::c_longlong,
errstr: *mut *const ::c_char) -> ::c_longlong;
pub fn statfs(path: *const ::c_char, buf: *mut statfs) -> ::c_int;
pub fn fstatfs(fd: ::c_int, buf: *mut statfs) -> ::c_int;
pub fn dup3(src: ::c_int, dst: ::c_int, flags: ::c_int) -> ::c_int;
}
cfg_if! {
if #[cfg(target_arch = "x86")] {
mod x86;
pub use self::x86::*;
} else if #[cfg(target_arch = "x86_64")] {
mod x86_64;
pub use self::x86_64::*;
} else if #[cfg(target_arch = "aarch64")] {
mod aarch64;
pub use self::aarch64::*;
} else {
}
}