xref: /aosp_15_r20/external/cronet/third_party/rust/chromium_crates_io/vendor/getrandom-0.2.14/src/macos.rs (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 //! Implementation for macOS
2 use crate::{util_libc::last_os_error, Error};
3 use core::mem::MaybeUninit;
4 
5 extern "C" {
6     // Supported as of macOS 10.12+.
getentropy(buf: *mut u8, size: libc::size_t) -> libc::c_int7     fn getentropy(buf: *mut u8, size: libc::size_t) -> libc::c_int;
8 }
9 
getrandom_inner(dest: &mut [MaybeUninit<u8>]) -> Result<(), Error>10 pub fn getrandom_inner(dest: &mut [MaybeUninit<u8>]) -> Result<(), Error> {
11     for chunk in dest.chunks_mut(256) {
12         let ret = unsafe { getentropy(chunk.as_mut_ptr() as *mut u8, chunk.len()) };
13         if ret != 0 {
14             return Err(last_os_error());
15         }
16     }
17     Ok(())
18 }
19