github.com/sandwichdev/go-internals@v0.0.0-20210605002614-12311ac6b2c5/syscall/unix/getentropy_openbsd.go (about)

     1  // Copyright 2016 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package unix
     6  
     7  import (
     8  	"syscall"
     9  	"unsafe"
    10  )
    11  
    12  // getentropy(2)'s syscall number, from /usr/src/sys/kern/syscalls.master
    13  const entropyTrap uintptr = 7
    14  
    15  // GetEntropy calls the OpenBSD getentropy system call.
    16  func GetEntropy(p []byte) error {
    17  	_, _, errno := syscall.Syscall(entropyTrap,
    18  		uintptr(unsafe.Pointer(&p[0])),
    19  		uintptr(len(p)),
    20  		0)
    21  	if errno != 0 {
    22  		return errno
    23  	}
    24  	return nil
    25  }