Skip to content

Commit

Permalink
rand: freebsd update, using getrandom.
Browse files Browse the repository at this point in the history
supported since the 12th release, while 11.4 is EOL since 2021.
  • Loading branch information
devnexen committed Mar 8, 2023
1 parent 7c306f6 commit a7e0bab
Showing 1 changed file with 18 additions and 4 deletions.
22 changes: 18 additions & 4 deletions library/std/src/sys/unix/rand.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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"),
Expand Down Expand Up @@ -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
Expand All @@ -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};
Expand Down Expand Up @@ -219,7 +233,7 @@ mod imp {
}
}

#[cfg(any(target_os = "freebsd", target_os = "netbsd"))]
#[cfg(target_os = "netbsd")]
mod imp {
use crate::ptr;

Expand Down

0 comments on commit a7e0bab

Please sign in to comment.