mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
386 system call fixes:
* use 64-bit file system calls (Linux, Darwin) * use 32-bit [sic] uid/gid calls (Linux) * fix sockets on Linux Darwin/386 works again. Linux/386 is better but must never have worked; there are still bugs surrounding the creation of new threads in the runtime package. R=austin DELTA=1332 (673 added, 614 deleted, 45 changed) OCL=30327 CL=30380
This commit is contained in:
parent
cb897436eb
commit
76c87d58cd
16 changed files with 424 additions and 365 deletions
|
|
@ -367,13 +367,13 @@ func TestChmod(t *testing.T) {
|
||||||
func checkUidGid(t *testing.T, path string, uid, gid int) {
|
func checkUidGid(t *testing.T, path string, uid, gid int) {
|
||||||
dir, err := Stat(path);
|
dir, err := Stat(path);
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Stat %q (looking for uid/gid %#o/%#o): %s", path, uid, gid, err);
|
t.Fatalf("Stat %q (looking for uid/gid %d/%d): %s", path, uid, gid, err);
|
||||||
}
|
}
|
||||||
if dir.Uid != uint32(uid) {
|
if dir.Uid != uint32(uid) {
|
||||||
t.Errorf("Stat %q: uid %#o want %#o", path, dir.Uid, uid);
|
t.Errorf("Stat %q: uid %d want %d", path, dir.Uid, uid);
|
||||||
}
|
}
|
||||||
if dir.Gid != uint32(gid) {
|
if dir.Gid != uint32(gid) {
|
||||||
t.Errorf("Stat %q: gid %#o want %#o", path, dir.Gid, uid);
|
t.Errorf("Stat %q: gid %d want %d", path, dir.Gid, gid);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -398,6 +398,7 @@ func TestChown(t *testing.T) {
|
||||||
// Can't change uid unless root, but can try
|
// Can't change uid unless root, but can try
|
||||||
// changing the group id. First try our current group.
|
// changing the group id. First try our current group.
|
||||||
gid := Getgid();
|
gid := Getgid();
|
||||||
|
t.Log("gid:", gid);
|
||||||
if err = Chown(Path, -1, gid); err != nil {
|
if err = Chown(Path, -1, gid); err != nil {
|
||||||
t.Fatalf("chown %s -1 %d: %s", Path, gid, err);
|
t.Fatalf("chown %s -1 %d: %s", Path, gid, err);
|
||||||
}
|
}
|
||||||
|
|
@ -408,6 +409,7 @@ func TestChown(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("getgroups: %s", err);
|
t.Fatalf("getgroups: %s", err);
|
||||||
}
|
}
|
||||||
|
t.Log("groups: ", groups);
|
||||||
for i, g := range groups {
|
for i, g := range groups {
|
||||||
if err = Chown(Path, -1, g); err != nil {
|
if err = Chown(Path, -1, g); err != nil {
|
||||||
t.Fatalf("chown %s -1 %d: %s", Path, g, err);
|
t.Fatalf("chown %s -1 %d: %s", Path, g, err);
|
||||||
|
|
|
||||||
|
|
@ -100,6 +100,7 @@ darwin_amd64)
|
||||||
mkerrors="mkerrors"
|
mkerrors="mkerrors"
|
||||||
;;
|
;;
|
||||||
linux_386)
|
linux_386)
|
||||||
|
mksyscall="mksyscall -l32"
|
||||||
mksysnum="mksysnum_linux /usr/include/asm/unistd_32.h"
|
mksysnum="mksysnum_linux /usr/include/asm/unistd_32.h"
|
||||||
mktypes="godefs -gsyscall -f-m32"
|
mktypes="godefs -gsyscall -f-m32"
|
||||||
;;
|
;;
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ TEXT syscall·Syscall(SB),7,$0
|
||||||
RET
|
RET
|
||||||
ok:
|
ok:
|
||||||
MOVL AX, 20(SP) // r1
|
MOVL AX, 20(SP) // r1
|
||||||
MOVL DX, 24(SP) // r2 ???
|
MOVL DX, 24(SP) // r2
|
||||||
MOVL $0, 28(SP) // errno
|
MOVL $0, 28(SP) // errno
|
||||||
CALL sys·exitsyscall(SB)
|
CALL sys·exitsyscall(SB)
|
||||||
RET
|
RET
|
||||||
|
|
@ -56,7 +56,7 @@ TEXT syscall·Syscall6(SB),7,$0
|
||||||
RET
|
RET
|
||||||
ok6:
|
ok6:
|
||||||
MOVL AX, 32(SP) // r1
|
MOVL AX, 32(SP) // r1
|
||||||
MOVL DX, 36(SP) // r2 ???
|
MOVL DX, 36(SP) // r2
|
||||||
MOVL $0, 40(SP) // errno
|
MOVL $0, 40(SP) // errno
|
||||||
CALL sys·exitsyscall(SB)
|
CALL sys·exitsyscall(SB)
|
||||||
RET
|
RET
|
||||||
|
|
@ -78,6 +78,6 @@ TEXT syscall·RawSyscall(SB),7,$0
|
||||||
RET
|
RET
|
||||||
ok1:
|
ok1:
|
||||||
MOVL AX, 20(SP) // r1
|
MOVL AX, 20(SP) // r1
|
||||||
MOVL DX, 24(SP) // r2 ???
|
MOVL DX, 24(SP) // r2
|
||||||
MOVL $0, 28(SP) // errno
|
MOVL $0, 28(SP) // errno
|
||||||
RET
|
RET
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
// System calls for 386, Linux
|
// System calls for 386, Linux
|
||||||
//
|
//
|
||||||
|
|
||||||
// func Syscall(trap int64, a1, a2, a3 int64) (r1, r2, err int64);
|
// func Syscall(trap uintptr, a1, a2, a3 uintptr) (r1, r2, err uintptr);
|
||||||
// Trap # in AX, args in BX CX DX SI DI, return in AX
|
// Trap # in AX, args in BX CX DX SI DI, return in AX
|
||||||
|
|
||||||
TEXT syscall·Syscall(SB),7,$0
|
TEXT syscall·Syscall(SB),7,$0
|
||||||
|
|
@ -33,6 +33,7 @@ ok:
|
||||||
CALL sys·exitsyscall(SB)
|
CALL sys·exitsyscall(SB)
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
// func Syscall6(trap uintptr, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr);
|
||||||
// Actually Syscall5 but the rest of the code expects it to be named Syscall6.
|
// Actually Syscall5 but the rest of the code expects it to be named Syscall6.
|
||||||
TEXT syscall·Syscall6(SB),7,$0
|
TEXT syscall·Syscall6(SB),7,$0
|
||||||
CALL sys·entersyscall(SB)
|
CALL sys·entersyscall(SB)
|
||||||
|
|
@ -59,6 +60,7 @@ ok6:
|
||||||
CALL sys·exitsyscall(SB)
|
CALL sys·exitsyscall(SB)
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
// func RawSyscall(trap uintptr, a1, a2, a3 uintptr) (r1, r2, err uintptr);
|
||||||
TEXT syscall·RawSyscall(SB),7,$0
|
TEXT syscall·RawSyscall(SB),7,$0
|
||||||
MOVL 4(SP), AX // syscall entry
|
MOVL 4(SP), AX // syscall entry
|
||||||
MOVL 8(SP), BX
|
MOVL 8(SP), BX
|
||||||
|
|
@ -96,13 +98,42 @@ TEXT syscall·socketcall(SB),7,$0
|
||||||
INT $0x80
|
INT $0x80
|
||||||
CMPL AX, $0xfffff001
|
CMPL AX, $0xfffff001
|
||||||
JLS oksock
|
JLS oksock
|
||||||
MOVL $-1, 28(SP) // n
|
MOVL $-1, 32(SP) // n
|
||||||
NEGL AX
|
NEGL AX
|
||||||
MOVL AX, 32(SP) // errno
|
MOVL AX, 36(SP) // errno
|
||||||
CALL sys·exitsyscall(SB)
|
CALL sys·exitsyscall(SB)
|
||||||
RET
|
RET
|
||||||
oksock:
|
oksock:
|
||||||
MOVL AX, 28(SP) // n
|
MOVL AX, 32(SP) // n
|
||||||
MOVL $0, 32(SP) // errno
|
MOVL $0, 36(SP) // errno
|
||||||
|
CALL sys·exitsyscall(SB)
|
||||||
|
RET
|
||||||
|
|
||||||
|
#define SYS__LLSEEK 140 /* from zsysnum_linux_386.go */
|
||||||
|
// func Seek(fd int, offset int64, whence int) (newoffset int64, errno int)
|
||||||
|
// Implemented in assembly to avoid allocation when
|
||||||
|
// taking the address of the return value newoffset.
|
||||||
|
// Underlying system call is
|
||||||
|
// llseek(int fd, int offhi, int offlo, int64 *result, int whence)
|
||||||
|
TEXT syscall·Seek(SB),7,$0
|
||||||
|
CALL sys·entersyscall(SB)
|
||||||
|
MOVL $SYS__LLSEEK, AX // syscall entry
|
||||||
|
MOVL 4(SP), BX // fd
|
||||||
|
MOVL 12(SP), CX // offset-high
|
||||||
|
MOVL 8(SP), DX // offset-low
|
||||||
|
LEAL 20(SP), SI // result pointer
|
||||||
|
MOVL 16(SP), DI // whence
|
||||||
|
INT $0x80
|
||||||
|
CMPL AX, $0xfffff001
|
||||||
|
JLS okseek
|
||||||
|
MOVL $-1, 20(SP) // newoffset low
|
||||||
|
MOVL $-1, 24(SP) // newoffset high
|
||||||
|
NEGL AX
|
||||||
|
MOVL AX, 28(SP) // errno
|
||||||
|
CALL sys·exitsyscall(SB)
|
||||||
|
RET
|
||||||
|
okseek:
|
||||||
|
// system call filled in newoffset already
|
||||||
|
MOVL $0, 28(SP) // errno
|
||||||
CALL sys·exitsyscall(SB)
|
CALL sys·exitsyscall(SB)
|
||||||
RET
|
RET
|
||||||
|
|
|
||||||
|
|
@ -142,6 +142,18 @@ while(<>) {
|
||||||
if($type eq "bool") {
|
if($type eq "bool") {
|
||||||
$reg = "$reg != 0";
|
$reg = "$reg != 0";
|
||||||
}
|
}
|
||||||
|
if($type eq "int64" && $_32bit ne "") {
|
||||||
|
# 64-bit number in r1:r0 or r0:r1.
|
||||||
|
if($i+2 > @out) {
|
||||||
|
print STDERR "$ARGV:$.: not enough registers for int64 return\n";
|
||||||
|
}
|
||||||
|
if($_32bit eq "big-endian") {
|
||||||
|
$reg = sprintf("int64(r%d)<<32 | int64(r%d)", $i, $i+1);
|
||||||
|
} else {
|
||||||
|
$reg = sprintf("int64(r%d)<<32 | int64(r%d)", $i+1, $i);
|
||||||
|
}
|
||||||
|
$i++; # loop will do another $i++
|
||||||
|
}
|
||||||
$text .= "\t$name = $type($reg);\n";
|
$text .= "\t$name = $type($reg);\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -154,13 +154,6 @@ func Pipe(p []int) (errno int) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO(rsc): How does 386 return an int64 newoffset?
|
|
||||||
//sys lseek(fd int, offset int64, whence int) (newoffset uintptr, errno int)
|
|
||||||
func Seek(fd int, offset int64, whence int) (newoffset int64, errno int) {
|
|
||||||
n, e := lseek(fd, offset, whence);
|
|
||||||
return int64(n), e;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Sleep(ns int64) (errno int) {
|
func Sleep(ns int64) (errno int) {
|
||||||
tv := NsecToTimeval(ns);
|
tv := NsecToTimeval(ns);
|
||||||
return Select(0, nil, nil, nil, &tv);
|
return Select(0, nil, nil, nil, &tv);
|
||||||
|
|
@ -427,6 +420,7 @@ func Kevent(kq int, changes, events []Kevent_t, timeout *Timespec) (n int, errno
|
||||||
//sys Rename(from string, to string) (errno int)
|
//sys Rename(from string, to string) (errno int)
|
||||||
//sys Revoke(path string) (errno int)
|
//sys Revoke(path string) (errno int)
|
||||||
//sys Rmdir(path string) (errno int)
|
//sys Rmdir(path string) (errno int)
|
||||||
|
//sys Seek(fd int, offset int64, whence int) (newoffset int64, errno int) = SYS_LSEEK
|
||||||
//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (errno int)
|
//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (errno int)
|
||||||
//sys Setegid(egid int) (errno int)
|
//sys Setegid(egid int) (errno int)
|
||||||
//sys Seteuid(euid int) (errno int)
|
//sys Seteuid(euid int) (errno int)
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ func NsecToTimeval(nsec int64) (tv Timeval) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//sys gettimeofday(tp *Timeval) (sec int64, usec int32, errno int)
|
//sys gettimeofday(tp *Timeval) (sec int32, usec int32, errno int)
|
||||||
func Gettimeofday(tv *Timeval) (errno int) {
|
func Gettimeofday(tv *Timeval) (errno int) {
|
||||||
// The tv passed to gettimeofday must be non-nil
|
// The tv passed to gettimeofday must be non-nil
|
||||||
// but is otherwise unused. The answers come back
|
// but is otherwise unused. The answers come back
|
||||||
|
|
|
||||||
|
|
@ -66,8 +66,6 @@ func Getwd() (wd string, errno int) {
|
||||||
return string(buf[0:n-1]), 0
|
return string(buf[0:n-1]), 0
|
||||||
}
|
}
|
||||||
|
|
||||||
//sys getgroups(n int, list *_Gid_t) (nn int, errno int)
|
|
||||||
//sys setgroups(n int, list *_Gid_t) (errno int)
|
|
||||||
func Getgroups() (gids []int, errno int) {
|
func Getgroups() (gids []int, errno int) {
|
||||||
n, err := getgroups(0, nil);
|
n, err := getgroups(0, nil);
|
||||||
if err != 0 {
|
if err != 0 {
|
||||||
|
|
@ -380,7 +378,6 @@ func SetsockoptLinger(fd, level, opt int, l *Linger) (errno int) {
|
||||||
//sys Adjtimex(buf *Timex) (state int, errno int)
|
//sys Adjtimex(buf *Timex) (state int, errno int)
|
||||||
//sys Chdir(path string) (errno int)
|
//sys Chdir(path string) (errno int)
|
||||||
//sys Chmod(path string, mode int) (errno int)
|
//sys Chmod(path string, mode int) (errno int)
|
||||||
//sys Chown(path string, uid int, gid int) (errno int)
|
|
||||||
//sys Chroot(path string) (errno int)
|
//sys Chroot(path string) (errno int)
|
||||||
//sys Close(fd int) (errno int)
|
//sys Close(fd int) (errno int)
|
||||||
//sys Creat(path string, mode int) (fd int, errno int)
|
//sys Creat(path string, mode int) (fd int, errno int)
|
||||||
|
|
@ -395,18 +392,12 @@ func SetsockoptLinger(fd, level, opt int, l *Linger) (errno int) {
|
||||||
//sys Fchdir(fd int) (errno int)
|
//sys Fchdir(fd int) (errno int)
|
||||||
//sys Fchmod(fd int, mode int) (errno int)
|
//sys Fchmod(fd int, mode int) (errno int)
|
||||||
//sys Fchmodat(dirfd int, path string, mode int, flags int) (errno int)
|
//sys Fchmodat(dirfd int, path string, mode int, flags int) (errno int)
|
||||||
//sys Fchown(fd int, uid int, gid int) (errno int)
|
|
||||||
//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (errno int)
|
//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (errno int)
|
||||||
//sys fcntl(fd int, cmd int, arg int) (val int, errno int)
|
//sys fcntl(fd int, cmd int, arg int) (val int, errno int)
|
||||||
//sys Fdatasync(fd int) (errno int)
|
//sys Fdatasync(fd int) (errno int)
|
||||||
//sys Fstat(fd int, stat *Stat_t) (errno int)
|
|
||||||
//sys Fstatfs(fd int, buf *Statfs_t) (errno int)
|
|
||||||
//sys Fsync(fd int) (errno int)
|
//sys Fsync(fd int) (errno int)
|
||||||
//sys Ftruncate(fd int, length int64) (errno int)
|
//sys Ftruncate(fd int, length int64) (errno int)
|
||||||
//sys Getdents(fd int, buf []byte) (n int, errno int) = SYS_GETDENTS64
|
//sys Getdents(fd int, buf []byte) (n int, errno int) = SYS_GETDENTS64
|
||||||
//sys Getegid() (egid int)
|
|
||||||
//sys Geteuid() (euid int)
|
|
||||||
//sys Getgid() (gid int)
|
|
||||||
//sys Getpgid(pid int) (pgid int, errno int)
|
//sys Getpgid(pid int) (pgid int, errno int)
|
||||||
//sys Getpgrp() (pid int)
|
//sys Getpgrp() (pid int)
|
||||||
//sys Getpid() (pid int)
|
//sys Getpid() (pid int)
|
||||||
|
|
@ -415,14 +406,11 @@ func SetsockoptLinger(fd, level, opt int, l *Linger) (errno int) {
|
||||||
//sys Getrusage(who int, rusage *Rusage) (errno int)
|
//sys Getrusage(who int, rusage *Rusage) (errno int)
|
||||||
//sys Gettid() (tid int)
|
//sys Gettid() (tid int)
|
||||||
//sys Gettimeofday(tv *Timeval) (errno int)
|
//sys Gettimeofday(tv *Timeval) (errno int)
|
||||||
//sys Getuid() (uid int)
|
|
||||||
//sys Ioperm(from int, num int, on int) (errno int)
|
//sys Ioperm(from int, num int, on int) (errno int)
|
||||||
//sys Iopl(level int) (errno int)
|
//sys Iopl(level int) (errno int)
|
||||||
//sys Kill(pid int, sig int) (errno int)
|
//sys Kill(pid int, sig int) (errno int)
|
||||||
//sys Klogctl(typ int, buf []byte) (n int, errno int) = SYS_SYSLOG
|
//sys Klogctl(typ int, buf []byte) (n int, errno int) = SYS_SYSLOG
|
||||||
//sys Lchown(path string, uid int, gid int) (errno int)
|
|
||||||
//sys Link(oldpath string, newpath string) (errno int)
|
//sys Link(oldpath string, newpath string) (errno int)
|
||||||
//sys Lstat(path string, stat *Stat_t) (errno int)
|
|
||||||
//sys Mkdir(path string, mode int) (errno int)
|
//sys Mkdir(path string, mode int) (errno int)
|
||||||
//sys Mkdirat(dirfd int, path string, mode int) (errno int)
|
//sys Mkdirat(dirfd int, path string, mode int) (errno int)
|
||||||
//sys Mknod(path string, mode int, dev int) (errno int)
|
//sys Mknod(path string, mode int, dev int) (errno int)
|
||||||
|
|
@ -439,25 +427,15 @@ func SetsockoptLinger(fd, level, opt int, l *Linger) (errno int) {
|
||||||
//sys Rename(oldpath string, newpath string) (errno int)
|
//sys Rename(oldpath string, newpath string) (errno int)
|
||||||
//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (errno int)
|
//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (errno int)
|
||||||
//sys Rmdir(path string) (errno int)
|
//sys Rmdir(path string) (errno int)
|
||||||
//sys Seek(fd int, offset int64, whence int) (off int64, errno int) = SYS_LSEEK
|
|
||||||
//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, errno int)
|
//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, errno int)
|
||||||
//sys Setdomainname(p []byte) (errno int)
|
//sys Setdomainname(p []byte) (errno int)
|
||||||
//sys Setfsgid(gid int) (errno int)
|
|
||||||
//sys Setfsuid(uid int) (errno int)
|
|
||||||
//sys Setgid(gid int) (errno int)
|
|
||||||
//sys Sethostname(p []byte) (errno int)
|
//sys Sethostname(p []byte) (errno int)
|
||||||
//sys Setpgid(pid int, pgid int) (errno int)
|
//sys Setpgid(pid int, pgid int) (errno int)
|
||||||
//sys Setregid(rgid int, egid int) (errno int)
|
|
||||||
//sys Setresgid(rgid int, egid int, sgid int) (errno int)
|
|
||||||
//sys Setresuid(ruid int, euid int, suid int) (errno int)
|
|
||||||
//sys Setreuid(ruid int, euid int) (errno int)
|
|
||||||
//sys Setrlimit(resource int, rlim *Rlimit) (errno int)
|
//sys Setrlimit(resource int, rlim *Rlimit) (errno int)
|
||||||
//sys Setsid() (pid int)
|
//sys Setsid() (pid int)
|
||||||
//sys Settimeofday(tv *Timeval) (errno int)
|
//sys Settimeofday(tv *Timeval) (errno int)
|
||||||
//sys Setuid(uid int) (errno int)
|
//sys Setuid(uid int) (errno int)
|
||||||
//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, errno int)
|
//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, errno int)
|
||||||
//sys Stat(path string, stat *Stat_t) (errno int)
|
|
||||||
//sys Statfs(path string, buf *Statfs_t) (errno int)
|
|
||||||
//sys Symlink(oldpath string, newpath string) (errno int)
|
//sys Symlink(oldpath string, newpath string) (errno int)
|
||||||
//sys Sync()
|
//sys Sync()
|
||||||
//sys SyncFileRange(fd int, off int64, n int64, flags int) (errno int)
|
//sys SyncFileRange(fd int, off int64, n int64, flags int) (errno int)
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,34 @@ func NsecToTimeval(nsec int64) (tv Timeval) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 64-bit file system and 32-bit uid calls
|
||||||
|
// (386 default is 32-bit file system and 16-bit uid).
|
||||||
|
//sys Chown(path string, uid int, gid int) (errno int) = SYS_CHOWN32
|
||||||
|
//sys Fchown(fd int, uid int, gid int) (errno int) = SYS_FCHOWN32
|
||||||
|
//sys Fstat(fd int, stat *Stat_t) (errno int) = SYS_FSTAT64
|
||||||
|
//sys Fstatfs(fd int, buf *Statfs_t) (errno int) = SYS_FSTATFS64
|
||||||
|
//sys Getegid() (egid int) = SYS_GETEGID32
|
||||||
|
//sys Geteuid() (euid int) = SYS_GETEUID32
|
||||||
|
//sys Getgid() (gid int) = SYS_GETGID32
|
||||||
|
//sys Getuid() (uid int) = SYS_GETUID32
|
||||||
|
//sys Lchown(path string, uid int, gid int) (errno int) = SYS_LCHOWN32
|
||||||
|
//sys Lstat(path string, stat *Stat_t) (errno int) = SYS_LSTAT64
|
||||||
|
//sys Setfsgid(gid int) (errno int) = SYS_SETFSGID32
|
||||||
|
//sys Setfsuid(uid int) (errno int) = SYS_SETFSUID32
|
||||||
|
//sys Setgid(gid int) (errno int) = SYS_SETGID32
|
||||||
|
//sys Setregid(rgid int, egid int) (errno int) = SYS_SETREGID32
|
||||||
|
//sys Setresgid(rgid int, egid int, sgid int) (errno int) = SYS_SETRESGID32
|
||||||
|
//sys Setresuid(ruid int, euid int, suid int) (errno int) = SYS_SETRESUID32
|
||||||
|
//sys Setreuid(ruid int, euid int) (errno int) = SYS_SETREUID32
|
||||||
|
//sys Stat(path string, stat *Stat_t) (errno int) = SYS_STAT64
|
||||||
|
//sys Statfs(path string, buf *Statfs_t) (errno int) = SYS_STATFS64
|
||||||
|
//sys getgroups(n int, list *_Gid_t) (nn int, errno int) = SYS_GETGROUPS32
|
||||||
|
//sys setgroups(n int, list *_Gid_t) (errno int) = SYS_SETGROUPS32
|
||||||
|
|
||||||
|
// Underlying system call writes to newoffset via pointer.
|
||||||
|
// Implemented in assembly to avoid allocation.
|
||||||
|
func Seek(fd int, offset int64, whence int) (newoffset int64, errno int)
|
||||||
|
|
||||||
// On x86 Linux, all the socket calls go through an extra indirection,
|
// On x86 Linux, all the socket calls go through an extra indirection,
|
||||||
// I think because the 5-register system call interface can't handle
|
// I think because the 5-register system call interface can't handle
|
||||||
// the 6-argument calls like sendto and recvfrom. Instead the
|
// the 6-argument calls like sendto and recvfrom. Instead the
|
||||||
|
|
|
||||||
|
|
@ -6,13 +6,35 @@ package syscall
|
||||||
|
|
||||||
import "syscall"
|
import "syscall"
|
||||||
|
|
||||||
|
//sys Chown(path string, uid int, gid int) (errno int)
|
||||||
|
//sys Fchown(fd int, uid int, gid int) (errno int)
|
||||||
|
//sys Fstat(fd int, stat *Stat_t) (errno int)
|
||||||
|
//sys Fstatfs(fd int, buf *Statfs_t) (errno int)
|
||||||
|
//sys Getegid() (egid int)
|
||||||
|
//sys Geteuid() (euid int)
|
||||||
|
//sys Getgid() (gid int)
|
||||||
|
//sys Getuid() (uid int)
|
||||||
|
//sys Lchown(path string, uid int, gid int) (errno int)
|
||||||
|
//sys Listen(s int, n int) (errno int)
|
||||||
|
//sys Lstat(path string, stat *Stat_t) (errno int)
|
||||||
|
//sys Seek(fd int, offset int64, whence int) (off int64, errno int) = SYS_LSEEK
|
||||||
|
//sys Setfsgid(gid int) (errno int)
|
||||||
|
//sys Setfsuid(uid int) (errno int)
|
||||||
|
//sys Setgid(gid int) (errno int)
|
||||||
|
//sys Setregid(rgid int, egid int) (errno int)
|
||||||
|
//sys Setresgid(rgid int, egid int, sgid int) (errno int)
|
||||||
|
//sys Setresuid(ruid int, euid int, suid int) (errno int)
|
||||||
|
//sys Setreuid(ruid int, euid int) (errno int)
|
||||||
|
//sys Shutdown(fd int, how int) (errno int)
|
||||||
|
//sys Stat(path string, stat *Stat_t) (errno int)
|
||||||
|
//sys Statfs(path string, buf *Statfs_t) (errno int)
|
||||||
//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, errno int)
|
//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, errno int)
|
||||||
//sys bind(s int, addr uintptr, addrlen _Socklen) (errno int)
|
//sys bind(s int, addr uintptr, addrlen _Socklen) (errno int)
|
||||||
//sys connect(s int, addr uintptr, addrlen _Socklen) (errno int)
|
//sys connect(s int, addr uintptr, addrlen _Socklen) (errno int)
|
||||||
//sys socket(domain int, typ int, proto int) (fd int, errno int)
|
//sys getgroups(n int, list *_Gid_t) (nn int, errno int)
|
||||||
|
//sys setgroups(n int, list *_Gid_t) (errno int)
|
||||||
//sys setsockopt(s int, level int, name int, val uintptr, vallen int) (errno int)
|
//sys setsockopt(s int, level int, name int, val uintptr, vallen int) (errno int)
|
||||||
//sys Listen(s int, n int) (errno int)
|
//sys socket(domain int, typ int, proto int) (fd int, errno int)
|
||||||
//sys Shutdown(fd int, how int) (errno int)
|
|
||||||
|
|
||||||
func Getpagesize() int {
|
func Getpagesize() int {
|
||||||
return 4096
|
return 4096
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,10 @@
|
||||||
Input to godefs. See PORT.
|
Input to godefs. See PORT.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define __DARWIN_UNIX03 0
|
#define _LARGEFILE_SOURCE
|
||||||
#define KERNEL
|
#define _LARGEFILE64_SOURCE
|
||||||
|
#define _FILE_OFFSET_BITS 64
|
||||||
|
#define _GNU_SOURCE
|
||||||
|
|
||||||
#include <dirent.h>
|
#include <dirent.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
|
|
||||||
|
|
@ -36,13 +36,6 @@ func pipe() (r int, w int, errno int) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
func lseek(fd int, offset int64, whence int) (newoffset uintptr, errno int) {
|
|
||||||
r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset >> 32), uintptr(whence), 0, 0);
|
|
||||||
newoffset = uintptr(r0);
|
|
||||||
errno = int(e1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, errno int) {
|
func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, errno int) {
|
||||||
r0, r1, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)));
|
r0, r1, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)));
|
||||||
fd = int(r0);
|
fd = int(r0);
|
||||||
|
|
@ -450,6 +443,12 @@ func Rmdir(path string) (errno int) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Seek(fd int, offset int64, whence int) (newoffset int64, errno int) {
|
||||||
|
r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset >> 32), uintptr(whence), 0, 0);
|
||||||
|
newoffset = int64(int64(r1)<<32 | int64(r0));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (errno int) {
|
func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (errno int) {
|
||||||
r0, r1, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0);
|
r0, r1, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0);
|
||||||
errno = int(e1);
|
errno = int(e1);
|
||||||
|
|
@ -612,9 +611,9 @@ func write(fd int, buf *byte, nbuf int) (n int, errno int) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
func gettimeofday(tp *Timeval) (sec int64, usec int32, errno int) {
|
func gettimeofday(tp *Timeval) (sec int32, usec int32, errno int) {
|
||||||
r0, r1, e1 := Syscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0);
|
r0, r1, e1 := Syscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0);
|
||||||
sec = int64(r0);
|
sec = int32(r0);
|
||||||
usec = int32(r1);
|
usec = int32(r1);
|
||||||
errno = int(e1);
|
errno = int(e1);
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -36,13 +36,6 @@ func pipe() (r int, w int, errno int) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
func lseek(fd int, offset int64, whence int) (newoffset uintptr, errno int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence));
|
|
||||||
newoffset = uintptr(r0);
|
|
||||||
errno = int(e1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, errno int) {
|
func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, errno int) {
|
||||||
r0, r1, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)));
|
r0, r1, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)));
|
||||||
fd = int(r0);
|
fd = int(r0);
|
||||||
|
|
@ -450,6 +443,13 @@ func Rmdir(path string) (errno int) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Seek(fd int, offset int64, whence int) (newoffset int64, errno int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence));
|
||||||
|
newoffset = int64(r0);
|
||||||
|
errno = int(e1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (errno int) {
|
func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (errno int) {
|
||||||
r0, r1, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0);
|
r0, r1, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0);
|
||||||
errno = int(e1);
|
errno = int(e1);
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// mksyscall syscall_linux.go syscall_linux_386.go
|
// mksyscall -l32 syscall_linux.go syscall_linux_386.go
|
||||||
// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
|
// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
|
||||||
|
|
||||||
package syscall
|
package syscall
|
||||||
|
|
@ -35,19 +35,6 @@ func Getcwd(buf []byte) (n int, errno int) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
func getgroups(n int, list *_Gid_t) (nn int, errno int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0);
|
|
||||||
nn = int(r0);
|
|
||||||
errno = int(e1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func setgroups(n int, list *_Gid_t) (errno int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0);
|
|
||||||
errno = int(e1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, errno int) {
|
func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, errno int) {
|
||||||
r0, r1, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0);
|
r0, r1, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0);
|
||||||
wpid = int(r0);
|
wpid = int(r0);
|
||||||
|
|
@ -86,12 +73,6 @@ func Chmod(path string, mode int) (errno int) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
func Chown(path string, uid int, gid int) (errno int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid));
|
|
||||||
errno = int(e1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Chroot(path string) (errno int) {
|
func Chroot(path string) (errno int) {
|
||||||
r0, r1, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
|
r0, r1, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
|
||||||
errno = int(e1);
|
errno = int(e1);
|
||||||
|
|
@ -182,12 +163,6 @@ func Fchmodat(dirfd int, path string, mode int, flags int) (errno int) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
func Fchown(fd int, uid int, gid int) (errno int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid));
|
|
||||||
errno = int(e1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Fchownat(dirfd int, path string, uid int, gid int, flags int) (errno int) {
|
func Fchownat(dirfd int, path string, uid int, gid int, flags int) (errno int) {
|
||||||
r0, r1, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid), uintptr(flags), 0);
|
r0, r1, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid), uintptr(flags), 0);
|
||||||
errno = int(e1);
|
errno = int(e1);
|
||||||
|
|
@ -207,18 +182,6 @@ func Fdatasync(fd int) (errno int) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
func Fstat(fd int, stat *Stat_t) (errno int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0);
|
|
||||||
errno = int(e1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Fstatfs(fd int, buf *Statfs_t) (errno int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0);
|
|
||||||
errno = int(e1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Fsync(fd int) (errno int) {
|
func Fsync(fd int) (errno int) {
|
||||||
r0, r1, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0);
|
r0, r1, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0);
|
||||||
errno = int(e1);
|
errno = int(e1);
|
||||||
|
|
@ -240,24 +203,6 @@ func Getdents(fd int, buf []byte) (n int, errno int) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
func Getegid() (egid int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_GETEGID, 0, 0, 0);
|
|
||||||
egid = int(r0);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Geteuid() (euid int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_GETEUID, 0, 0, 0);
|
|
||||||
euid = int(r0);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Getgid() (gid int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_GETGID, 0, 0, 0);
|
|
||||||
gid = int(r0);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Getpgid(pid int) (pgid int, errno int) {
|
func Getpgid(pid int) (pgid int, errno int) {
|
||||||
r0, r1, e1 := Syscall(SYS_GETPGID, uintptr(pid), 0, 0);
|
r0, r1, e1 := Syscall(SYS_GETPGID, uintptr(pid), 0, 0);
|
||||||
pgid = int(r0);
|
pgid = int(r0);
|
||||||
|
|
@ -307,12 +252,6 @@ func Gettimeofday(tv *Timeval) (errno int) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
func Getuid() (uid int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_GETUID, 0, 0, 0);
|
|
||||||
uid = int(r0);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Ioperm(from int, num int, on int) (errno int) {
|
func Ioperm(from int, num int, on int) (errno int) {
|
||||||
r0, r1, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on));
|
r0, r1, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on));
|
||||||
errno = int(e1);
|
errno = int(e1);
|
||||||
|
|
@ -340,24 +279,12 @@ func Klogctl(typ int, buf []byte) (n int, errno int) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
func Lchown(path string, uid int, gid int) (errno int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid));
|
|
||||||
errno = int(e1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Link(oldpath string, newpath string) (errno int) {
|
func Link(oldpath string, newpath string) (errno int) {
|
||||||
r0, r1, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(StringBytePtr(oldpath))), uintptr(unsafe.Pointer(StringBytePtr(newpath))), 0);
|
r0, r1, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(StringBytePtr(oldpath))), uintptr(unsafe.Pointer(StringBytePtr(newpath))), 0);
|
||||||
errno = int(e1);
|
errno = int(e1);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
func Lstat(path string, stat *Stat_t) (errno int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(stat)), 0);
|
|
||||||
errno = int(e1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Mkdir(path string, mode int) (errno int) {
|
func Mkdir(path string, mode int) (errno int) {
|
||||||
r0, r1, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), 0);
|
r0, r1, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), 0);
|
||||||
errno = int(e1);
|
errno = int(e1);
|
||||||
|
|
@ -468,13 +395,6 @@ func Rmdir(path string) (errno int) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
func Seek(fd int, offset int64, whence int) (off int64, errno int) {
|
|
||||||
r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset >> 32), uintptr(whence), 0, 0);
|
|
||||||
off = int64(r0);
|
|
||||||
errno = int(e1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, errno int) {
|
func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, errno int) {
|
||||||
r0, r1, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0);
|
r0, r1, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0);
|
||||||
n = int(r0);
|
n = int(r0);
|
||||||
|
|
@ -490,24 +410,6 @@ func Setdomainname(p []byte) (errno int) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
func Setfsgid(gid int) (errno int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0);
|
|
||||||
errno = int(e1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Setfsuid(uid int) (errno int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0);
|
|
||||||
errno = int(e1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Setgid(gid int) (errno int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_SETGID, uintptr(gid), 0, 0);
|
|
||||||
errno = int(e1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Sethostname(p []byte) (errno int) {
|
func Sethostname(p []byte) (errno int) {
|
||||||
var _p0 *byte;
|
var _p0 *byte;
|
||||||
if len(p) > 0 { _p0 = &p[0]; }
|
if len(p) > 0 { _p0 = &p[0]; }
|
||||||
|
|
@ -522,30 +424,6 @@ func Setpgid(pid int, pgid int) (errno int) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
func Setregid(rgid int, egid int) (errno int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0);
|
|
||||||
errno = int(e1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Setresgid(rgid int, egid int, sgid int) (errno int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid));
|
|
||||||
errno = int(e1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Setresuid(ruid int, euid int, suid int) (errno int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid));
|
|
||||||
errno = int(e1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Setreuid(ruid int, euid int) (errno int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0);
|
|
||||||
errno = int(e1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Setrlimit(resource int, rlim *Rlimit) (errno int) {
|
func Setrlimit(resource int, rlim *Rlimit) (errno int) {
|
||||||
r0, r1, e1 := Syscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0);
|
r0, r1, e1 := Syscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0);
|
||||||
errno = int(e1);
|
errno = int(e1);
|
||||||
|
|
@ -572,20 +450,7 @@ func Setuid(uid int) (errno int) {
|
||||||
|
|
||||||
func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, errno int) {
|
func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, errno int) {
|
||||||
r0, r1, e1 := 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(r0);
|
n = int64(int64(r1)<<32 | int64(r0));
|
||||||
errno = int(e1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Stat(path string, stat *Stat_t) (errno int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(stat)), 0);
|
|
||||||
errno = int(e1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Statfs(path string, buf *Statfs_t) (errno int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(buf)), 0);
|
|
||||||
errno = int(e1);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -614,8 +479,7 @@ func Sysinfo(info *Sysinfo_t) (errno int) {
|
||||||
|
|
||||||
func Tee(rfd int, wfd int, len int, flags int) (n int64, errno int) {
|
func Tee(rfd int, wfd int, len int, flags int) (n int64, errno int) {
|
||||||
r0, r1, e1 := 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(r0);
|
n = int64(int64(r1)<<32 | int64(r0));
|
||||||
errno = int(e1);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -716,5 +580,132 @@ func write(fd int, p *byte, np int) (n int, errno int) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Chown(path string, uid int, gid int) (errno int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_CHOWN32, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid));
|
||||||
|
errno = int(e1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func Fchown(fd int, uid int, gid int) (errno int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_FCHOWN32, uintptr(fd), uintptr(uid), uintptr(gid));
|
||||||
|
errno = int(e1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func Fstat(fd int, stat *Stat_t) (errno int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0);
|
||||||
|
errno = int(e1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func Fstatfs(fd int, buf *Statfs_t) (errno int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0);
|
||||||
|
errno = int(e1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func Getegid() (egid int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_GETEGID32, 0, 0, 0);
|
||||||
|
egid = int(r0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func Geteuid() (euid int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_GETEUID32, 0, 0, 0);
|
||||||
|
euid = int(r0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func Getgid() (gid int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_GETGID32, 0, 0, 0);
|
||||||
|
gid = int(r0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func Getuid() (uid int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_GETUID32, 0, 0, 0);
|
||||||
|
uid = int(r0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func Lchown(path string, uid int, gid int) (errno int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_LCHOWN32, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid));
|
||||||
|
errno = int(e1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func Lstat(path string, stat *Stat_t) (errno int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(stat)), 0);
|
||||||
|
errno = int(e1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func Setfsgid(gid int) (errno int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_SETFSGID32, uintptr(gid), 0, 0);
|
||||||
|
errno = int(e1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func Setfsuid(uid int) (errno int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_SETFSUID32, uintptr(uid), 0, 0);
|
||||||
|
errno = int(e1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func Setgid(gid int) (errno int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_SETGID32, uintptr(gid), 0, 0);
|
||||||
|
errno = int(e1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func Setregid(rgid int, egid int) (errno int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_SETREGID32, uintptr(rgid), uintptr(egid), 0);
|
||||||
|
errno = int(e1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func Setresgid(rgid int, egid int, sgid int) (errno int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_SETRESGID32, uintptr(rgid), uintptr(egid), uintptr(sgid));
|
||||||
|
errno = int(e1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func Setresuid(ruid int, euid int, suid int) (errno int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_SETRESUID32, uintptr(ruid), uintptr(euid), uintptr(suid));
|
||||||
|
errno = int(e1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func Setreuid(ruid int, euid int) (errno int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_SETREUID32, uintptr(ruid), uintptr(euid), 0);
|
||||||
|
errno = int(e1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func Stat(path string, stat *Stat_t) (errno int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(stat)), 0);
|
||||||
|
errno = int(e1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func Statfs(path string, buf *Statfs_t) (errno int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(buf)), 0);
|
||||||
|
errno = int(e1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func getgroups(n int, list *_Gid_t) (nn int, errno int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_GETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0);
|
||||||
|
nn = int(r0);
|
||||||
|
errno = int(e1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func setgroups(n int, list *_Gid_t) (errno int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_SETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0);
|
||||||
|
errno = int(e1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -35,19 +35,6 @@ func Getcwd(buf []byte) (n int, errno int) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
func getgroups(n int, list *_Gid_t) (nn int, errno int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0);
|
|
||||||
nn = int(r0);
|
|
||||||
errno = int(e1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func setgroups(n int, list *_Gid_t) (errno int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0);
|
|
||||||
errno = int(e1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, errno int) {
|
func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, errno int) {
|
||||||
r0, r1, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0);
|
r0, r1, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0);
|
||||||
wpid = int(r0);
|
wpid = int(r0);
|
||||||
|
|
@ -86,12 +73,6 @@ func Chmod(path string, mode int) (errno int) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
func Chown(path string, uid int, gid int) (errno int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid));
|
|
||||||
errno = int(e1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Chroot(path string) (errno int) {
|
func Chroot(path string) (errno int) {
|
||||||
r0, r1, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
|
r0, r1, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0);
|
||||||
errno = int(e1);
|
errno = int(e1);
|
||||||
|
|
@ -182,12 +163,6 @@ func Fchmodat(dirfd int, path string, mode int, flags int) (errno int) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
func Fchown(fd int, uid int, gid int) (errno int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid));
|
|
||||||
errno = int(e1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Fchownat(dirfd int, path string, uid int, gid int, flags int) (errno int) {
|
func Fchownat(dirfd int, path string, uid int, gid int, flags int) (errno int) {
|
||||||
r0, r1, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid), uintptr(flags), 0);
|
r0, r1, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid), uintptr(flags), 0);
|
||||||
errno = int(e1);
|
errno = int(e1);
|
||||||
|
|
@ -207,18 +182,6 @@ func Fdatasync(fd int) (errno int) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
func Fstat(fd int, stat *Stat_t) (errno int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0);
|
|
||||||
errno = int(e1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Fstatfs(fd int, buf *Statfs_t) (errno int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0);
|
|
||||||
errno = int(e1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Fsync(fd int) (errno int) {
|
func Fsync(fd int) (errno int) {
|
||||||
r0, r1, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0);
|
r0, r1, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0);
|
||||||
errno = int(e1);
|
errno = int(e1);
|
||||||
|
|
@ -240,24 +203,6 @@ func Getdents(fd int, buf []byte) (n int, errno int) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
func Getegid() (egid int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_GETEGID, 0, 0, 0);
|
|
||||||
egid = int(r0);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Geteuid() (euid int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_GETEUID, 0, 0, 0);
|
|
||||||
euid = int(r0);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Getgid() (gid int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_GETGID, 0, 0, 0);
|
|
||||||
gid = int(r0);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Getpgid(pid int) (pgid int, errno int) {
|
func Getpgid(pid int) (pgid int, errno int) {
|
||||||
r0, r1, e1 := Syscall(SYS_GETPGID, uintptr(pid), 0, 0);
|
r0, r1, e1 := Syscall(SYS_GETPGID, uintptr(pid), 0, 0);
|
||||||
pgid = int(r0);
|
pgid = int(r0);
|
||||||
|
|
@ -307,12 +252,6 @@ func Gettimeofday(tv *Timeval) (errno int) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
func Getuid() (uid int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_GETUID, 0, 0, 0);
|
|
||||||
uid = int(r0);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Ioperm(from int, num int, on int) (errno int) {
|
func Ioperm(from int, num int, on int) (errno int) {
|
||||||
r0, r1, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on));
|
r0, r1, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on));
|
||||||
errno = int(e1);
|
errno = int(e1);
|
||||||
|
|
@ -340,24 +279,12 @@ func Klogctl(typ int, buf []byte) (n int, errno int) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
func Lchown(path string, uid int, gid int) (errno int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid));
|
|
||||||
errno = int(e1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Link(oldpath string, newpath string) (errno int) {
|
func Link(oldpath string, newpath string) (errno int) {
|
||||||
r0, r1, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(StringBytePtr(oldpath))), uintptr(unsafe.Pointer(StringBytePtr(newpath))), 0);
|
r0, r1, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(StringBytePtr(oldpath))), uintptr(unsafe.Pointer(StringBytePtr(newpath))), 0);
|
||||||
errno = int(e1);
|
errno = int(e1);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
func Lstat(path string, stat *Stat_t) (errno int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(stat)), 0);
|
|
||||||
errno = int(e1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Mkdir(path string, mode int) (errno int) {
|
func Mkdir(path string, mode int) (errno int) {
|
||||||
r0, r1, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), 0);
|
r0, r1, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), 0);
|
||||||
errno = int(e1);
|
errno = int(e1);
|
||||||
|
|
@ -468,13 +395,6 @@ func Rmdir(path string) (errno int) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
func Seek(fd int, offset int64, whence int) (off int64, errno int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence));
|
|
||||||
off = int64(r0);
|
|
||||||
errno = int(e1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, errno int) {
|
func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, errno int) {
|
||||||
r0, r1, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0);
|
r0, r1, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0);
|
||||||
n = int(r0);
|
n = int(r0);
|
||||||
|
|
@ -490,24 +410,6 @@ func Setdomainname(p []byte) (errno int) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
func Setfsgid(gid int) (errno int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0);
|
|
||||||
errno = int(e1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Setfsuid(uid int) (errno int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0);
|
|
||||||
errno = int(e1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Setgid(gid int) (errno int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_SETGID, uintptr(gid), 0, 0);
|
|
||||||
errno = int(e1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Sethostname(p []byte) (errno int) {
|
func Sethostname(p []byte) (errno int) {
|
||||||
var _p0 *byte;
|
var _p0 *byte;
|
||||||
if len(p) > 0 { _p0 = &p[0]; }
|
if len(p) > 0 { _p0 = &p[0]; }
|
||||||
|
|
@ -522,30 +424,6 @@ func Setpgid(pid int, pgid int) (errno int) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
func Setregid(rgid int, egid int) (errno int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0);
|
|
||||||
errno = int(e1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Setresgid(rgid int, egid int, sgid int) (errno int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid));
|
|
||||||
errno = int(e1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Setresuid(ruid int, euid int, suid int) (errno int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid));
|
|
||||||
errno = int(e1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Setreuid(ruid int, euid int) (errno int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0);
|
|
||||||
errno = int(e1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Setrlimit(resource int, rlim *Rlimit) (errno int) {
|
func Setrlimit(resource int, rlim *Rlimit) (errno int) {
|
||||||
r0, r1, e1 := Syscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0);
|
r0, r1, e1 := Syscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0);
|
||||||
errno = int(e1);
|
errno = int(e1);
|
||||||
|
|
@ -577,18 +455,6 @@ func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n i
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
func Stat(path string, stat *Stat_t) (errno int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(stat)), 0);
|
|
||||||
errno = int(e1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Statfs(path string, buf *Statfs_t) (errno int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(buf)), 0);
|
|
||||||
errno = int(e1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Symlink(oldpath string, newpath string) (errno int) {
|
func Symlink(oldpath string, newpath string) (errno int) {
|
||||||
r0, r1, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(StringBytePtr(oldpath))), uintptr(unsafe.Pointer(StringBytePtr(newpath))), 0);
|
r0, r1, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(StringBytePtr(oldpath))), uintptr(unsafe.Pointer(StringBytePtr(newpath))), 0);
|
||||||
errno = int(e1);
|
errno = int(e1);
|
||||||
|
|
@ -716,6 +582,139 @@ func write(fd int, p *byte, np int) (n int, errno int) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Chown(path string, uid int, gid int) (errno int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid));
|
||||||
|
errno = int(e1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func Fchown(fd int, uid int, gid int) (errno int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid));
|
||||||
|
errno = int(e1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func Fstat(fd int, stat *Stat_t) (errno int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0);
|
||||||
|
errno = int(e1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func Fstatfs(fd int, buf *Statfs_t) (errno int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0);
|
||||||
|
errno = int(e1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func Getegid() (egid int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_GETEGID, 0, 0, 0);
|
||||||
|
egid = int(r0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func Geteuid() (euid int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_GETEUID, 0, 0, 0);
|
||||||
|
euid = int(r0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func Getgid() (gid int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_GETGID, 0, 0, 0);
|
||||||
|
gid = int(r0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func Getuid() (uid int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_GETUID, 0, 0, 0);
|
||||||
|
uid = int(r0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func Lchown(path string, uid int, gid int) (errno int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid));
|
||||||
|
errno = int(e1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func Listen(s int, n int) (errno int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0);
|
||||||
|
errno = int(e1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func Lstat(path string, stat *Stat_t) (errno int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(stat)), 0);
|
||||||
|
errno = int(e1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func Seek(fd int, offset int64, whence int) (off int64, errno int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence));
|
||||||
|
off = int64(r0);
|
||||||
|
errno = int(e1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func Setfsgid(gid int) (errno int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0);
|
||||||
|
errno = int(e1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func Setfsuid(uid int) (errno int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0);
|
||||||
|
errno = int(e1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func Setgid(gid int) (errno int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_SETGID, uintptr(gid), 0, 0);
|
||||||
|
errno = int(e1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func Setregid(rgid int, egid int) (errno int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0);
|
||||||
|
errno = int(e1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func Setresgid(rgid int, egid int, sgid int) (errno int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid));
|
||||||
|
errno = int(e1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func Setresuid(ruid int, euid int, suid int) (errno int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid));
|
||||||
|
errno = int(e1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func Setreuid(ruid int, euid int) (errno int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0);
|
||||||
|
errno = int(e1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func Shutdown(fd int, how int) (errno int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0);
|
||||||
|
errno = int(e1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func Stat(path string, stat *Stat_t) (errno int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(stat)), 0);
|
||||||
|
errno = int(e1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func Statfs(path string, buf *Statfs_t) (errno int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(buf)), 0);
|
||||||
|
errno = int(e1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, errno int) {
|
func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, errno int) {
|
||||||
r0, r1, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)));
|
r0, r1, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)));
|
||||||
fd = int(r0);
|
fd = int(r0);
|
||||||
|
|
@ -735,9 +734,15 @@ func connect(s int, addr uintptr, addrlen _Socklen) (errno int) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
func socket(domain int, typ int, proto int) (fd int, errno int) {
|
func getgroups(n int, list *_Gid_t) (nn int, errno int) {
|
||||||
r0, r1, e1 := Syscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto));
|
r0, r1, e1 := Syscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0);
|
||||||
fd = int(r0);
|
nn = int(r0);
|
||||||
|
errno = int(e1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
func setgroups(n int, list *_Gid_t) (errno int) {
|
||||||
|
r0, r1, e1 := Syscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0);
|
||||||
errno = int(e1);
|
errno = int(e1);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -748,14 +753,9 @@ func setsockopt(s int, level int, name int, val uintptr, vallen int) (errno int)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
func Listen(s int, n int) (errno int) {
|
func socket(domain int, typ int, proto int) (fd int, errno int) {
|
||||||
r0, r1, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0);
|
r0, r1, e1 := Syscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto));
|
||||||
errno = int(e1);
|
fd = int(r0);
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
func Shutdown(fd int, how int) (errno int) {
|
|
||||||
r0, r1, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0);
|
|
||||||
errno = int(e1);
|
errno = int(e1);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -163,8 +163,8 @@ type Rusage struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type Rlimit struct {
|
type Rlimit struct {
|
||||||
Cur uint32;
|
Cur uint64;
|
||||||
Max uint32;
|
Max uint64;
|
||||||
}
|
}
|
||||||
|
|
||||||
type _C_int int32
|
type _C_int int32
|
||||||
|
|
@ -175,7 +175,7 @@ type Stat_t struct {
|
||||||
Dev uint64;
|
Dev uint64;
|
||||||
__pad1 uint16;
|
__pad1 uint16;
|
||||||
Pad0 [2]byte;
|
Pad0 [2]byte;
|
||||||
Ino uint32;
|
__st_ino uint32;
|
||||||
Mode uint32;
|
Mode uint32;
|
||||||
Nlink uint32;
|
Nlink uint32;
|
||||||
Uid uint32;
|
Uid uint32;
|
||||||
|
|
@ -183,24 +183,23 @@ type Stat_t struct {
|
||||||
Rdev uint64;
|
Rdev uint64;
|
||||||
__pad2 uint16;
|
__pad2 uint16;
|
||||||
Pad1 [2]byte;
|
Pad1 [2]byte;
|
||||||
Size int32;
|
Size int64;
|
||||||
Blksize int32;
|
Blksize int32;
|
||||||
Blocks int32;
|
Blocks int64;
|
||||||
Atim Timespec;
|
Atim Timespec;
|
||||||
Mtim Timespec;
|
Mtim Timespec;
|
||||||
Ctim Timespec;
|
Ctim Timespec;
|
||||||
__unused4 uint32;
|
Ino uint64;
|
||||||
__unused5 uint32;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type Statfs_t struct {
|
type Statfs_t struct {
|
||||||
Type int32;
|
Type int32;
|
||||||
Bsize int32;
|
Bsize int32;
|
||||||
Blocks uint32;
|
Blocks uint64;
|
||||||
Bfree uint32;
|
Bfree uint64;
|
||||||
Bavail uint32;
|
Bavail uint64;
|
||||||
Files uint32;
|
Files uint64;
|
||||||
Ffree uint32;
|
Ffree uint64;
|
||||||
Fsid [8]byte /* __fsid_t */;
|
Fsid [8]byte /* __fsid_t */;
|
||||||
Namelen int32;
|
Namelen int32;
|
||||||
Frsize int32;
|
Frsize int32;
|
||||||
|
|
@ -208,8 +207,8 @@ type Statfs_t struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type Dirent struct {
|
type Dirent struct {
|
||||||
Ino uint32;
|
Ino uint64;
|
||||||
Off int32;
|
Off int64;
|
||||||
Reclen uint16;
|
Reclen uint16;
|
||||||
Type uint8;
|
Type uint8;
|
||||||
Name [256]int8;
|
Name [256]int8;
|
||||||
|
|
@ -254,7 +253,7 @@ type Linger struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type FdSet struct {
|
type FdSet struct {
|
||||||
__fds_bits [32]int32;
|
Bits [32]int32;
|
||||||
}
|
}
|
||||||
|
|
||||||
type Sysinfo_t struct {
|
type Sysinfo_t struct {
|
||||||
|
|
@ -280,7 +279,7 @@ type Utsname struct {
|
||||||
Release [65]int8;
|
Release [65]int8;
|
||||||
Version [65]int8;
|
Version [65]int8;
|
||||||
Machine [65]int8;
|
Machine [65]int8;
|
||||||
__domainname [65]int8;
|
Domainname [65]int8;
|
||||||
}
|
}
|
||||||
|
|
||||||
type Ustat_t struct {
|
type Ustat_t struct {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue