diff options
Diffstat (limited to 'libgo/go/syscall')
-rw-r--r-- | libgo/go/syscall/exec_bsd.go | 6 | ||||
-rw-r--r-- | libgo/go/syscall/exec_linux.go | 11 | ||||
-rw-r--r-- | libgo/go/syscall/exec_unix.go | 6 | ||||
-rw-r--r-- | libgo/go/syscall/exec_unix_test.go | 2 | ||||
-rw-r--r-- | libgo/go/syscall/libcall_bsd.go | 27 |
5 files changed, 36 insertions, 16 deletions
diff --git a/libgo/go/syscall/exec_bsd.go b/libgo/go/syscall/exec_bsd.go index f44e897f39b..9042ce263aa 100644 --- a/libgo/go/syscall/exec_bsd.go +++ b/libgo/go/syscall/exec_bsd.go @@ -102,11 +102,9 @@ 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 = raw_getpid() - - pgrp = int(r1) + pgrp = raw_getpid() } // Place process group in foreground. diff --git a/libgo/go/syscall/exec_linux.go b/libgo/go/syscall/exec_linux.go index d9600a142ae..540efb3a6d8 100644 --- a/libgo/go/syscall/exec_linux.go +++ b/libgo/go/syscall/exec_linux.go @@ -171,14 +171,9 @@ func forkAndExecInChild(argv0 *byte, argv, envv []*byte, chroot, dir *byte, attr } if sys.Foreground { - pgrp := int32(sys.Pgid) + pgrp := Pid_t(sys.Pgid) if pgrp == 0 { - r1 = uintptr(raw_getpid()) - if err1 != 0 { - goto childerror - } - - pgrp = int32(r1) + pgrp = raw_getpid() } // Place process group in foreground. @@ -236,7 +231,7 @@ func forkAndExecInChild(argv0 *byte, argv, envv []*byte, chroot, dir *byte, attr // using SIGKILL. r1 := raw_getppid() if r1 != ppid { - pid = raw_getpid() + pid := raw_getpid() err1 = raw_kill(pid, sys.Pdeathsig) if err1 != 0 { goto childerror diff --git a/libgo/go/syscall/exec_unix.go b/libgo/go/syscall/exec_unix.go index 218d78cf146..d1927de9b4b 100644 --- a/libgo/go/syscall/exec_unix.go +++ b/libgo/go/syscall/exec_unix.go @@ -17,10 +17,10 @@ import ( //sysnb raw_fork() (pid Pid_t, err Errno) //fork() Pid_t -//sysnb raw_getpid() (pid int) +//sysnb raw_getpid() (pid Pid_t) //getpid() Pid_t -//sysnb raw_getppid() (pid int) +//sysnb raw_getppid() (pid Pid_t) //getppid() Pid_t //sysnb raw_setsid() (err Errno) @@ -59,7 +59,7 @@ import ( //sysnb raw_dup2(oldfd int, newfd int) (err Errno) //dup2(oldfd _C_int, newfd _C_int) _C_int -//sysnb raw_kill(pid int, sig Signal) (err Errno) +//sysnb raw_kill(pid Pid_t, sig Signal) (err Errno) //kill(pid Pid_t, sig _C_int) _C_int //sysnb raw_setgroups(size int, list unsafe.Pointer) (err Errno) diff --git a/libgo/go/syscall/exec_unix_test.go b/libgo/go/syscall/exec_unix_test.go index 9bb95c0f395..69c4a1f1798 100644 --- a/libgo/go/syscall/exec_unix_test.go +++ b/libgo/go/syscall/exec_unix_test.go @@ -169,7 +169,7 @@ func TestForeground(t *testing.T) { t.Skipf("Can't test Foreground. Couldn't open /dev/tty: %s", err) } - fpgrp := 0 + fpgrp := syscall.Pid_t(0) errno := syscall.Ioctl(tty.Fd(), syscall.TIOCGPGRP, uintptr(unsafe.Pointer(&fpgrp))) if errno != 0 { diff --git a/libgo/go/syscall/libcall_bsd.go b/libgo/go/syscall/libcall_bsd.go new file mode 100644 index 00000000000..4501f88ad48 --- /dev/null +++ b/libgo/go/syscall/libcall_bsd.go @@ -0,0 +1,27 @@ +// Copyright 2015 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. + +// BSD library calls. + +package syscall + +import "unsafe" + +//sys sendfile(outfd int, infd int, offset *Offset_t, count int) (written int, err error) +//sendfile(outfd _C_int, infd _C_int, offset *Offset_t, count Size_t) Ssize_t +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + var soff Offset_t + var psoff *Offset_t + if offset != nil { + psoff = &soff + } + written, err = sendfile(outfd, infd, psoff, count) + if offset != nil { + *offset = int64(soff) + } + return +} |