package unix
import (
)
func ( []byte, uint32) ( int, bool)
var getrandomUnsupported atomic.Bool
type GetRandomFlag uintptr
func ( []byte, GetRandomFlag) ( int, error) {
, := vgetrandom(, uint32())
if {
if < 0 {
return 0, syscall.Errno(-)
}
return , nil
}
if getrandomUnsupported.Load() {
return 0, syscall.ENOSYS
}
, , := syscall.Syscall(getrandomTrap,
uintptr(unsafe.Pointer(unsafe.SliceData())),
uintptr(len()),
uintptr())
if != 0 {
if == syscall.ENOSYS {
getrandomUnsupported.Store(true)
}
return 0,
}
return int(), nil
}