mirror of https://github.com/golang/go.git
syscall: introduce IoctlPtr for exec_unix tests
Avoid passing Go pointers as uintptr in exec_unix_test.go by introducing syscall.IoctlPtr() which accepts arg as unsafe.Pointer. For #44834 Fixes #58609 Change-Id: I6d0ded023e5f3c9989783aee7075bb88100d9ec2 Reviewed-on: https://go-review.googlesource.com/c/go/+/469675 Run-TryBot: Dmitri Goutnik <dgoutnik@gmail.com> Reviewed-by: Bryan Mills <bcmills@google.com> Reviewed-by: Ian Lance Taylor <iant@google.com> Run-TryBot: Ian Lance Taylor <iant@google.com> Auto-Submit: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gopher Robot <gobot@golang.org>
This commit is contained in:
parent
ed33ae10a0
commit
feb355c427
|
|
@ -34,4 +34,4 @@ func Getpgrp() (pgrp int) {
|
|||
return
|
||||
}
|
||||
|
||||
var Ioctl = ioctl
|
||||
var IoctlPtr = ioctlPtr
|
||||
|
|
|
|||
|
|
@ -305,3 +305,7 @@ childerror:
|
|||
exit(253)
|
||||
}
|
||||
}
|
||||
|
||||
func ioctlPtr(fd, req uintptr, arg unsafe.Pointer) (err Errno) {
|
||||
return ioctl(fd, req, uintptr(arg))
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,4 +34,4 @@ func Getpgrp() (pgrp int) {
|
|||
return
|
||||
}
|
||||
|
||||
var Ioctl = ioctl
|
||||
var IoctlPtr = ioctlPtr
|
||||
|
|
|
|||
|
|
@ -177,7 +177,7 @@ func TestForeground(t *testing.T) {
|
|||
// equivalent.
|
||||
fpgrp := int32(0)
|
||||
|
||||
errno := syscall.Ioctl(tty.Fd(), syscall.TIOCGPGRP, uintptr(unsafe.Pointer(&fpgrp)))
|
||||
errno := syscall.IoctlPtr(tty.Fd(), syscall.TIOCGPGRP, unsafe.Pointer(&fpgrp))
|
||||
if errno != 0 {
|
||||
t.Fatalf("TIOCGPGRP failed with error code: %s", errno)
|
||||
}
|
||||
|
|
@ -214,7 +214,7 @@ func TestForeground(t *testing.T) {
|
|||
|
||||
// This call fails on darwin/arm64. The failure doesn't matter, though.
|
||||
// This is just best effort.
|
||||
syscall.Ioctl(tty.Fd(), syscall.TIOCSPGRP, uintptr(unsafe.Pointer(&fpgrp)))
|
||||
syscall.IoctlPtr(tty.Fd(), syscall.TIOCSPGRP, unsafe.Pointer(&fpgrp))
|
||||
}
|
||||
|
||||
func TestForegroundSignal(t *testing.T) {
|
||||
|
|
@ -228,7 +228,7 @@ func TestForegroundSignal(t *testing.T) {
|
|||
// equivalent.
|
||||
fpgrp := int32(0)
|
||||
|
||||
errno := syscall.Ioctl(tty.Fd(), syscall.TIOCGPGRP, uintptr(unsafe.Pointer(&fpgrp)))
|
||||
errno := syscall.IoctlPtr(tty.Fd(), syscall.TIOCGPGRP, unsafe.Pointer(&fpgrp))
|
||||
if errno != 0 {
|
||||
t.Fatalf("TIOCGPGRP failed with error code: %s", errno)
|
||||
}
|
||||
|
|
@ -239,7 +239,7 @@ func TestForegroundSignal(t *testing.T) {
|
|||
|
||||
defer func() {
|
||||
signal.Ignore(syscall.SIGTTIN, syscall.SIGTTOU)
|
||||
syscall.Ioctl(tty.Fd(), syscall.TIOCSPGRP, uintptr(unsafe.Pointer(&fpgrp)))
|
||||
syscall.IoctlPtr(tty.Fd(), syscall.TIOCSPGRP, unsafe.Pointer(&fpgrp))
|
||||
signal.Reset()
|
||||
}()
|
||||
|
||||
|
|
|
|||
|
|
@ -4,8 +4,10 @@
|
|||
|
||||
package syscall
|
||||
|
||||
func Ioctl(fd, req, arg uintptr) Errno {
|
||||
err := ioctl(int(fd), int(req), int(arg))
|
||||
import "unsafe"
|
||||
|
||||
func IoctlPtr(fd, req uintptr, arg unsafe.Pointer) Errno {
|
||||
err := ioctlPtr(int(fd), uint(req), arg)
|
||||
if err != nil {
|
||||
return err.(Errno)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,9 @@
|
|||
|
||||
package syscall
|
||||
|
||||
func Ioctl(fd, req, arg uintptr) (err Errno) {
|
||||
_, _, err = Syscall(SYS_IOCTL, fd, req, arg)
|
||||
import "unsafe"
|
||||
|
||||
func IoctlPtr(fd, req uintptr, arg unsafe.Pointer) (err Errno) {
|
||||
_, _, err = Syscall(SYS_IOCTL, fd, req, uintptr(arg))
|
||||
return err
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue