diff options
Diffstat (limited to 'libgo/go/internal/syscall/unix/getrandom_freebsd.go')
-rw-r--r-- | libgo/go/internal/syscall/unix/getrandom_freebsd.go | 34 |
1 files changed, 1 insertions, 33 deletions
diff --git a/libgo/go/internal/syscall/unix/getrandom_freebsd.go b/libgo/go/internal/syscall/unix/getrandom_freebsd.go index f1ba5730c96..8c4f3dff823 100644 --- a/libgo/go/internal/syscall/unix/getrandom_freebsd.go +++ b/libgo/go/internal/syscall/unix/getrandom_freebsd.go @@ -4,19 +4,8 @@ package unix -import ( - "sync/atomic" - "syscall" - "unsafe" -) - -var randomUnsupported int32 // atomic - // FreeBSD getrandom system call number. -const randomTrap uintptr = 563 - -// GetRandomFlag is a flag supported by the getrandom system call. -type GetRandomFlag uintptr +const getrandomTrap uintptr = 563 const ( // GRND_NONBLOCK means return EAGAIN rather than blocking. @@ -25,24 +14,3 @@ const ( // GRND_RANDOM is only set for portability purpose, no-op on FreeBSD. GRND_RANDOM GetRandomFlag = 0x0002 ) - -// GetRandom calls the FreeBSD getrandom system call. -func GetRandom(p []byte, flags GetRandomFlag) (n int, err error) { - if len(p) == 0 { - return 0, nil - } - if atomic.LoadInt32(&randomUnsupported) != 0 { - return 0, syscall.ENOSYS - } - r1, _, errno := syscall.Syscall(randomTrap, - uintptr(unsafe.Pointer(&p[0])), - uintptr(len(p)), - uintptr(flags)) - if errno != 0 { - if errno == syscall.ENOSYS { - atomic.StoreInt32(&randomUnsupported, 1) - } - return 0, errno - } - return int(r1), nil -} |