summaryrefslogtreecommitdiff
path: root/libgo/go/internal/syscall/unix/getrandom_freebsd.go
diff options
context:
space:
mode:
Diffstat (limited to 'libgo/go/internal/syscall/unix/getrandom_freebsd.go')
-rw-r--r--libgo/go/internal/syscall/unix/getrandom_freebsd.go34
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
-}