diff options
| author | Ian Lance Taylor <iant@golang.org> | 2019-03-04 18:28:51 -0800 |
|---|---|---|
| committer | Ian Lance Taylor <iant@golang.org> | 2019-03-05 02:49:10 +0000 |
| commit | ab0c9510a988027f305d213213ed2eaaabbffe77 (patch) | |
| tree | 049c322f02b116946b03ab574a45a697d492c2bd /src/syscall/syscall_linux_arm.go | |
| parent | 4e20d999ec4cc9c6ff8e3d01e79c26a8ba775b7b (diff) | |
| download | go-ab0c9510a988027f305d213213ed2eaaabbffe77.tar.xz | |
syscall: on ARM GNU/Linux let Pipe fall back to pipe
Android O seems to require Pipe to call the pipe2 system call.
But kernel version 2.6.23 only supports pipe, not pipe2.
So try pipe2 first, then fall back to pipe.
Fixes #30549
Change-Id: I3c5d86e8e945a5ec8a0ecea7853302952c0476c4
Reviewed-on: https://go-review.googlesource.com/c/go/+/165217
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Diffstat (limited to 'src/syscall/syscall_linux_arm.go')
| -rw-r--r-- | src/syscall/syscall_linux_arm.go | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/syscall/syscall_linux_arm.go b/src/syscall/syscall_linux_arm.go index 65543193e1..a7acd08033 100644 --- a/src/syscall/syscall_linux_arm.go +++ b/src/syscall/syscall_linux_arm.go @@ -19,12 +19,18 @@ func setTimeval(sec, usec int64) Timeval { return Timeval{Sec: int32(sec), Usec: int32(usec)} } +//sysnb pipe(p *[2]_C_int) (err error) + func Pipe(p []int) (err error) { if len(p) != 2 { return EINVAL } var pp [2]_C_int + // Try pipe2 first for Android O, then try pipe for kernel 2.6.23. err = pipe2(&pp, 0) + if err == ENOSYS { + err = pipe(&pp) + } p[0] = int(pp[0]) p[1] = int(pp[1]) return |
