| use crate::sys::pal::abi; |
| |
| pub fn fill_bytes(bytes: &mut [u8]) { |
| let (pre, words, post) = unsafe { bytes.align_to_mut::<u32>() }; |
| if !words.is_empty() { |
| unsafe { |
| abi::sys_rand(words.as_mut_ptr(), words.len()); |
| } |
| } |
| |
| let mut buf = [0u32; 2]; |
| let len = (pre.len() + post.len() + size_of::<u32>() - 1) / size_of::<u32>(); |
| if len != 0 { |
| unsafe { abi::sys_rand(buf.as_mut_ptr(), len) }; |
| } |
| |
| let buf = buf.map(u32::to_ne_bytes); |
| let buf = buf.as_flattened(); |
| pre.copy_from_slice(&buf[..pre.len()]); |
| post.copy_from_slice(&buf[pre.len()..pre.len() + post.len()]); |
| } |