From 1b6a04ca5504955c571d1c97504fb45ea0befee4 Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Mon, 8 Jan 2024 01:21:28 +0400 Subject: Initial vendor packages Signed-off-by: Valentin Popov --- vendor/rustix/src/param/auxv.rs | 87 +++++++++++++++++++++++++++++++++++++++++ vendor/rustix/src/param/init.rs | 23 +++++++++++ vendor/rustix/src/param/mod.rs | 14 +++++++ 3 files changed, 124 insertions(+) create mode 100644 vendor/rustix/src/param/auxv.rs create mode 100644 vendor/rustix/src/param/init.rs create mode 100644 vendor/rustix/src/param/mod.rs (limited to 'vendor/rustix/src/param') diff --git a/vendor/rustix/src/param/auxv.rs b/vendor/rustix/src/param/auxv.rs new file mode 100644 index 0000000..19f93dc --- /dev/null +++ b/vendor/rustix/src/param/auxv.rs @@ -0,0 +1,87 @@ +use crate::backend; +#[cfg(any( + linux_raw, + any( + all(target_os = "android", target_pointer_width = "64"), + target_os = "linux", + ) +))] +use crate::ffi::CStr; + +/// `sysconf(_SC_PAGESIZE)`—Returns the process' page size. +/// +/// Also known as `getpagesize`. +/// +/// # References +/// - [POSIX] +/// - [Linux `sysconf`] +/// - [Linux `getpagesize`] +/// +/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/sysconf.html +/// [Linux `sysconf`]: https://man7.org/linux/man-pages/man3/sysconf.3.html +/// [Linux `getpagesize`]: https://man7.org/linux/man-pages/man2/getpagesize.2.html +#[inline] +#[doc(alias = "_SC_PAGESIZE")] +#[doc(alias = "_SC_PAGE_SIZE")] +#[doc(alias = "getpagesize")] +pub fn page_size() -> usize { + backend::param::auxv::page_size() +} + +/// `sysconf(_SC_CLK_TCK)`—Returns the process' clock ticks per second. +/// +/// # References +/// - [POSIX] +/// - [Linux] +/// +/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/sysconf.html +/// [Linux]: https://man7.org/linux/man-pages/man3/sysconf.3.html +#[cfg(not(any(target_os = "vita", target_os = "wasi")))] +#[inline] +#[doc(alias = "_SC_CLK_TCK")] +pub fn clock_ticks_per_second() -> u64 { + backend::param::auxv::clock_ticks_per_second() +} + +/// `(getauxval(AT_HWCAP), getauxval(AT_HWCAP2)`—Returns the Linux "hwcap" +/// data. +/// +/// Return the Linux `AT_HWCAP` and `AT_HWCAP2` values passed to the +/// current process. Returns 0 for each value if it is not available. +/// +/// # References +/// - [Linux] +/// +/// [Linux]: https://man7.org/linux/man-pages/man3/getauxval.3.html +#[cfg(any( + linux_raw, + any( + all(target_os = "android", target_pointer_width = "64"), + target_os = "linux", + ) +))] +#[inline] +pub fn linux_hwcap() -> (usize, usize) { + backend::param::auxv::linux_hwcap() +} + +/// `getauxval(AT_EXECFN)`—Returns the Linux "execfn" string. +/// +/// Return the string that Linux has recorded as the filesystem path to the +/// executable. Returns an empty string if the string is not available. +/// +/// # References +/// - [Linux] +/// +/// [Linux]: https://man7.org/linux/man-pages/man3/getauxval.3.html +#[cfg(any( + linux_raw, + any( + all(target_os = "android", target_pointer_width = "64"), + target_os = "linux", + ) +))] +#[inline] +pub fn linux_execfn() -> &'static CStr { + backend::param::auxv::linux_execfn() +} diff --git a/vendor/rustix/src/param/init.rs b/vendor/rustix/src/param/init.rs new file mode 100644 index 0000000..09d7c96 --- /dev/null +++ b/vendor/rustix/src/param/init.rs @@ -0,0 +1,23 @@ +//! rustix's `init` function. +//! +//! # Safety +//! +//! When "use-explicitly-provided-auxv" is enabled, the `init` function must be +//! called before any other function in this module. It is unsafe because it +//! operates on raw pointers. +#![allow(unsafe_code)] + +use crate::backend; + +/// Initialize process-wide state. +/// +/// # Safety +/// +/// This must be passed a pointer to the original environment variable block +/// set up by the OS at process startup, and it must be called before any +/// other rustix functions are called. +#[inline] +#[doc(hidden)] +pub unsafe fn init(envp: *mut *mut u8) { + backend::param::auxv::init(envp) +} diff --git a/vendor/rustix/src/param/mod.rs b/vendor/rustix/src/param/mod.rs new file mode 100644 index 0000000..f0de9d4 --- /dev/null +++ b/vendor/rustix/src/param/mod.rs @@ -0,0 +1,14 @@ +//! Process parameters. +//! +//! These values correspond to `sysconf` in POSIX, and the auxv array in Linux. +//! Despite the POSIX name “sysconf”, these aren't *system* configuration +//! parameters; they're *process* configuration parameters, as they may differ +//! between different processes on the same system. + +mod auxv; +#[cfg(all(feature = "use-explicitly-provided-auxv", not(libc)))] +mod init; + +pub use auxv::*; +#[cfg(all(feature = "use-explicitly-provided-auxv", not(libc)))] +pub use init::init; -- cgit v1.2.3