1 //! libc syscalls supporting `rustix::rand`.
2 
3 #[cfg(linux_kernel)]
4 use {crate::backend::c, crate::backend::conv::ret_usize, crate::io, crate::rand::GetRandomFlags};
5 
6 #[cfg(linux_kernel)]
getrandom( buf: *mut u8, cap: usize, flags: GetRandomFlags, ) -> io::Result<usize>7 pub(crate) unsafe fn getrandom(
8     buf: *mut u8,
9     cap: usize,
10     flags: GetRandomFlags,
11 ) -> io::Result<usize> {
12     // `getrandom` wasn't supported in glibc until 2.25.
13     weak_or_syscall! {
14         fn getrandom(buf: *mut c::c_void, buflen: c::size_t, flags: c::c_uint) via SYS_getrandom -> c::ssize_t
15     }
16 
17     ret_usize(getrandom(buf.cast(), cap, flags.bits()))
18 }
19