aboutsummaryrefslogtreecommitdiff
path: root/vendor/rustix/src/backend/linux_raw/rand
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/rustix/src/backend/linux_raw/rand')
-rw-r--r--vendor/rustix/src/backend/linux_raw/rand/mod.rs2
-rw-r--r--vendor/rustix/src/backend/linux_raw/rand/syscalls.rs19
-rw-r--r--vendor/rustix/src/backend/linux_raw/rand/types.rs20
3 files changed, 41 insertions, 0 deletions
diff --git a/vendor/rustix/src/backend/linux_raw/rand/mod.rs b/vendor/rustix/src/backend/linux_raw/rand/mod.rs
new file mode 100644
index 0000000..1e0181a
--- /dev/null
+++ b/vendor/rustix/src/backend/linux_raw/rand/mod.rs
@@ -0,0 +1,2 @@
+pub(crate) mod syscalls;
+pub(crate) mod types;
diff --git a/vendor/rustix/src/backend/linux_raw/rand/syscalls.rs b/vendor/rustix/src/backend/linux_raw/rand/syscalls.rs
new file mode 100644
index 0000000..c0f497b
--- /dev/null
+++ b/vendor/rustix/src/backend/linux_raw/rand/syscalls.rs
@@ -0,0 +1,19 @@
+//! linux_raw syscalls supporting `rustix::rand`.
+//!
+//! # Safety
+//!
+//! See the `rustix::backend` module documentation for details.
+#![allow(unsafe_code, clippy::undocumented_unsafe_blocks)]
+
+use crate::backend::conv::{pass_usize, ret_usize};
+use crate::io;
+use crate::rand::GetRandomFlags;
+
+#[inline]
+pub(crate) unsafe fn getrandom(
+ buf: *mut u8,
+ cap: usize,
+ flags: GetRandomFlags,
+) -> io::Result<usize> {
+ ret_usize(syscall!(__NR_getrandom, buf, pass_usize(cap), flags))
+}
diff --git a/vendor/rustix/src/backend/linux_raw/rand/types.rs b/vendor/rustix/src/backend/linux_raw/rand/types.rs
new file mode 100644
index 0000000..9bc857f
--- /dev/null
+++ b/vendor/rustix/src/backend/linux_raw/rand/types.rs
@@ -0,0 +1,20 @@
+use bitflags::bitflags;
+
+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 = linux_raw_sys::general::GRND_RANDOM;
+ /// `GRND_NONBLOCK`
+ const NONBLOCK = linux_raw_sys::general::GRND_NONBLOCK;
+ /// `GRND_INSECURE`
+ const INSECURE = linux_raw_sys::general::GRND_INSECURE;
+
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
+ const _ = !0;
+ }
+}