1 use crate::backend;
2 #[cfg(any(
3 linux_raw,
4 all(
5 libc,
6 any(
7 all(target_os = "android", target_pointer_width = "64"),
8 target_os = "linux",
9 )
10 )
11 ))]
12 use crate::ffi::CStr;
13
14 /// `sysconf(_SC_PAGESIZE)`—Returns the process' page size.
15 ///
16 /// Also known as `getpagesize`.
17 ///
18 /// # References
19 /// - [POSIX]
20 /// - [Linux `sysconf`]
21 /// - [Linux `getpagesize`]
22 ///
23 /// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/sysconf.html
24 /// [Linux `sysconf`]: https://man7.org/linux/man-pages/man3/sysconf.3.html
25 /// [Linux `getpagesize`]: https://man7.org/linux/man-pages/man2/getpagesize.2.html
26 #[inline]
27 #[doc(alias = "_SC_PAGESIZE")]
28 #[doc(alias = "_SC_PAGE_SIZE")]
29 #[doc(alias = "getpagesize")]
page_size() -> usize30 pub fn page_size() -> usize {
31 backend::param::auxv::page_size()
32 }
33
34 /// `sysconf(_SC_CLK_TCK)`—Returns the process' clock ticks per second.
35 ///
36 /// # References
37 /// - [POSIX]
38 /// - [Linux]
39 ///
40 /// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/sysconf.html
41 /// [Linux]: https://man7.org/linux/man-pages/man3/sysconf.3.html
42 #[cfg(not(target_os = "wasi"))]
43 #[inline]
44 #[doc(alias = "_SC_CLK_TCK")]
clock_ticks_per_second() -> u6445 pub fn clock_ticks_per_second() -> u64 {
46 backend::param::auxv::clock_ticks_per_second()
47 }
48
49 /// `(getauxval(AT_HWCAP), getauxval(AT_HWCAP2)`—Returns the Linux "hwcap"
50 /// data.
51 ///
52 /// Return the Linux `AT_HWCAP` and `AT_HWCAP2` values passed to the
53 /// current process. Returns 0 for each value if it is not available.
54 ///
55 /// # References
56 /// - [Linux]
57 ///
58 /// [Linux]: https://man7.org/linux/man-pages/man3/getauxval.3.html
59 #[cfg(any(
60 linux_raw,
61 all(
62 libc,
63 any(
64 all(target_os = "android", target_pointer_width = "64"),
65 target_os = "linux",
66 )
67 )
68 ))]
69 #[inline]
linux_hwcap() -> (usize, usize)70 pub fn linux_hwcap() -> (usize, usize) {
71 backend::param::auxv::linux_hwcap()
72 }
73
74 /// `getauxval(AT_EXECFN)`—Returns the Linux "execfn" string.
75 ///
76 /// Return the string that Linux has recorded as the filesystem path to the
77 /// executable. Returns an empty string if the string is not available.
78 ///
79 /// # References
80 /// - [Linux]
81 ///
82 /// [Linux]: https://man7.org/linux/man-pages/man3/getauxval.3.html
83 #[cfg(any(
84 linux_raw,
85 all(
86 libc,
87 any(
88 all(target_os = "android", target_pointer_width = "64"),
89 target_os = "linux",
90 )
91 )
92 ))]
93 #[inline]
linux_execfn() -> &'static CStr94 pub fn linux_execfn() -> &'static CStr {
95 backend::param::auxv::linux_execfn()
96 }
97