summaryrefslogtreecommitdiff
path: root/src/pkg/syscall/syscall_darwin.go
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2009-11-01 11:13:27 -0800
committerRuss Cox <rsc@golang.org>2009-11-01 11:13:27 -0800
commite553412f7d28715525607dcd86f48723bc28423b (patch)
tree865762db2f724d6fdba1bb99fd65b02ca56edd8b /src/pkg/syscall/syscall_darwin.go
parent70e1eeffd9a4848d9c31ce9945226cafd9273c60 (diff)
downloadgolang-e553412f7d28715525607dcd86f48723bc28423b.tar.gz
syscall cleanup.
* rename PORT.sh -> mkall.sh (hopefully more obvious), change behavior: run commands by default. * pull more constants out of #defines automatically, instead of editing large lists by hand. * add Recvfrom, Sendto add os.O_EXCL. R=r http://go/go-review/1017009
Diffstat (limited to 'src/pkg/syscall/syscall_darwin.go')
-rw-r--r--src/pkg/syscall/syscall_darwin.go28
1 files changed, 26 insertions, 2 deletions
diff --git a/src/pkg/syscall/syscall_darwin.go b/src/pkg/syscall/syscall_darwin.go
index b19d42782..07f12482b 100644
--- a/src/pkg/syscall/syscall_darwin.go
+++ b/src/pkg/syscall/syscall_darwin.go
@@ -138,6 +138,7 @@ func (w WaitStatus) TrapCause() int {
}
//sys wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, errno int)
+
func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, errno int) {
var status _C_int;
wpid, errno = wait4(pid, &status, options, rusage);
@@ -148,6 +149,7 @@ func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int,
}
//sys pipe() (r int, w int, errno int)
+
func Pipe(p []int) (errno int) {
if len(p) != 2 {
return EINVAL;
@@ -351,7 +353,31 @@ func SetsockoptLinger(fd, level, opt int, l *Linger) (errno int) {
return setsockopt(fd, level, opt, uintptr(unsafe.Pointer(l)), unsafe.Sizeof(*l));
}
+
+//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, errno int)
+
+func Recvfrom(fd int, p []byte, flags int) (n int, from Sockaddr, errno int) {
+ var rsa RawSockaddrAny;
+ var len _Socklen = SizeofSockaddrAny;
+ if n, errno = recvfrom(fd, p, flags, &rsa, &len); errno != 0 {
+ return;
+ }
+ from, errno = anyToSockaddr(&rsa);
+ return;
+}
+
+//sys sendto(s int, buf []byte, flags int, to uintptr, addrlen _Socklen) (errno int)
+
+func Sendto(fd int, p []byte, flags int, to Sockaddr) (errno int) {
+ ptr, n, err := to.sockaddr();
+ if err != 0 {
+ return err;
+ }
+ return sendto(fd, p, flags, ptr, n);
+}
+
//sys kevent(kq int, change uintptr, nchange int, event uintptr, nevent int, timeout *Timespec) (n int, errno int)
+
func Kevent(kq int, changes, events []Kevent_t, timeout *Timespec) (n int, errno int) {
var change, event uintptr;
if len(changes) > 0 {
@@ -449,10 +475,8 @@ func SysctlUint32(name string) (value uint32, errno int) {
// Msync(addr *byte, len int, flags int) (errno int)
// Munmap(addr *byte, len int) (errno int)
// Ptrace(req int, pid int, addr uintptr, data int) (ret uintptr, errno int)
-// Recvfrom(s int, buf *byte, nbuf int, flags int, from *Sockaddr, fromlen *int) (n int, errno int)
// Recvmsg(s int, msg *Msghdr, flags int) (n int, errno int)
// Sendmsg(s int, msg *Msghdr, flags int) (n int, errno int)
-// Sendto(s int, buf *byte, nbuf int, flags int, to *Sockaddr, addrlen int) (errno int)
// Utimes(path string, timeval *Timeval) (errno int) // Pointer to 2 timevals!
//sys fcntl(fd int, cmd int, arg int) (val int, errno int)