mirror of
https://github.com/golang/go
synced 2024-11-26 01:57:56 -07:00
runtime: use pipe2 syscall for Pipe in tests
On FreeBSD >= 11 with a kernel built with COMPAT_FREEBSD11 but not COMPAT_FREEBSD10, the pipe syscall is not available. Thus, tests using runtime.pipe fail with ENOSYS. As suggested by Ian, fix this by calling pipe2(0) in these tests and fall back to pipe() in case of ENOSYS. Fixes #42659 Change-Id: Ifbb8008884b7901fe87830d162ad326122c5fab9 Reviewed-on: https://go-review.googlesource.com/c/go/+/270917 Trust: Tobias Klauser <tobias.klauser@gmail.com> Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
parent
d3072b8383
commit
ee1b51294a
15
src/runtime/export_pipe2_test.go
Normal file
15
src/runtime/export_pipe2_test.go
Normal file
@ -0,0 +1,15 @@
|
||||
// Copyright 2020 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.
|
||||
|
||||
// +build freebsd linux netbsd openbsd solaris
|
||||
|
||||
package runtime
|
||||
|
||||
func Pipe() (r, w int32, errno int32) {
|
||||
r, w, errno = pipe2(0)
|
||||
if errno == _ENOSYS {
|
||||
return pipe()
|
||||
}
|
||||
return r, w, errno
|
||||
}
|
9
src/runtime/export_pipe_test.go
Normal file
9
src/runtime/export_pipe_test.go
Normal file
@ -0,0 +1,9 @@
|
||||
// Copyright 2020 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.
|
||||
|
||||
// +build aix darwin dragonfly
|
||||
|
||||
package runtime
|
||||
|
||||
var Pipe = pipe
|
@ -9,7 +9,6 @@ package runtime
|
||||
import "unsafe"
|
||||
|
||||
var NonblockingPipe = nonblockingPipe
|
||||
var Pipe = pipe
|
||||
var SetNonblock = setNonblock
|
||||
var Closeonexec = closeonexec
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user