std/os/linux/
raw.rs

1//! Linux-specific raw type definitions.
2
3#![stable(feature = "raw_ext", since = "1.1.0")]
4#![deprecated(
5    since = "1.8.0",
6    note = "these type aliases are no longer supported by \
7            the standard library, the `libc` crate on \
8            crates.io should be used instead for the correct \
9            definitions"
10)]
11#![allow(deprecated)]
12
13use crate::os::raw::c_ulong;
14
15#[stable(feature = "raw_ext", since = "1.1.0")]
16pub type dev_t = u64;
17#[stable(feature = "raw_ext", since = "1.1.0")]
18pub type mode_t = u32;
19
20#[stable(feature = "pthread_t", since = "1.8.0")]
21pub type pthread_t = c_ulong;
22
23#[doc(inline)]
24#[stable(feature = "raw_ext", since = "1.1.0")]
25pub use self::arch::{blkcnt_t, blksize_t, ino_t, nlink_t, off_t, stat, time_t};
26
27#[cfg(any(
28    target_arch = "x86",
29    target_arch = "m68k",
30    target_arch = "csky",
31    target_arch = "powerpc",
32    target_arch = "sparc",
33    target_arch = "arm",
34    target_arch = "wasm32"
35))]
36mod arch {
37    use crate::os::raw::{c_long, c_short, c_uint};
38
39    #[stable(feature = "raw_ext", since = "1.1.0")]
40    pub type blkcnt_t = u64;
41    #[stable(feature = "raw_ext", since = "1.1.0")]
42    pub type blksize_t = u64;
43    #[stable(feature = "raw_ext", since = "1.1.0")]
44    pub type ino_t = u64;
45    #[stable(feature = "raw_ext", since = "1.1.0")]
46    pub type nlink_t = u64;
47    #[stable(feature = "raw_ext", since = "1.1.0")]
48    pub type off_t = u64;
49    #[stable(feature = "raw_ext", since = "1.1.0")]
50    pub type time_t = i64;
51
52    #[repr(C)]
53    #[derive(Clone)]
54    #[stable(feature = "raw_ext", since = "1.1.0")]
55    pub struct stat {
56        #[stable(feature = "raw_ext", since = "1.1.0")]
57        pub st_dev: u64,
58        #[stable(feature = "raw_ext", since = "1.1.0")]
59        pub __pad1: c_short,
60        #[stable(feature = "raw_ext", since = "1.1.0")]
61        pub __st_ino: u32,
62        #[stable(feature = "raw_ext", since = "1.1.0")]
63        pub st_mode: u32,
64        #[stable(feature = "raw_ext", since = "1.1.0")]
65        pub st_nlink: u32,
66        #[stable(feature = "raw_ext", since = "1.1.0")]
67        pub st_uid: u32,
68        #[stable(feature = "raw_ext", since = "1.1.0")]
69        pub st_gid: u32,
70        #[stable(feature = "raw_ext", since = "1.1.0")]
71        pub st_rdev: u64,
72        #[stable(feature = "raw_ext", since = "1.1.0")]
73        pub __pad2: c_uint,
74        #[stable(feature = "raw_ext", since = "1.1.0")]
75        pub st_size: i64,
76        #[stable(feature = "raw_ext", since = "1.1.0")]
77        pub st_blksize: i32,
78        #[stable(feature = "raw_ext", since = "1.1.0")]
79        pub st_blocks: i64,
80        #[stable(feature = "raw_ext", since = "1.1.0")]
81        pub st_atime: i32,
82        #[stable(feature = "raw_ext", since = "1.1.0")]
83        pub st_atime_nsec: c_long,
84        #[stable(feature = "raw_ext", since = "1.1.0")]
85        pub st_mtime: i32,
86        #[stable(feature = "raw_ext", since = "1.1.0")]
87        pub st_mtime_nsec: c_long,
88        #[stable(feature = "raw_ext", since = "1.1.0")]
89        pub st_ctime: i32,
90        #[stable(feature = "raw_ext", since = "1.1.0")]
91        pub st_ctime_nsec: c_long,
92        #[stable(feature = "raw_ext", since = "1.1.0")]
93        pub st_ino: u64,
94    }
95}
96
97#[cfg(any(target_arch = "mips", target_arch = "mips32r6"))]
98mod arch {
99    use crate::os::raw::{c_long, c_ulong};
100
101    #[cfg(target_env = "musl")]
102    #[stable(feature = "raw_ext", since = "1.1.0")]
103    pub type blkcnt_t = i64;
104    #[cfg(not(target_env = "musl"))]
105    #[stable(feature = "raw_ext", since = "1.1.0")]
106    pub type blkcnt_t = u64;
107    #[stable(feature = "raw_ext", since = "1.1.0")]
108    pub type blksize_t = u64;
109    #[cfg(target_env = "musl")]
110    #[stable(feature = "raw_ext", since = "1.1.0")]
111    pub type ino_t = u64;
112    #[cfg(not(target_env = "musl"))]
113    #[stable(feature = "raw_ext", since = "1.1.0")]
114    pub type ino_t = u64;
115    #[stable(feature = "raw_ext", since = "1.1.0")]
116    pub type nlink_t = u64;
117    #[cfg(target_env = "musl")]
118    #[stable(feature = "raw_ext", since = "1.1.0")]
119    pub type off_t = u64;
120    #[cfg(not(target_env = "musl"))]
121    #[stable(feature = "raw_ext", since = "1.1.0")]
122    pub type off_t = u64;
123    #[stable(feature = "raw_ext", since = "1.1.0")]
124    pub type time_t = i64;
125
126    #[repr(C)]
127    #[derive(Clone)]
128    #[stable(feature = "raw_ext", since = "1.1.0")]
129    pub struct stat {
130        #[stable(feature = "raw_ext", since = "1.1.0")]
131        pub st_dev: c_ulong,
132        #[stable(feature = "raw_ext", since = "1.1.0")]
133        pub st_pad1: [c_long; 3],
134        #[stable(feature = "raw_ext", since = "1.1.0")]
135        pub st_ino: u64,
136        #[stable(feature = "raw_ext", since = "1.1.0")]
137        pub st_mode: u32,
138        #[stable(feature = "raw_ext", since = "1.1.0")]
139        pub st_nlink: u32,
140        #[stable(feature = "raw_ext", since = "1.1.0")]
141        pub st_uid: u32,
142        #[stable(feature = "raw_ext", since = "1.1.0")]
143        pub st_gid: u32,
144        #[stable(feature = "raw_ext", since = "1.1.0")]
145        pub st_rdev: c_ulong,
146        #[stable(feature = "raw_ext", since = "1.1.0")]
147        pub st_pad2: [c_long; 2],
148        #[stable(feature = "raw_ext", since = "1.1.0")]
149        pub st_size: i64,
150        #[stable(feature = "raw_ext", since = "1.1.0")]
151        pub st_atime: i32,
152        #[stable(feature = "raw_ext", since = "1.1.0")]
153        pub st_atime_nsec: c_long,
154        #[stable(feature = "raw_ext", since = "1.1.0")]
155        pub st_mtime: i32,
156        #[stable(feature = "raw_ext", since = "1.1.0")]
157        pub st_mtime_nsec: c_long,
158        #[stable(feature = "raw_ext", since = "1.1.0")]
159        pub st_ctime: i32,
160        #[stable(feature = "raw_ext", since = "1.1.0")]
161        pub st_ctime_nsec: c_long,
162        #[stable(feature = "raw_ext", since = "1.1.0")]
163        pub st_blksize: i32,
164        #[stable(feature = "raw_ext", since = "1.1.0")]
165        pub st_blocks: i64,
166        #[stable(feature = "raw_ext", since = "1.1.0")]
167        pub st_pad5: [c_long; 14],
168    }
169}
170
171#[cfg(target_arch = "hexagon")]
172mod arch {
173    use crate::os::raw::{c_int, c_long, c_uint};
174
175    #[stable(feature = "raw_ext", since = "1.1.0")]
176    pub type blkcnt_t = i64;
177    #[stable(feature = "raw_ext", since = "1.1.0")]
178    pub type blksize_t = c_long;
179    #[stable(feature = "raw_ext", since = "1.1.0")]
180    pub type ino_t = u64;
181    #[stable(feature = "raw_ext", since = "1.1.0")]
182    pub type nlink_t = c_uint;
183    #[stable(feature = "raw_ext", since = "1.1.0")]
184    pub type off_t = i64;
185    #[stable(feature = "raw_ext", since = "1.1.0")]
186    pub type time_t = i64;
187
188    #[repr(C)]
189    #[derive(Clone)]
190    #[stable(feature = "raw_ext", since = "1.1.0")]
191    pub struct stat {
192        #[stable(feature = "raw_ext", since = "1.1.0")]
193        pub st_dev: u64,
194        #[stable(feature = "raw_ext", since = "1.1.0")]
195        pub st_ino: u64,
196        #[stable(feature = "raw_ext", since = "1.1.0")]
197        pub st_mode: u32,
198        #[stable(feature = "raw_ext", since = "1.1.0")]
199        pub st_nlink: u32,
200        #[stable(feature = "raw_ext", since = "1.1.0")]
201        pub st_uid: u32,
202        #[stable(feature = "raw_ext", since = "1.1.0")]
203        pub st_gid: u32,
204        #[stable(feature = "raw_ext", since = "1.1.0")]
205        pub st_rdev: u64,
206        #[stable(feature = "raw_ext", since = "1.1.0")]
207        pub __pad1: u32,
208        #[stable(feature = "raw_ext", since = "1.1.0")]
209        pub st_size: i64,
210        #[stable(feature = "raw_ext", since = "1.1.0")]
211        pub st_blksize: i32,
212        #[stable(feature = "raw_ext", since = "1.1.0")]
213        pub __pad2: i32,
214        #[stable(feature = "raw_ext", since = "1.1.0")]
215        pub st_blocks: i64,
216        #[stable(feature = "raw_ext", since = "1.1.0")]
217        pub st_atime: i64,
218        #[stable(feature = "raw_ext", since = "1.1.0")]
219        pub st_atime_nsec: c_long,
220        #[stable(feature = "raw_ext", since = "1.1.0")]
221        pub st_mtime: i64,
222        #[stable(feature = "raw_ext", since = "1.1.0")]
223        pub st_mtime_nsec: c_long,
224        #[stable(feature = "raw_ext", since = "1.1.0")]
225        pub st_ctime: i64,
226        #[stable(feature = "raw_ext", since = "1.1.0")]
227        pub st_ctime_nsec: c_long,
228        #[stable(feature = "raw_ext", since = "1.1.0")]
229        pub __pad3: [c_int; 2],
230    }
231}
232
233#[cfg(any(
234    target_arch = "loongarch64",
235    target_arch = "mips64",
236    target_arch = "mips64r6",
237    target_arch = "s390x",
238    target_arch = "sparc64",
239    target_arch = "riscv64",
240    target_arch = "riscv32"
241))]
242mod arch {
243    #[stable(feature = "raw_ext", since = "1.1.0")]
244    pub use libc::{blkcnt_t, blksize_t, ino_t, nlink_t, off_t, stat, time_t};
245}
246
247#[cfg(any(
248    target_arch = "aarch64",
249    // Arm64EC is Windows-only, but docs are always build as Linux, so re-use AArch64 for Arm64EC.
250    all(doc, target_arch = "arm64ec")
251))]
252mod arch {
253    use crate::os::raw::{c_int, c_long};
254
255    #[stable(feature = "raw_ext", since = "1.1.0")]
256    pub type blkcnt_t = i64;
257    #[stable(feature = "raw_ext", since = "1.1.0")]
258    pub type blksize_t = i32;
259    #[stable(feature = "raw_ext", since = "1.1.0")]
260    pub type ino_t = u64;
261    #[stable(feature = "raw_ext", since = "1.1.0")]
262    pub type nlink_t = u32;
263    #[stable(feature = "raw_ext", since = "1.1.0")]
264    pub type off_t = i64;
265    #[stable(feature = "raw_ext", since = "1.1.0")]
266    pub type time_t = c_long;
267
268    #[repr(C)]
269    #[derive(Clone)]
270    #[stable(feature = "raw_ext", since = "1.1.0")]
271    pub struct stat {
272        #[stable(feature = "raw_ext", since = "1.1.0")]
273        pub st_dev: u64,
274        #[stable(feature = "raw_ext", since = "1.1.0")]
275        pub st_ino: u64,
276        #[stable(feature = "raw_ext", since = "1.1.0")]
277        pub st_mode: u32,
278        #[stable(feature = "raw_ext", since = "1.1.0")]
279        pub st_nlink: u32,
280        #[stable(feature = "raw_ext", since = "1.1.0")]
281        pub st_uid: u32,
282        #[stable(feature = "raw_ext", since = "1.1.0")]
283        pub st_gid: u32,
284        #[stable(feature = "raw_ext", since = "1.1.0")]
285        pub st_rdev: u64,
286        #[stable(feature = "raw_ext", since = "1.1.0")]
287        pub __pad1: u64,
288        #[stable(feature = "raw_ext", since = "1.1.0")]
289        pub st_size: i64,
290        #[stable(feature = "raw_ext", since = "1.1.0")]
291        pub st_blksize: i32,
292        #[stable(feature = "raw_ext", since = "1.1.0")]
293        pub __pad2: c_int,
294        #[stable(feature = "raw_ext", since = "1.1.0")]
295        pub st_blocks: i64,
296        #[stable(feature = "raw_ext", since = "1.1.0")]
297        pub st_atime: time_t,
298        #[stable(feature = "raw_ext", since = "1.1.0")]
299        pub st_atime_nsec: c_long,
300        #[stable(feature = "raw_ext", since = "1.1.0")]
301        pub st_mtime: time_t,
302        #[stable(feature = "raw_ext", since = "1.1.0")]
303        pub st_mtime_nsec: c_long,
304        #[stable(feature = "raw_ext", since = "1.1.0")]
305        pub st_ctime: time_t,
306        #[stable(feature = "raw_ext", since = "1.1.0")]
307        pub st_ctime_nsec: c_long,
308        #[stable(feature = "raw_ext", since = "1.1.0")]
309        pub __unused: [c_int; 2],
310    }
311}
312
313#[cfg(any(target_arch = "x86_64", target_arch = "powerpc64"))]
314mod arch {
315    use crate::os::raw::{c_int, c_long};
316
317    #[stable(feature = "raw_ext", since = "1.1.0")]
318    pub type blkcnt_t = u64;
319    #[stable(feature = "raw_ext", since = "1.1.0")]
320    pub type blksize_t = u64;
321    #[stable(feature = "raw_ext", since = "1.1.0")]
322    pub type ino_t = u64;
323    #[stable(feature = "raw_ext", since = "1.1.0")]
324    pub type nlink_t = u64;
325    #[stable(feature = "raw_ext", since = "1.1.0")]
326    pub type off_t = u64;
327    #[stable(feature = "raw_ext", since = "1.1.0")]
328    pub type time_t = i64;
329
330    #[repr(C)]
331    #[derive(Clone)]
332    #[stable(feature = "raw_ext", since = "1.1.0")]
333    pub struct stat {
334        #[stable(feature = "raw_ext", since = "1.1.0")]
335        pub st_dev: u64,
336        #[stable(feature = "raw_ext", since = "1.1.0")]
337        pub st_ino: u64,
338        #[stable(feature = "raw_ext", since = "1.1.0")]
339        pub st_nlink: u64,
340        #[stable(feature = "raw_ext", since = "1.1.0")]
341        pub st_mode: u32,
342        #[stable(feature = "raw_ext", since = "1.1.0")]
343        pub st_uid: u32,
344        #[stable(feature = "raw_ext", since = "1.1.0")]
345        pub st_gid: u32,
346        #[stable(feature = "raw_ext", since = "1.1.0")]
347        pub __pad0: c_int,
348        #[stable(feature = "raw_ext", since = "1.1.0")]
349        pub st_rdev: u64,
350        #[stable(feature = "raw_ext", since = "1.1.0")]
351        pub st_size: i64,
352        #[stable(feature = "raw_ext", since = "1.1.0")]
353        pub st_blksize: i64,
354        #[stable(feature = "raw_ext", since = "1.1.0")]
355        pub st_blocks: i64,
356        #[stable(feature = "raw_ext", since = "1.1.0")]
357        pub st_atime: i64,
358        #[stable(feature = "raw_ext", since = "1.1.0")]
359        pub st_atime_nsec: c_long,
360        #[stable(feature = "raw_ext", since = "1.1.0")]
361        pub st_mtime: i64,
362        #[stable(feature = "raw_ext", since = "1.1.0")]
363        pub st_mtime_nsec: c_long,
364        #[stable(feature = "raw_ext", since = "1.1.0")]
365        pub st_ctime: i64,
366        #[stable(feature = "raw_ext", since = "1.1.0")]
367        pub st_ctime_nsec: c_long,
368        #[stable(feature = "raw_ext", since = "1.1.0")]
369        pub __unused: [c_long; 3],
370    }
371}