summaryrefslogtreecommitdiff
path: root/src/syscall
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2008-09-17 16:20:00 -0700
committerRuss Cox <rsc@golang.org>2008-09-17 16:20:00 -0700
commitaad3ab92710f884e99a8a8866107847f4e72d8c3 (patch)
tree71bfca265534c00d9e792cc70f8ecf12d7d1783d /src/syscall
parent8035ad66a5852a9f22e08ee75f0e29bb9c42f582 (diff)
downloadgo-aad3ab92710f884e99a8a8866107847f4e72d8c3.tar.gz
time & date.
rename AddrToInt, StatToInt, etc -> BytePtr, StatPtr, ... R=r OCL=15450 CL=15456
Diffstat (limited to 'src/syscall')
-rw-r--r--src/syscall/Makefile1
-rw-r--r--src/syscall/file_amd64_darwin.go18
-rw-r--r--src/syscall/file_amd64_linux.go22
-rw-r--r--src/syscall/syscall.go2
-rw-r--r--src/syscall/syscall_amd64_darwin.s4
-rw-r--r--src/syscall/syscall_amd64_linux.s11
-rw-r--r--src/syscall/time_amd64_darwin.go19
-rw-r--r--src/syscall/time_amd64_linux.go19
8 files changed, 70 insertions, 26 deletions
diff --git a/src/syscall/Makefile b/src/syscall/Makefile
index 9ae0c6a72..6c30d0c3e 100644
--- a/src/syscall/Makefile
+++ b/src/syscall/Makefile
@@ -16,6 +16,7 @@ O1=\
O2=\
file_$(GOARCH)_$(GOOS).$O \
+ time_$(GOARCH)_$(GOOS).$O \
syscall_$(GOARCH)_$(GOOS).$O \
diff --git a/src/syscall/file_amd64_darwin.go b/src/syscall/file_amd64_darwin.go
index 6bf60b927..fcf6db0a7 100644
--- a/src/syscall/file_amd64_darwin.go
+++ b/src/syscall/file_amd64_darwin.go
@@ -13,7 +13,7 @@ import syscall "syscall"
//export open, creat, close, read, write, pipe
//export unlink
-func StatToInt(s *Stat) int64;
+func StatPtr(s *Stat) int64;
type dev_t uint32;
type ino_t uint64;
@@ -73,7 +73,7 @@ export func open(name string, mode int64, perm int64) (ret int64, errno int64) {
return -1, syscall.ENAMETOOLONG
}
const SYSOPEN = 5;
- r1, r2, err := syscall.Syscall(SYSOPEN, AddrToInt(&namebuf[0]), mode, perm);
+ r1, r2, err := syscall.Syscall(SYSOPEN, BytePtr(&namebuf[0]), mode, perm);
return r1, err;
}
@@ -83,7 +83,7 @@ export func creat(name string, perm int64) (ret int64, errno int64) {
return -1, syscall.ENAMETOOLONG
}
const SYSOPEN = 5;
- r1, r2, err := syscall.Syscall(SYSOPEN, AddrToInt(&namebuf[0]), O_CREAT|O_WRONLY|O_TRUNC, perm);
+ r1, r2, err := syscall.Syscall(SYSOPEN, BytePtr(&namebuf[0]), O_CREAT|O_WRONLY|O_TRUNC, perm);
return r1, err;
}
@@ -95,13 +95,13 @@ export func close(fd int64) (ret int64, errno int64) {
export func read(fd int64, buf *byte, nbytes int64) (ret int64, errno int64) {
const SYSREAD = 3;
- r1, r2, err := syscall.Syscall(SYSREAD, fd, AddrToInt(buf), nbytes);
+ r1, r2, err := syscall.Syscall(SYSREAD, fd, BytePtr(buf), nbytes);
return r1, err;
}
export func write(fd int64, buf *byte, nbytes int64) (ret int64, errno int64) {
const SYSWRITE = 4;
- r1, r2, err := syscall.Syscall(SYSWRITE, fd, AddrToInt(buf), nbytes);
+ r1, r2, err := syscall.Syscall(SYSWRITE, fd, BytePtr(buf), nbytes);
return r1, err;
}
@@ -122,19 +122,19 @@ export func stat(name string, buf *Stat) (ret int64, errno int64) {
return -1, syscall.ENAMETOOLONG
}
const SYSSTAT = 338;
- r1, r2, err := syscall.Syscall(SYSSTAT, AddrToInt(&namebuf[0]), StatToInt(buf), 0);
+ r1, r2, err := syscall.Syscall(SYSSTAT, BytePtr(&namebuf[0]), StatPtr(buf), 0);
return r1, err;
}
export func lstat(name *byte, buf *Stat) (ret int64, errno int64) {
const SYSLSTAT = 340;
- r1, r2, err := syscall.Syscall(SYSLSTAT, AddrToInt(name), StatToInt(buf), 0);
+ r1, r2, err := syscall.Syscall(SYSLSTAT, BytePtr(name), StatPtr(buf), 0);
return r1, err;
}
export func fstat(fd int64, buf *Stat) (ret int64, errno int64) {
const SYSFSTAT = 339;
- r1, r2, err := syscall.Syscall(SYSFSTAT, fd, StatToInt(buf), 0);
+ r1, r2, err := syscall.Syscall(SYSFSTAT, fd, StatPtr(buf), 0);
return r1, err;
}
@@ -144,6 +144,6 @@ export func unlink(name string) (ret int64, errno int64) {
return -1, syscall.ENAMETOOLONG
}
const SYSUNLINK = 10;
- r1, r2, err := syscall.Syscall(SYSUNLINK, AddrToInt(&namebuf[0]), 0, 0);
+ r1, r2, err := syscall.Syscall(SYSUNLINK, BytePtr(&namebuf[0]), 0, 0);
return r1, err;
}
diff --git a/src/syscall/file_amd64_linux.go b/src/syscall/file_amd64_linux.go
index 1757bf7c7..5b5d90359 100644
--- a/src/syscall/file_amd64_linux.go
+++ b/src/syscall/file_amd64_linux.go
@@ -13,8 +13,8 @@ import syscall "syscall"
//export open, creat, close, read, write, pipe
//export unlink
-func StatToInt(s *Stat) int64;
-func Addr32ToInt(s *int32) int64;
+func StatPtr(s *Stat) int64;
+func Int32Ptr(s *int32) int64;
type dev_t uint64;
type ino_t uint64;
@@ -74,7 +74,7 @@ export func open(name string, mode int64, perm int64) (ret int64, errno int64) {
return -1, syscall.ENAMETOOLONG
}
const SYSOPEN = 2;
- r1, r2, err := syscall.Syscall(SYSOPEN, AddrToInt(&namebuf[0]), mode, perm);
+ r1, r2, err := syscall.Syscall(SYSOPEN, BytePtr(&namebuf[0]), mode, perm);
return r1, err;
}
@@ -84,7 +84,7 @@ export func creat(name string, perm int64) (ret int64, errno int64) {
return -1, syscall.ENAMETOOLONG
}
const SYSOPEN = 2;
- r1, r2, err := syscall.Syscall(SYSOPEN, AddrToInt(&namebuf[0]), O_CREAT|O_WRONLY|O_TRUNC, perm);
+ r1, r2, err := syscall.Syscall(SYSOPEN, BytePtr(&namebuf[0]), O_CREAT|O_WRONLY|O_TRUNC, perm);
return r1, err;
}
@@ -96,20 +96,20 @@ export func close(fd int64) (ret int64, errno int64) {
export func read(fd int64, buf *byte, nbytes int64) (ret int64, errno int64) {
const SYSREAD = 0;
- r1, r2, err := syscall.Syscall(SYSREAD, fd, AddrToInt(buf), nbytes);
+ r1, r2, err := syscall.Syscall(SYSREAD, fd, BytePtr(buf), nbytes);
return r1, err;
}
export func write(fd int64, buf *byte, nbytes int64) (ret int64, errno int64) {
const SYSWRITE = 1;
- r1, r2, err := syscall.Syscall(SYSWRITE, fd, AddrToInt(buf), nbytes);
+ r1, r2, err := syscall.Syscall(SYSWRITE, fd, BytePtr(buf), nbytes);
return r1, err;
}
export func pipe(fds *[2]int64) (ret int64, errno int64) {
const SYSPIPE = 22;
var t [2] int32;
- r1, r2, err := syscall.Syscall(SYSPIPE, Addr32ToInt(&t[0]), 0, 0);
+ r1, r2, err := syscall.Syscall(SYSPIPE, Int32Ptr(&t[0]), 0, 0);
if r1 < 0 {
return r1, err;
}
@@ -124,19 +124,19 @@ export func stat(name string, buf *Stat) (ret int64, errno int64) {
return -1, syscall.ENAMETOOLONG
}
const SYSSTAT = 4;
- r1, r2, err := syscall.Syscall(SYSSTAT, AddrToInt(&namebuf[0]), StatToInt(buf), 0);
+ r1, r2, err := syscall.Syscall(SYSSTAT, BytePtr(&namebuf[0]), StatPtr(buf), 0);
return r1, err;
}
export func lstat(name *byte, buf *Stat) (ret int64, errno int64) {
const SYSLSTAT = 6;
- r1, r2, err := syscall.Syscall(SYSLSTAT, AddrToInt(name), StatToInt(buf), 0);
+ r1, r2, err := syscall.Syscall(SYSLSTAT, BytePtr(name), StatPtr(buf), 0);
return r1, err;
}
export func fstat(fd int64, buf *Stat) (ret int64, errno int64) {
const SYSFSTAT = 5;
- r1, r2, err := syscall.Syscall(SYSFSTAT, fd, StatToInt(buf), 0);
+ r1, r2, err := syscall.Syscall(SYSFSTAT, fd, StatPtr(buf), 0);
return r1, err;
}
@@ -146,6 +146,6 @@ export func unlink(name string) (ret int64, errno int64) {
return -1, syscall.ENAMETOOLONG
}
const SYSUNLINK = 87;
- r1, r2, err := syscall.Syscall(SYSUNLINK, AddrToInt(&namebuf[0]), 0, 0);
+ r1, r2, err := syscall.Syscall(SYSUNLINK, BytePtr(&namebuf[0]), 0, 0);
return r1, err;
}
diff --git a/src/syscall/syscall.go b/src/syscall/syscall.go
index 986ed9c4b..9ec14de27 100644
--- a/src/syscall/syscall.go
+++ b/src/syscall/syscall.go
@@ -10,7 +10,7 @@ package syscall
export func Syscall(trap int64, a1, a2, a3 int64) (r1, r2, err int64);
export func Syscall6(trap int64, a1, a2, a3, a4, a5, a6 int64) (r1, r2, err int64);
-export func AddrToInt(b *byte) int64;
+export func BytePtr(b *byte) int64;
/*
* Used to convert file names to byte arrays for passing to kernel,
diff --git a/src/syscall/syscall_amd64_darwin.s b/src/syscall/syscall_amd64_darwin.s
index 1fab42dc6..8677451d4 100644
--- a/src/syscall/syscall_amd64_darwin.s
+++ b/src/syscall/syscall_amd64_darwin.s
@@ -48,12 +48,12 @@ TEXT syscall·Syscall6(SB),7,$-8
RET
// conversion operators - really just casts
-TEXT syscall·AddrToInt(SB),7,$-8
+TEXT syscall·BytePtr(SB),7,$-8
MOVQ 8(SP), AX
MOVQ AX, 16(SP)
RET
-TEXT syscall·StatToInt(SB),7,$-8
+TEXT syscall·StatPtr(SB),7,$-8
MOVQ 8(SP), AX
MOVQ AX, 16(SP)
RET
diff --git a/src/syscall/syscall_amd64_linux.s b/src/syscall/syscall_amd64_linux.s
index c279ff8bf..4fea6d55b 100644
--- a/src/syscall/syscall_amd64_linux.s
+++ b/src/syscall/syscall_amd64_linux.s
@@ -50,17 +50,22 @@ TEXT syscall·Syscall6(SB),7,$-8
RET
// conversion operators - really just casts
-TEXT syscall·AddrToInt(SB),7,$-8
+TEXT syscall·BytePtr(SB),7,$-8
MOVQ 8(SP), AX
MOVQ AX, 16(SP)
RET
-TEXT syscall·Addr32ToInt(SB),7,$-8
+TEXT syscall·Int32Ptr(SB),7,$-8
MOVQ 8(SP), AX
MOVQ AX, 16(SP)
RET
-TEXT syscall·StatToInt(SB),7,$-8
+TEXT syscall·Int64Ptr(SB),7,$-8
+ MOVQ 8(SP), AX
+ MOVQ AX, 16(SP)
+ RET
+
+TEXT syscall·StatPtr(SB),7,$-8
MOVQ 8(SP), AX
MOVQ AX, 16(SP)
RET
diff --git a/src/syscall/time_amd64_darwin.go b/src/syscall/time_amd64_darwin.go
new file mode 100644
index 000000000..d4cdaa048
--- /dev/null
+++ b/src/syscall/time_amd64_darwin.go
@@ -0,0 +1,19 @@
+// Copyright 2009 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.
+
+package syscall
+
+import syscall "syscall"
+
+export func gettimeofday() (sec, nsec, errno int64) {
+ const GETTIMEOFDAY = 116;
+ // The "1" in the call is the timeval pointer, which must be
+ // non-zero but is otherwise unused. The results
+ // are returned in r1, r2.
+ r1, r2, err := syscall.Syscall(GETTIMEOFDAY, 1, 0, 0);
+ if err != 0 {
+ return 0, 0, err
+ }
+ return r1, r2, 0
+}
diff --git a/src/syscall/time_amd64_linux.go b/src/syscall/time_amd64_linux.go
new file mode 100644
index 000000000..9feacf654
--- /dev/null
+++ b/src/syscall/time_amd64_linux.go
@@ -0,0 +1,19 @@
+// Copyright 2009 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.
+
+package syscall
+
+import syscall "syscall"
+
+func Int64Ptr(s *int64) int64;
+
+export func gettimeofday() (sec, nsec, errno int64) {
+ const GETTIMEOFDAY = 96
+ var tv [2]int64; // struct timeval
+ r1, r2, err := syscall.Syscall(GETTIMEOFDAY, Int64Ptr(&tv[0]), 0, 0);
+ if err != 0 {
+ return 0, 0, err
+ }
+ return tv[0], tv[1], 0
+}