]> Cypherpunks repositories - gostls13.git/commitdiff
syscall: fix TestForeground for AIX
authorClément Chigot <clement.chigot@atos.net>
Thu, 25 Oct 2018 09:32:35 +0000 (11:32 +0200)
committerBrad Fitzpatrick <bradfitz@golang.org>
Thu, 25 Oct 2018 16:03:56 +0000 (16:03 +0000)
On AIX, sys.Pgid must be a int32 and not a int64 as on Solaris for ioctl
syscall.
Pid_t type can be used to provide the same code in both OS. But pid_t
must be added to ztypes_solaris_amd64.go.

Change-Id: I1dbe57f099f9e5ac9491aaf246a521137eea5014
Reviewed-on: https://go-review.googlesource.com/c/144539
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/syscall/exec_libc.go
src/syscall/syscall_aix.go
src/syscall/types_aix.go
src/syscall/types_solaris.go
src/syscall/zsyscall_aix_ppc64.go
src/syscall/ztypes_aix_ppc64.go
src/syscall/ztypes_solaris_amd64.go

index d6d34c04c36dd04c4cb4f1d383613d806fe3cbc7..0133139000b69b1cbdf382f366625809ad267e79 100644 (file)
@@ -124,14 +124,14 @@ func forkAndExecInChild(argv0 *byte, argv, envv []*byte, chroot, dir *byte, attr
        }
 
        if sys.Foreground {
-               pgrp := sys.Pgid
+               pgrp := _Pid_t(sys.Pgid)
                if pgrp == 0 {
                        r1, err1 = getpid()
                        if err1 != 0 {
                                goto childerror
                        }
 
-                       pgrp = int(r1)
+                       pgrp = _Pid_t(r1)
                }
 
                // Place process group in foreground.
index bddc590c3406ff669c01c0b6587ec0beb2574251..6512761c3381a62d222f26fe05a8564b12e54830 100644 (file)
@@ -184,15 +184,15 @@ func ReadDirent(fd int, buf []byte) (n int, err error) {
        return getdirent(fd, buf)
 }
 
-//sys  wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error)
+//sys  wait4(pid _Pid_t, status *_C_int, options int, rusage *Rusage) (wpid _Pid_t, err error)
 func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {
        var status _C_int
-       var r Pid_t
+       var r _Pid_t
        err = ERESTART
        // AIX wait4 may return with ERESTART errno, while the processus is still
        // active.
        for err == ERESTART {
-               r, err = wait4(Pid_t(pid), &status, options, rusage)
+               r, err = wait4(_Pid_t(pid), &status, options, rusage)
        }
        wpid = int(r)
        if wstatus != nil {
index f9f05af6673bb3d9586e0d68fec7d6247d7c1b15..b961bdb197eaac372e7e7cda6a504d0b1ddbec58 100644 (file)
@@ -86,7 +86,7 @@ type Rusage C.struct_rusage
 
 type Rlimit C.struct_rlimit
 
-type Pid_t C.pid_t
+type _Pid_t C.pid_t
 
 type _Gid_t C.gid_t
 
index a9e6d6bdd63b7fd51271606ff6f1b2780dd8b1a3..76a74508d2b4edaa1623991d378f06e70667181d 100644 (file)
@@ -101,6 +101,8 @@ type Rusage C.struct_rusage
 
 type Rlimit C.struct_rlimit
 
+type _Pid_t C.pid_t
+
 type _Gid_t C.gid_t
 
 // Files
index 3ea11f8af3f17cbb920c63c14b2f96b18e6aedaf..fe27dcadf2802345aaaad097f4b37f795c6c0ea2 100644 (file)
@@ -420,9 +420,9 @@ func getdirent(fd int, buf []byte) (n int, err error) {
 
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 
-func wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) {
+func wait4(pid _Pid_t, status *_C_int, options int, rusage *Rusage) (wpid _Pid_t, err error) {
        r0, _, e1 := syscall6(uintptr(unsafe.Pointer(&libc_wait4)), 4, uintptr(pid), uintptr(unsafe.Pointer(status)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
-       wpid = Pid_t(r0)
+       wpid = _Pid_t(r0)
        if e1 != 0 {
                err = errnoErr(e1)
        }
index 4fbbe23134663965dc43ee9364ae58a7f78fa1b2..314266ea797768e6ca9b3d39b1cb67208ce808b4 100644 (file)
@@ -64,7 +64,7 @@ type Rlimit struct {
        Max uint64
 }
 
-type Pid_t int32
+type _Pid_t int32
 
 type _Gid_t uint32
 
index b892cd6612ff0c7e3ec9a4e7cbb7b49212ef2464..f846666fff2cb1e6d5e0f6ade3d019d69303b8c9 100644 (file)
@@ -60,6 +60,8 @@ type Rlimit struct {
        Max uint64
 }
 
+type _Pid_t int32
+
 type _Gid_t uint32
 
 const (