aboutsummaryrefslogtreecommitdiff
path: root/src/syscall/file_amd64_linux.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/syscall/file_amd64_linux.go')
-rw-r--r--src/syscall/file_amd64_linux.go102
1 files changed, 102 insertions, 0 deletions
diff --git a/src/syscall/file_amd64_linux.go b/src/syscall/file_amd64_linux.go
new file mode 100644
index 0000000000..910d6f48cc
--- /dev/null
+++ b/src/syscall/file_amd64_linux.go
@@ -0,0 +1,102 @@
+// 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 Stat
+export stat, fstat, lstat
+export open, close, read, write, pipe
+
+func StatToInt(s *Stat) int64;
+
+// Stat and relatives for Linux
+
+type dev_t uint64;
+type ino_t uint64;
+type mode_t uint32;
+type nlink_t uint64;
+type uid_t uint32;
+type gid_t uint32;
+type off_t int64;
+type blksize_t int64;
+type blkcnt_t int64;
+type time_t int64;
+
+type Timespec struct {
+ tv_sec time_t;
+ tv_nsec int64;
+}
+
+type Stat struct {
+ st_dev dev_t; /* ID of device containing file */
+ st_ino ino_t; /* inode number */
+ st_nlink nlink_t; /* number of hard links */
+ st_mode mode_t; /* protection */
+ st_uid uid_t; /* user ID of owner */
+ st_gid gid_t; /* group ID of owner */
+ pad0 int32;
+ st_rdev dev_t; /* device ID (if special file) */
+ st_size off_t; /* total size, in bytes */
+ st_blksize blksize_t; /* blocksize for filesystem I/O */
+ st_blocks blkcnt_t; /* number of blocks allocated */
+ st_atime Timespec; /* time of last access */
+ st_mtime Timespec; /* time of last modification */
+ st_ctime Timespec; /* time of last status change */
+}
+
+func open(name *byte, mode int64) (ret int64, errno int64) {
+ const SYSOPEN = 2;
+ r1, r2, err := syscall.Syscall(SYSOPEN, AddrToInt(name), mode, 0);
+ return r1, err;
+}
+
+func close(fd int64) (ret int64, errno int64) {
+ const SYSCLOSE = 3;
+ r1, r2, err := syscall.Syscall(SYSCLOSE, fd, 0, 0);
+ return r1, err;
+}
+
+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);
+ return r1, err;
+}
+
+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);
+ return r1, err;
+}
+
+func pipe(fds *[2]int64) (ret int64, errno int64) {
+ const SYSPIPE = 22;
+ r1, r2, err := syscall.Syscall(SYSPIPE, 0, 0, 0);
+ if r1 < 0 {
+ return r1, err;
+ }
+ fds[0] = r1;
+ fds[1] = r2;
+ return 0, err;
+}
+
+func stat(name *byte, buf *Stat) (ret int64, errno int64) {
+ const SYSSTAT = 4;
+ r1, r2, err := syscall.Syscall(SYSSTAT, AddrToInt(name), StatToInt(buf), 0);
+ return r1, err;
+}
+
+func lstat(name *byte, buf *Stat) (ret int64, errno int64) {
+ const SYSLSTAT = 6;
+ r1, r2, err := syscall.Syscall(SYSLSTAT, AddrToInt(name), StatToInt(buf), 0);
+ return r1, err;
+}
+
+func fstat(fd int64, buf *Stat) (ret int64, errno int64) {
+ const SYSFSTAT = 5;
+ r1, r2, err := syscall.Syscall(SYSFSTAT, fd, StatToInt(buf), 0);
+ return r1, err;
+}
+