diff options
author | Russ Cox <rsc@golang.org> | 2008-09-26 14:11:26 -0700 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2008-09-26 14:11:26 -0700 |
commit | 3564bd92f037220525e0d5c92541f4fdc1717b35 (patch) | |
tree | 26c67a72dec44faba761ffd9fac52a927ec58ffe /src/lib/syscall/file_darwin.go | |
parent | a56084d76909d5433ef4c4c17e8326116afa8cbc (diff) | |
download | golang-3564bd92f037220525e0d5c92541f4fdc1717b35.tar.gz |
move src/syscall to src/lib/syscall.
enforce rule: all kernel data structures and constants
go in syscall module.
move things that should be in syscall out of net.
make net a single package.
R=r
OCL=15985
CL=15994
Diffstat (limited to 'src/lib/syscall/file_darwin.go')
-rw-r--r-- | src/lib/syscall/file_darwin.go | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/src/lib/syscall/file_darwin.go b/src/lib/syscall/file_darwin.go new file mode 100644 index 000000000..c481b0d1e --- /dev/null +++ b/src/lib/syscall/file_darwin.go @@ -0,0 +1,88 @@ +// 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 + +// File operations for Darwin + +import syscall "syscall" + +const NameBufsize = 512 + +export func open(name string, mode int64, perm int64) (ret int64, errno int64) { + var namebuf [NameBufsize]byte; + if !StringToBytes(&namebuf, name) { + return -1, ENAMETOOLONG + } + r1, r2, err := Syscall(SYS_OPEN, BytePtr(&namebuf[0]), mode, perm); + return r1, err; +} + +export func creat(name string, perm int64) (ret int64, errno int64) { + var namebuf [NameBufsize]byte; + if !StringToBytes(&namebuf, name) { + return -1, ENAMETOOLONG + } + r1, r2, err := Syscall(SYS_OPEN, BytePtr(&namebuf[0]), O_CREAT|O_WRONLY|O_TRUNC, perm); + return r1, err; +} + +export func close(fd int64) (ret int64, errno int64) { + r1, r2, err := Syscall(SYS_CLOSE, fd, 0, 0); + return r1, err; +} + +export func read(fd int64, buf *byte, nbytes int64) (ret int64, errno int64) { + r1, r2, err := Syscall(SYS_READ, fd, BytePtr(buf), nbytes); + return r1, err; +} + +export func write(fd int64, buf *byte, nbytes int64) (ret int64, errno int64) { + r1, r2, err := Syscall(SYS_WRITE, fd, BytePtr(buf), nbytes); + return r1, err; +} + +export func pipe(fds *[2]int64) (ret int64, errno int64) { + r1, r2, err := Syscall(SYS_PIPE, 0, 0, 0); + if r1 < 0 { + return r1, err; + } + fds[0] = r1; + fds[1] = r2; + return 0, 0; +} + +export func stat(name string, buf *Stat) (ret int64, errno int64) { + var namebuf [NameBufsize]byte; + if !StringToBytes(&namebuf, name) { + return -1, ENAMETOOLONG + } + r1, r2, err := Syscall(SYS_STAT, BytePtr(&namebuf[0]), StatPtr(buf), 0); + return r1, err; +} + +export func lstat(name *byte, buf *Stat) (ret int64, errno int64) { + r1, r2, err := Syscall(SYS_LSTAT, BytePtr(name), StatPtr(buf), 0); + return r1, err; +} + +export func fstat(fd int64, buf *Stat) (ret int64, errno int64) { + r1, r2, err := Syscall(SYS_FSTAT, fd, StatPtr(buf), 0); + return r1, err; +} + +export func unlink(name string) (ret int64, errno int64) { + var namebuf [NameBufsize]byte; + if !StringToBytes(&namebuf, name) { + return -1, ENAMETOOLONG + } + r1, r2, err := Syscall(SYS_UNLINK, BytePtr(&namebuf[0]), 0, 0); + return r1, err; +} + +export func fcntl(fd, cmd, arg int64) (ret int64, errno int64) { + r1, r2, err := Syscall(SYS_FCNTL, fd, cmd, arg) + return r1, err +} + |