diff options
author | Christopher Wedgwood <cw@f00f.org> | 2009-12-13 13:05:49 -0800 |
---|---|---|
committer | Christopher Wedgwood <cw@f00f.org> | 2009-12-13 13:05:49 -0800 |
commit | 1c301697c70a2ba18fabd239115789bce9f3be02 (patch) | |
tree | 2f738fb242b3e40f1031bb8c3089f88509ac0921 /src/pkg/syscall/zsyscall_linux_arm.go | |
parent | 41571e5c6b33f5a48ad748ddcbe0b65b93bccd10 (diff) | |
download | golang-1c301697c70a2ba18fabd239115789bce9f3be02.tar.gz |
syscall: fix error return bug for 64-bit return on 32-bit platform
R=dho, rsc
CC=r
http://codereview.appspot.com/176058
Committer: Russ Cox <rsc@golang.org>
Diffstat (limited to 'src/pkg/syscall/zsyscall_linux_arm.go')
-rw-r--r-- | src/pkg/syscall/zsyscall_linux_arm.go | 51 |
1 files changed, 27 insertions, 24 deletions
diff --git a/src/pkg/syscall/zsyscall_linux_arm.go b/src/pkg/syscall/zsyscall_linux_arm.go index f8cd8a70a..c221d3c48 100644 --- a/src/pkg/syscall/zsyscall_linux_arm.go +++ b/src/pkg/syscall/zsyscall_linux_arm.go @@ -453,8 +453,9 @@ func Setuid(uid int) (errno int) { } func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, errno int) { - r0, r1, _ := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)); + r0, r1, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)); n = int64(int64(r1)<<32 | int64(r0)); + errno = int(e1); return; } @@ -476,8 +477,9 @@ func Sysinfo(info *Sysinfo_t) (errno int) { } func Tee(rfd int, wfd int, len int, flags int) (n int64, errno int) { - r0, r1, _ := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0); + r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0); n = int64(int64(r1)<<32 | int64(r0)); + errno = int(e1); return; } @@ -637,6 +639,27 @@ func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (errno int) { return; } +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, errno int) { + var _p0 *byte; + if len(p) > 0 { + _p0 = &p[0] + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))); + n = int(r0); + errno = int(e1); + return; +} + +func sendto(s int, buf []byte, flags int, to uintptr, addrlen _Socklen) (errno int) { + var _p0 *byte; + if len(buf) > 0 { + _p0 = &buf[0] + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)); + errno = int(e1); + return; +} + func Chown(path string, uid int, gid int) (errno int) { _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid)); errno = int(e1); @@ -704,8 +727,9 @@ func Lstat(path string, stat *Stat_t) (errno int) { } func Seek(fd int, offset int64, whence int) (off int64, errno int) { - r0, r1, _ := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0); + r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0); off = int64(int64(r1)<<32 | int64(r0)); + errno = int(e1); return; } @@ -775,24 +799,3 @@ func Statfs(path string, buf *Statfs_t) (errno int) { errno = int(e1); return; } - -func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, errno int) { - var _p0 *byte; - if len(p) > 0 { - _p0 = &p[0] - } - r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))); - n = int(r0); - errno = int(e1); - return; -} - -func sendto(s int, buf []byte, flags int, to uintptr, addrlen _Socklen) (errno int) { - var _p0 *byte; - if len(buf) > 0 { - _p0 = &buf[0] - } - _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)); - errno = int(e1); - return; -} |