diff options
| author | David CARLIER <devnexen@gmail.com> | 2022-09-18 20:23:32 +0100 |
|---|---|---|
| committer | David Carlier <devnexen@gmail.com> | 2023-03-08 19:24:17 +0000 |
| commit | a7e0bab76bf28f7fe9791a2b412f8bccb061696f (patch) | |
| tree | ab98f2c630d8aaea1ecb76e945723141faa353be /library/std/src/sys | |
| parent | 7c306f6dcd600b1fcc74439c780e8ebef338d84c (diff) | |
| download | rust-a7e0bab76bf28f7fe9791a2b412f8bccb061696f.tar.gz rust-a7e0bab76bf28f7fe9791a2b412f8bccb061696f.zip | |
rand: freebsd update, using getrandom.
supported since the 12th release, while 11.4 is EOL since 2021.
Diffstat (limited to 'library/std/src/sys')
| -rw-r--r-- | library/std/src/sys/unix/rand.rs | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/library/std/src/sys/unix/rand.rs b/library/std/src/sys/unix/rand.rs index a6fe07873d7..e846f885044 100644 --- a/library/std/src/sys/unix/rand.rs +++ b/library/std/src/sys/unix/rand.rs @@ -16,7 +16,6 @@ pub fn hashmap_random_keys() -> (u64, u64) { not(target_os = "ios"), not(target_os = "watchos"), not(target_os = "openbsd"), - not(target_os = "freebsd"), not(target_os = "netbsd"), not(target_os = "fuchsia"), not(target_os = "redox"), @@ -65,11 +64,25 @@ mod imp { unsafe { libc::getrandom(buf.as_mut_ptr().cast(), buf.len(), 0) } } + #[cfg(target_os = "freebsd")] + fn getrandom(buf: &mut [u8]) -> libc::ssize_t { + // FIXME: using the above when libary std's libc is updated + extern "C" { + fn getrandom( + buffer: *mut libc::c_void, + length: libc::size_t, + flags: libc::c_uint, + ) -> libc::ssize_t; + } + unsafe { getrandom(buf.as_mut_ptr().cast(), buf.len(), 0) } + } + #[cfg(not(any( target_os = "linux", target_os = "android", target_os = "espidf", - target_os = "horizon" + target_os = "horizon", + target_os = "freebsd" )))] fn getrandom_fill_bytes(_buf: &mut [u8]) -> bool { false @@ -79,7 +92,8 @@ mod imp { target_os = "linux", target_os = "android", target_os = "espidf", - target_os = "horizon" + target_os = "horizon", + target_os = "freebsd" ))] fn getrandom_fill_bytes(v: &mut [u8]) -> bool { use crate::sync::atomic::{AtomicBool, Ordering}; @@ -219,7 +233,7 @@ mod imp { } } -#[cfg(any(target_os = "freebsd", target_os = "netbsd"))] +#[cfg(target_os = "netbsd")] mod imp { use crate::ptr; |
