diff options
| author | Valentin Popov <valentin@popov.link> | 2024-01-08 00:21:28 +0300 | 
|---|---|---|
| committer | Valentin Popov <valentin@popov.link> | 2024-01-08 00:21:28 +0300 | 
| commit | 1b6a04ca5504955c571d1c97504fb45ea0befee4 (patch) | |
| tree | 7579f518b23313e8a9748a88ab6173d5e030b227 /vendor/rustix/src/backend/libc/rand | |
| parent | 5ecd8cf2cba827454317368b68571df0d13d7842 (diff) | |
| download | fparkan-1b6a04ca5504955c571d1c97504fb45ea0befee4.tar.xz fparkan-1b6a04ca5504955c571d1c97504fb45ea0befee4.zip  | |
Initial vendor packages
Signed-off-by: Valentin Popov <valentin@popov.link>
Diffstat (limited to 'vendor/rustix/src/backend/libc/rand')
| -rw-r--r-- | vendor/rustix/src/backend/libc/rand/mod.rs | 2 | ||||
| -rw-r--r-- | vendor/rustix/src/backend/libc/rand/syscalls.rs | 18 | ||||
| -rw-r--r-- | vendor/rustix/src/backend/libc/rand/types.rs | 24 | 
3 files changed, 44 insertions, 0 deletions
diff --git a/vendor/rustix/src/backend/libc/rand/mod.rs b/vendor/rustix/src/backend/libc/rand/mod.rs new file mode 100644 index 0000000..1e0181a --- /dev/null +++ b/vendor/rustix/src/backend/libc/rand/mod.rs @@ -0,0 +1,2 @@ +pub(crate) mod syscalls; +pub(crate) mod types; diff --git a/vendor/rustix/src/backend/libc/rand/syscalls.rs b/vendor/rustix/src/backend/libc/rand/syscalls.rs new file mode 100644 index 0000000..3a3929e --- /dev/null +++ b/vendor/rustix/src/backend/libc/rand/syscalls.rs @@ -0,0 +1,18 @@ +//! libc syscalls supporting `rustix::rand`. + +#[cfg(linux_kernel)] +use {crate::backend::c, crate::backend::conv::ret_usize, crate::io, crate::rand::GetRandomFlags}; + +#[cfg(linux_kernel)] +pub(crate) unsafe fn getrandom( +    buf: *mut u8, +    cap: usize, +    flags: GetRandomFlags, +) -> io::Result<usize> { +    // `getrandom` wasn't supported in glibc until 2.25. +    weak_or_syscall! { +        fn getrandom(buf: *mut c::c_void, buflen: c::size_t, flags: c::c_uint) via SYS_getrandom -> c::ssize_t +    } + +    ret_usize(getrandom(buf.cast(), cap, flags.bits())) +} diff --git a/vendor/rustix/src/backend/libc/rand/types.rs b/vendor/rustix/src/backend/libc/rand/types.rs new file mode 100644 index 0000000..46690b5 --- /dev/null +++ b/vendor/rustix/src/backend/libc/rand/types.rs @@ -0,0 +1,24 @@ +#[cfg(linux_kernel)] +use crate::backend::c; +#[cfg(linux_kernel)] +use bitflags::bitflags; + +#[cfg(linux_kernel)] +bitflags! { +    /// `GRND_*` flags for use with [`getrandom`]. +    /// +    /// [`getrandom`]: crate::rand::getrandom +    #[repr(transparent)] +    #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] +    pub struct GetRandomFlags: u32 { +        /// `GRND_RANDOM` +        const RANDOM = c::GRND_RANDOM; +        /// `GRND_NONBLOCK` +        const NONBLOCK = c::GRND_NONBLOCK; +        /// `GRND_INSECURE` +        const INSECURE = c::GRND_INSECURE; + +        /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags> +        const _ = !0; +    } +}  | 
