From 6e83ef6d2149d1dd9333a2ff955a0dfdb5475bb5 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Wed, 15 Apr 2015 16:28:00 -0700 Subject: 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 Reviewed-by: Rob Pike --- src/internal/syscall/getrandom_linux.go | 58 ---------------------------- src/internal/syscall/unix/getrandom_linux.go | 58 ++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 58 deletions(-) delete mode 100644 src/internal/syscall/getrandom_linux.go create mode 100644 src/internal/syscall/unix/getrandom_linux.go (limited to 'src/internal') 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 -} diff --git a/src/internal/syscall/unix/getrandom_linux.go b/src/internal/syscall/unix/getrandom_linux.go new file mode 100644 index 0000000000..7388271ef1 --- /dev/null +++ b/src/internal/syscall/unix/getrandom_linux.go @@ -0,0 +1,58 @@ +// 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 unix + +import ( + "runtime" + "sync/atomic" + "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, syscall.ENOSYS + } + 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 +} -- cgit v1.3-5-g45d5