Rollup merge of #101994 - devnexen:rand_fbsd_update, r=workingjubilee

rand: freebsd update, using getrandom.

supported since the 12th release, while 11.4 is EOL since 2021.
This commit is contained in:
Matthias Krüger 2023-07-26 20:49:11 +02:00 committed by GitHub
commit 26d791b351
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -17,7 +17,6 @@ pub fn hashmap_random_keys() -> (u64, u64) {
not(target_os = "tvos"), not(target_os = "tvos"),
not(target_os = "watchos"), not(target_os = "watchos"),
not(target_os = "openbsd"), not(target_os = "openbsd"),
not(target_os = "freebsd"),
not(target_os = "netbsd"), not(target_os = "netbsd"),
not(target_os = "fuchsia"), not(target_os = "fuchsia"),
not(target_os = "redox"), not(target_os = "redox"),
@ -68,11 +67,25 @@ fn getrandom(buf: &mut [u8]) -> libc::ssize_t {
unsafe { libc::getrandom(buf.as_mut_ptr().cast(), buf.len(), 0) } 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( #[cfg(not(any(
target_os = "linux", target_os = "linux",
target_os = "android", target_os = "android",
target_os = "espidf", target_os = "espidf",
target_os = "horizon" target_os = "horizon",
target_os = "freebsd"
)))] )))]
fn getrandom_fill_bytes(_buf: &mut [u8]) -> bool { fn getrandom_fill_bytes(_buf: &mut [u8]) -> bool {
false false
@ -82,7 +95,8 @@ fn getrandom_fill_bytes(_buf: &mut [u8]) -> bool {
target_os = "linux", target_os = "linux",
target_os = "android", target_os = "android",
target_os = "espidf", target_os = "espidf",
target_os = "horizon" target_os = "horizon",
target_os = "freebsd"
))] ))]
fn getrandom_fill_bytes(v: &mut [u8]) -> bool { fn getrandom_fill_bytes(v: &mut [u8]) -> bool {
use crate::sync::atomic::{AtomicBool, Ordering}; use crate::sync::atomic::{AtomicBool, Ordering};
@ -222,7 +236,7 @@ pub fn fill_bytes(v: &mut [u8]) {
} }
} }
#[cfg(any(target_os = "freebsd", target_os = "netbsd"))] #[cfg(target_os = "netbsd")]
mod imp { mod imp {
use crate::ptr; use crate::ptr;