1use 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))] 12use 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")] 30pub 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")] 45pub 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] 70pub 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] 94pub fn linux_execfn() -> &'static CStr { 95 backend::param::auxv::linux_execfn() 96} 97