aboutsummaryrefslogtreecommitdiff
path: root/src/internal/syscall/getrandom_linux.go
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@golang.org>2015-04-15 16:28:00 -0700
committerIan Lance Taylor <iant@golang.org>2015-04-15 23:51:36 +0000
commit6e83ef6d2149d1dd9333a2ff955a0dfdb5475bb5 (patch)
tree2f0ab6191d3520c4dd4f6a199984eb23c1f076e4 /src/internal/syscall/getrandom_linux.go
parent07f00cf11e208510fd83b8d7328a52f9c1c97eee (diff)
downloadgo-6e83ef6d2149d1dd9333a2ff955a0dfdb5475bb5.tar.xz
internal/syscall: move to unix subdirectory
Move the single file from internal/syscall to internal/syscall/unix, to match the golang.org/x/sys layout. Change-Id: I2fb2832b4cb22efc7666bd276f5401ac3e73dc40 Reviewed-on: https://go-review.googlesource.com/8972 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Rob Pike <r@golang.org>
Diffstat (limited to 'src/internal/syscall/getrandom_linux.go')
-rw-r--r--src/internal/syscall/getrandom_linux.go58
1 files changed, 0 insertions, 58 deletions
diff --git a/src/internal/syscall/getrandom_linux.go b/src/internal/syscall/getrandom_linux.go
deleted file mode 100644
index 36d5a1ccb0..0000000000
--- a/src/internal/syscall/getrandom_linux.go
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2014 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package syscall
-
-import (
- "runtime"
- "sync/atomic"
- stdsyscall "syscall"
- "unsafe"
-)
-
-var randomTrap = map[string]uintptr{
- "386": 355,
- "amd64": 318,
- "arm": 384,
- "ppc64": 359,
- "ppc64le": 359,
-}[runtime.GOARCH]
-
-var randomUnsupported int32 // atomic
-
-// GetRandomFlag is a flag supported by the getrandom system call.
-type GetRandomFlag uintptr
-
-const (
- // GRND_NONBLOCK means return EAGAIN rather than blocking.
- GRND_NONBLOCK GetRandomFlag = 0x0001
-
- // GRND_RANDOM means use the /dev/random pool instead of /dev/urandom.
- GRND_RANDOM GetRandomFlag = 0x0002
-)
-
-// GetRandom calls the Linux getrandom system call.
-// See https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=c6e9d6f38894798696f23c8084ca7edbf16ee895
-func GetRandom(p []byte, flags GetRandomFlag) (n int, err error) {
- if randomTrap == 0 {
- return 0, stdsyscall.ENOSYS
- }
- if len(p) == 0 {
- return 0, nil
- }
- if atomic.LoadInt32(&randomUnsupported) != 0 {
- return 0, stdsyscall.ENOSYS
- }
- r1, _, errno := stdsyscall.Syscall(randomTrap,
- uintptr(unsafe.Pointer(&p[0])),
- uintptr(len(p)),
- uintptr(flags))
- if errno != 0 {
- if errno == stdsyscall.ENOSYS {
- atomic.StoreInt32(&randomUnsupported, 1)
- }
- return 0, errno
- }
- return int(r1), nil
-}