From f84b799fce68db3cb46a8f6f819c1e56377181df Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Wed, 18 Nov 2020 20:00:28 +0100 Subject: [PATCH] unix: add Pipe2 on dragonfly The pipe2 syscall is available since DragonflyBSD 4.2, see https://www.dragonflybsd.org/release42/ Change-Id: I94631fd64ee731e416049cac5f3d15544f1337dd Reviewed-on: https://go-review.googlesource.com/c/sys/+/271177 Trust: Tobias Klauser Run-TryBot: Tobias Klauser Reviewed-by: Matt Layher TryBot-Result: Go Bot --- unix/syscall_dragonfly.go | 13 +++++++++++++ unix/zsyscall_dragonfly_amd64.go | 10 ++++++++++ 2 files changed, 23 insertions(+) diff --git a/unix/syscall_dragonfly.go b/unix/syscall_dragonfly.go index 842ab5ac..a4f2944a 100644 --- a/unix/syscall_dragonfly.go +++ b/unix/syscall_dragonfly.go @@ -105,6 +105,19 @@ func Pipe(p []int) (err error) { return } +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) error { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err := pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return err +} + //sys extpread(fd int, p []byte, flags int, offset int64) (n int, err error) func Pread(fd int, p []byte, offset int64) (n int, err error) { return extpread(fd, p, 0, offset) diff --git a/unix/zsyscall_dragonfly_amd64.go b/unix/zsyscall_dragonfly_amd64.go index aebfe511..1aaccd36 100644 --- a/unix/zsyscall_dragonfly_amd64.go +++ b/unix/zsyscall_dragonfly_amd64.go @@ -362,6 +362,16 @@ func pipe() (r int, w int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func extpread(fd int, p []byte, flags int, offset int64) (n int, err error) { var _p0 unsafe.Pointer if len(p) > 0 {