5f08e609c0
Signed-off-by: Derek McGowan <derek@mcgstyle.net> (github: dmcgowan)
37 lines
708 B
Go
37 lines
708 B
Go
package sysx
|
|
|
|
import (
|
|
"syscall"
|
|
"unsafe"
|
|
)
|
|
|
|
var _zero uintptr
|
|
|
|
// use is a no-op, but the compiler cannot see that it is.
|
|
// Calling use(p) ensures that p is kept live until that point.
|
|
//go:noescape
|
|
func use(p unsafe.Pointer)
|
|
|
|
// Do the interface allocations only once for common
|
|
// Errno values.
|
|
var (
|
|
errEAGAIN error = syscall.EAGAIN
|
|
errEINVAL error = syscall.EINVAL
|
|
errENOENT error = syscall.ENOENT
|
|
)
|
|
|
|
// errnoErr returns common boxed Errno values, to prevent
|
|
// allocations at runtime.
|
|
func errnoErr(e syscall.Errno) error {
|
|
switch e {
|
|
case 0:
|
|
return nil
|
|
case syscall.EAGAIN:
|
|
return errEAGAIN
|
|
case syscall.EINVAL:
|
|
return errEINVAL
|
|
case syscall.ENOENT:
|
|
return errENOENT
|
|
}
|
|
return e
|
|
}
|