Commit 76c87d58 authored by Russ Cox's avatar Russ Cox

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
parent cb897436
...@@ -61,7 +61,7 @@ func TestStat(t *testing.T) { ...@@ -61,7 +61,7 @@ func TestStat(t *testing.T) {
} }
filesize := size("/etc/passwd", t); filesize := size("/etc/passwd", t);
if dir.Size != filesize { if dir.Size != filesize {
t.Error("size should be ", filesize, "; is", dir.Size); t.Error("size should be", filesize, "; is", dir.Size);
} }
} }
...@@ -80,7 +80,7 @@ func TestFstat(t *testing.T) { ...@@ -80,7 +80,7 @@ func TestFstat(t *testing.T) {
} }
filesize := size("/etc/passwd", t); filesize := size("/etc/passwd", t);
if dir.Size != filesize { if dir.Size != filesize {
t.Error("size should be ", filesize, "; is", dir.Size); t.Error("size should be", filesize, "; is", dir.Size);
} }
} }
...@@ -94,7 +94,7 @@ func TestLstat(t *testing.T) { ...@@ -94,7 +94,7 @@ func TestLstat(t *testing.T) {
} }
filesize := size("/etc/passwd", t); filesize := size("/etc/passwd", t);
if dir.Size != filesize { if dir.Size != filesize {
t.Error("size should be ", filesize, "; is", dir.Size); t.Error("size should be", filesize, "; is", dir.Size);
} }
} }
...@@ -367,13 +367,13 @@ func TestChmod(t *testing.T) { ...@@ -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) { ...@@ -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) { ...@@ -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) ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 @@ ...@@ -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: ...@@ -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: ...@@ -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 ...@@ -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(<>) { ...@@ -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) { ...@@ -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 ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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 ...@@ -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 @@ ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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);
......
// 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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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) { ...@@ -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 ...@@ -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) { ...@@ -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,27 +734,28 @@ func connect(s int, addr uintptr, addrlen _Socklen) (errno int) { ...@@ -735,27 +734,28 @@ 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); errno = int(e1);
return; return;
} }
func setsockopt(s int, level int, name int, val uintptr, vallen int) (errno int) { func setgroups(n int, list *_Gid_t) (errno int) {
r0, r1, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0); r0, r1, e1 := Syscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0);
errno = int(e1); errno = int(e1);
return; return;
} }
func Listen(s int, n int) (errno int) { func setsockopt(s int, level int, name int, val uintptr, vallen int) (errno int) {
r0, r1, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0); r0, r1, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0);
errno = int(e1); errno = int(e1);
return; return;
} }
func Shutdown(fd int, how int) (errno int) { func socket(domain int, typ int, proto int) (fd int, errno int) {
r0, r1, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0); r0, r1, e1 := Syscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto));
fd = int(r0);
errno = int(e1); errno = int(e1);
return; return;
} }
......
...@@ -163,8 +163,8 @@ type Rusage struct { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment