Commit 382a19c3 authored by Kai Backman's avatar Kai Backman

pkg/sort compiling and some progress on syscall. mostly

re-enabling and massaging code.

R=rsc
APPROVED=rsc
DELTA=2496  (1880 added, 330 deleted, 286 changed)
OCL=33487
CL=33504
parent 6c7e90e7
......@@ -14,7 +14,7 @@ cgen(Node *n, Node *res)
{
Node *nl, *nr, *r;
Node n1, n2;
int a;
int a, w;
Prog *p1, *p2, *p3;
Addr addr;
......@@ -69,7 +69,7 @@ cgen(Node *n, Node *res)
goto gen;
a = optoas(OAS, res->type);
if(sudoaddable(a, res, &addr)) {
if(sudoaddable(a, res, &addr, &w)) {
if(n->op != OREGISTER) {
regalloc(&n2, res->type, N);
cgen(n, &n2);
......@@ -78,6 +78,7 @@ cgen(Node *n, Node *res)
} else
p1 = gins(a, n, N);
p1->to = addr;
p1->reg = w;
if(debug['g'])
print("%P [ignore previous line]\n", p1);
sudoclean();
......@@ -124,14 +125,16 @@ cgen(Node *n, Node *res)
}
a = optoas(OAS, n->type);
if(sudoaddable(a, n, &addr)) {
if(sudoaddable(a, n, &addr, &w)) {
if(res->op == OREGISTER) {
p1 = gins(a, N, res);
p1->from = addr;
p1->reg = w;
} else {
regalloc(&n2, n->type, N);
p1 = gins(a, N, &n2);
p1->from = addr;
p1->reg = w;
gins(a, &n2, res);
regfree(&n2);
}
......@@ -181,8 +184,11 @@ cgen(Node *n, Node *res)
goto ret;
case OMINUS:
a = optoas(n->op, nl->type);
goto uop;
nr = nl;
nl = &n1;
nodconst(nl, nr->type, 0);
a = optoas(OSUB, nr->type);
goto abop;
// symmetric binary
case OAND:
......@@ -314,9 +320,10 @@ abop: // asymmetric binary
regalloc(&n1, nl->type, res);
cgen(nl, &n1);
if(sudoaddable(a, nr, &addr)) {
if(sudoaddable(a, nr, &addr, &w)) {
p1 = gins(a, N, &n1);
p1->from = addr;
p1->reg = w;
gmove(&n1, res);
sudoclean();
regfree(&n1);
......@@ -454,7 +461,7 @@ agen(Node *n, Node *res)
n1.op = OINDREG;
n1.type = types[tptr];
n1.xoffset = Array_nel;
nodconst(&n2, types[TUINT64], v);
nodconst(&n2, types[TUINT32], v);
gins(optoas(OCMP, types[TUINT32]), &n1, &n2);
p1 = gbranch(optoas(OGT, types[TUINT32]), T);
ginscall(throwindex, 0);
......@@ -484,9 +491,9 @@ agen(Node *n, Node *res)
}
// type of the index
t = types[TUINT64];
t = types[TUINT32];
if(issigned[n1.type->etype])
t = types[TINT64];
t = types[TINT32];
regalloc(&n2, t, &n1); // i
gmove(&n1, &n2);
......@@ -500,7 +507,7 @@ agen(Node *n, Node *res)
n1.type = types[tptr];
n1.xoffset = Array_nel;
} else
nodconst(&n1, types[TUINT64], nl->type->bound);
nodconst(&n1, types[TUINT32], nl->type->bound);
gins(optoas(OCMP, types[TUINT32]), &n2, &n1);
p1 = gbranch(optoas(OLT, types[TUINT32]), T);
ginscall(throwindex, 0);
......@@ -548,7 +555,7 @@ agen(Node *n, Node *res)
}
cgen(n->heapaddr, res);
if(n->xoffset != 0) {
nodconst(&n1, types[TINT64], n->xoffset);
nodconst(&n1, types[TINT32], n->xoffset);
gins(optoas(OADD, types[tptr]), &n1, res);
}
break;
......@@ -560,7 +567,7 @@ agen(Node *n, Node *res)
case ODOT:
agen(nl, res);
if(n->xoffset != 0) {
nodconst(&n1, types[TINT64], n->xoffset);
nodconst(&n1, types[TINT32], n->xoffset);
gins(optoas(OADD, types[tptr]), &n1, res);
}
break;
......@@ -568,7 +575,7 @@ agen(Node *n, Node *res)
case ODOTPTR:
cgen(nl, res);
if(n->xoffset != 0) {
nodconst(&n1, types[TINT64], n->xoffset);
nodconst(&n1, types[TINT32], n->xoffset);
gins(optoas(OADD, types[tptr]), &n1, res);
}
break;
......
......@@ -132,7 +132,7 @@ void buildtxt(void);
Plist* newplist(void);
int isfat(Type*);
void sudoclean(void);
int sudoaddable(int, Node*, Addr*);
int sudoaddable(int, Node*, Addr*, int*);
void afunclit(Addr*);
void datagostring(Strlit*, Addr*);
......
......@@ -147,52 +147,51 @@ ginscall(Node *f, int proc)
void
cgen_callinter(Node *n, Node *res, int proc)
{
fatal("cgen_callinter not implemented");
// Node *i, *f;
// Node tmpi, nodo, nodr, nodsp;
Node *i, *f;
Node tmpi, nodo, nodr, nodsp;
// i = n->left;
// if(i->op != ODOTINTER)
// fatal("cgen_callinter: not ODOTINTER %O", i->op);
i = n->left;
if(i->op != ODOTINTER)
fatal("cgen_callinter: not ODOTINTER %O", i->op);
// f = i->right; // field
// if(f->op != ONAME)
// fatal("cgen_callinter: not ONAME %O", f->op);
f = i->right; // field
if(f->op != ONAME)
fatal("cgen_callinter: not ONAME %O", f->op);
// i = i->left; // interface
i = i->left; // interface
// if(!i->addable) {
// tempname(&tmpi, i->type);
// cgen(i, &tmpi);
// i = &tmpi;
// }
if(!i->addable) {
tempname(&tmpi, i->type);
cgen(i, &tmpi);
i = &tmpi;
}
// genlist(n->list); // args
genlist(n->list); // args
// regalloc(&nodr, types[tptr], res);
// regalloc(&nodo, types[tptr], &nodr);
// nodo.op = OINDREG;
regalloc(&nodr, types[tptr], res);
regalloc(&nodo, types[tptr], &nodr);
nodo.op = OINDREG;
// agen(i, &nodr); // REG = &inter
agen(i, &nodr); // REG = &inter
// nodindreg(&nodsp, types[tptr], D_SP);
// nodo.xoffset += widthptr;
// cgen(&nodo, &nodsp); // 0(SP) = 8(REG) -- i.s
nodindreg(&nodsp, types[tptr], REGSP);
nodo.xoffset += widthptr;
cgen(&nodo, &nodsp); // 0(SP) = 8(REG) -- i.s
// nodo.xoffset -= widthptr;
// cgen(&nodo, &nodr); // REG = 0(REG) -- i.m
nodo.xoffset -= widthptr;
cgen(&nodo, &nodr); // REG = 0(REG) -- i.m
// nodo.xoffset = n->left->xoffset + 4*widthptr;
// cgen(&nodo, &nodr); // REG = 32+offset(REG) -- i.m->fun[f]
nodo.xoffset = n->left->xoffset + 4*widthptr;
cgen(&nodo, &nodr); // REG = 32+offset(REG) -- i.m->fun[f]
// // BOTCH nodr.type = fntype;
// nodr.type = n->left->type;
// ginscall(&nodr, proc);
// BOTCH nodr.type = fntype;
nodr.type = n->left->type;
ginscall(&nodr, proc);
// regfree(&nodr);
// regfree(&nodo);
regfree(&nodr);
regfree(&nodo);
// setmaxarg(n->left->type);
setmaxarg(n->left->type);
}
/*
......@@ -289,34 +288,33 @@ cgen_callret(Node *n, Node *res)
void
cgen_aret(Node *n, Node *res)
{
fatal("cgen_aret not implemented");
// Node nod1, nod2;
// Type *fp, *t;
// Iter flist;
// t = n->left->type;
// if(isptr[t->etype])
// t = t->type;
// fp = structfirst(&flist, getoutarg(t));
// if(fp == T)
// fatal("cgen_aret: nil");
// memset(&nod1, 0, sizeof(nod1));
// nod1.op = OINDREG;
// nod1.val.u.reg = D_SP;
// nod1.addable = 1;
// nod1.xoffset = fp->width;
// nod1.type = fp->type;
// if(res->op != OREGISTER) {
// regalloc(&nod2, types[tptr], res);
// gins(ALEAL, &nod1, &nod2);
// gins(AMOVL, &nod2, res);
// regfree(&nod2);
// } else
// gins(ALEAL, &nod1, res);
Node nod1, nod2;
Type *fp, *t;
Iter flist;
t = n->left->type;
if(isptr[t->etype])
t = t->type;
fp = structfirst(&flist, getoutarg(t));
if(fp == T)
fatal("cgen_aret: nil");
memset(&nod1, 0, sizeof(nod1));
nod1.op = OINDREG;
nod1.val.u.reg = REGSP;
nod1.addable = 1;
nod1.xoffset = fp->width;
nod1.type = fp->type;
if(res->op != OREGISTER) {
regalloc(&nod2, types[tptr], res);
agen(&nod1, &nod2);
gins(AMOVW, &nod2, res);
regfree(&nod2);
} else
agen(&nod1, res);
}
/*
......@@ -342,7 +340,7 @@ cgen_asop(Node *n)
Node *nl, *nr;
// Prog *p1;
Addr addr;
int a;
int a, w;
nl = n->left;
nr = n->right;
......@@ -380,12 +378,13 @@ cgen_asop(Node *n)
goto ret;
}
if(nr->ullman < UINF)
if(sudoaddable(a, nl, &addr)) {
if(sudoaddable(a, nl, &addr, &w)) {
fatal("cgen_asop sudoaddable not implemented");
// regalloc(&n2, nr->type, N);
// cgen(nr, &n2);
// p1 = gins(a, &n2, N);
// p1->to = addr;
// p1->reg = w;
// regfree(&n2);
// sudoclean();
// goto ret;
......@@ -434,83 +433,40 @@ samereg(Node *a, Node *b)
}
/*
* generate division.
* caller must set:
* ax = allocated AX register
* dx = allocated DX register
* generates one of:
* generate division according to op, one of:
* res = nl / nr
* res = nl % nr
* according to op.
*/
// TODO(kaib): This probably isn't needed for arm, delete once you complete cgen_div.
// TODO(kaib): rip out and just insert into cgen
void
dodiv(int op, Node *nl, Node *nr, Node *res, Node *ax, Node *dx)
cgen_div(int op, Node *nl, Node *nr, Node *res)
{
int a;
Node n3, n4;
Type *t;
t = nl->type;
if(t->width == 1) {
if(issigned[t->etype])
t = types[TINT32];
else
t = types[TUINT32];
Node nod, nod1;
Prog* p;
Addr ta;
if(res == Z) {
// TODO(kaib): add back warning for null
// nullwarn(l, r);
return;
}
a = optoas(op, t);
regalloc(&n3, nr->type, N);
if(nl->ullman >= nr->ullman) {
cgen(nl, ax);
if(!issigned[t->etype]) {
nodconst(&n4, t, 0);
gmove(&n4, dx);
} else
gins(optoas(OEXTEND, t), N, N);
cgen(nr, &n3);
regalloc(&nod, nl->type, res);
cgen(nl, &nod);
regalloc(&nod1, nr->type, Z);
cgen(nr, &nod1);
gins(optoas(op, nod1.type), &nod1, &nod);
} else {
cgen(nr, &n3);
cgen(nl, ax);
if(!issigned[t->etype]) {
nodconst(&n4, t, 0);
gmove(&n4, dx);
} else
gins(optoas(OEXTEND, t), N, N);
regalloc(&nod, nr->type, res);
cgen(nr, &nod);
regalloc(&nod1, nl->type, Z);
cgen(nl, &nod1);
p = gins(optoas(op, nod.type), &nod, &nod);
naddr(&nod1, &ta);
p->reg = ta.reg;
}
gins(a, &n3, N);
regfree(&n3);
if(op == ODIV)
gmove(ax, res);
else
gmove(dx, res);
}
/*
* generate division according to op, one of:
* res = nl / nr
* res = nl % nr
*/
void
cgen_div(int op, Node *nl, Node *nr, Node *res)
{
fatal("cgen_div not implemented");
// Node ax, dx;
// int rax, rdx;
// rax = reg[D_AX];
// rdx = reg[D_DX];
// nodreg(&ax, types[TINT64], D_AX);
// nodreg(&dx, types[TINT64], D_DX);
// regalloc(&ax, nl->type, &ax);
// regalloc(&dx, nl->type, &dx);
// dodiv(op, nl, nr, res, &ax, &dx);
// regfree(&ax);
// regfree(&dx);
gins(optoas(OAS, nod.type), &nod, res);
regfree(&nod);
regfree(&nod1);
}
/*
......@@ -518,6 +474,7 @@ cgen_div(int op, Node *nl, Node *nr, Node *res)
* res = nl << nr
* res = nl >> nr
*/
// TODO(kaib): rip out and replace with simple isntruction
void
cgen_shift(int op, Node *nl, Node *nr, Node *res)
{
......@@ -588,6 +545,7 @@ cgen_shift(int op, Node *nl, Node *nr, Node *res)
* no byte multiply instruction so have to do
* 16-bit multiply and take bottom half.
*/
// TODO(kaib): figure out if we can replace this normal multiply
void
cgen_bmul(int op, Node *nl, Node *nr, Node *res)
{
......
This diff is collapsed.
......@@ -21,7 +21,9 @@ chmod +x $GOBIN/quietgcc
# TODO(kaib): converge with normal build
#for i in lib9 libbio libmach libregexp cmd pkg cmd/ebnflint cmd/godoc cmd/gofmt
for i in lib9 libbio libmach libregexp cmd pkg/runtime
for i in lib9 libbio libmach libregexp cmd pkg/runtime pkg/sync pkg/once pkg/malloc pkg/sort pkg/unicode
# pkg/hash
# pkg/math
do
# The ( ) here are to preserve the current directory
# for the next round despite the cd $i below.
......
// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package syscall
import "unsafe"
func Getpagesize() int {
return 4096
}
func TimespecToNsec(ts Timespec) int64 {
return int64(ts.Sec)*1e9 + int64(ts.Nsec);
}
func NsecToTimespec(nsec int64) (ts Timespec) {
ts.Sec = int32(nsec / 1e9);
ts.Nsec = int32(nsec % 1e9);
return;
}
func TimevalToNsec(tv Timeval) int64 {
return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3;
}
func NsecToTimeval(nsec int64) (tv Timeval) {
nsec += 999; // round up to microsecond
tv.Sec = int32(nsec/1e9);
tv.Usec = int32(nsec%1e9 / 1e3);
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
//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, errno int) = SYS__NEWSELECT
// 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,
// I think because the 5-register system call interface can't handle
// the 6-argument calls like sendto and recvfrom. Instead the
// arguments to the underlying system call are the number below
// and a pointer to an array of uintptr. We hide the pointer in the
// socketcall assembly to avoid allocation on every system call.
const (
// see linux/net.h
_SOCKET = 1;
_BIND = 2;
_CONNECT = 3;
_LISTEN = 4;
_ACCEPT = 5;
_GETSOCKNAME = 6;
_GETPEERNAME = 7;
_SOCKETPAIR = 8;
_SEND = 9;
_RECV = 10;
_SENDTO = 11;
_RECVFROM = 12;
_SHUTDOWN = 13;
_SETSOCKOPT = 14;
_GETSOCKOPT = 15;
_SENDMSG = 16;
_RECVMSG = 17;
)
func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, errno int)
func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, errno int) {
fd, errno = socketcall(_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0);
return;
}
func getsockname(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (errno int) {
var _ int;
_, errno = socketcall(_GETSOCKNAME, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0);
return;
}
func getpeername(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (errno int) {
var _ int;
_, errno = socketcall(_GETPEERNAME, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0);
return;
}
func bind(s int, addr uintptr, addrlen _Socklen) (errno int) {
var _ int;
_, errno = socketcall(_BIND, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0);
return;
}
func connect(s int, addr uintptr, addrlen _Socklen) (errno int) {
var _ int;
_, errno = socketcall(_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0);
return;
}
func socket(domain int, typ int, proto int) (fd int, errno int) {
fd, errno = socketcall(_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0);
return;
}
func setsockopt(s int, level int, name int, val uintptr, vallen int) (errno int) {
var _ int;
_, errno = socketcall(_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0);
return;
}
func Listen(s int, n int) (errno int) {
var _ int;
_, errno = socketcall(_LISTEN, uintptr(s), uintptr(n), 0, 0, 0, 0);
return;
}
// mkerrors.sh
// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
// godefs -gsyscall _errors.c
// MACHINE GENERATED - DO NOT EDIT.
package syscall
// Constants
const (
EMULTIHOP = 0x48;
EUNATCH = 0x31;
EAFNOSUPPORT = 0x61;
EREMCHG = 0x4e;
EACCES = 0xd;
EL3RST = 0x2f;
EDESTADDRREQ = 0x59;
EILSEQ = 0x54;
ESPIPE = 0x1d;
EMLINK = 0x1f;
EOWNERDEAD = 0x82;
ENOTTY = 0x19;
EBADE = 0x34;
EBADF = 0x9;
EBADR = 0x35;
EADV = 0x44;
ERANGE = 0x22;
ECANCELED = 0x7d;
ETXTBSY = 0x1a;
ENOMEM = 0xc;
EINPROGRESS = 0x73;
ENOTBLK = 0xf;
EPROTOTYPE = 0x5b;
ERESTART = 0x55;
EISNAM = 0x78;
ENOMSG = 0x2a;
EALREADY = 0x72;
ETIMEDOUT = 0x6e;
ENODATA = 0x3d;
EINTR = 0x4;
ENOLINK = 0x43;
EPERM = 0x1;
ELOOP = 0x28;
ENETDOWN = 0x64;
ESTALE = 0x74;
ENOTSOCK = 0x58;
ENOSR = 0x3f;
ECHILD = 0xa;
ELNRNG = 0x30;
EPIPE = 0x20;
EBADMSG = 0x4a;
EBFONT = 0x3b;
EREMOTE = 0x42;
ETOOMANYREFS = 0x6d;
EPFNOSUPPORT = 0x60;
ENONET = 0x40;
EXFULL = 0x36;
EBADSLT = 0x39;
ENOTNAM = 0x76;
ELIBEXEC = 0x53;
ENOCSI = 0x32;
ENOTEMPTY = 0x27;
EADDRINUSE = 0x62;
ENETRESET = 0x66;
EISDIR = 0x15;
EIDRM = 0x2b;
ECOMM = 0x46;
EBADFD = 0x4d;
EL2HLT = 0x33;
ENOKEY = 0x7e;
EINVAL = 0x16;
ESHUTDOWN = 0x6c;
EKEYREJECTED = 0x81;
ELIBSCN = 0x51;
ENAVAIL = 0x77;
ENOSTR = 0x3c;
EOVERFLOW = 0x4b;
EUCLEAN = 0x75;
ENOMEDIUM = 0x7b;
EBUSY = 0x10;
EPROTO = 0x47;
ENODEV = 0x13;
EKEYEXPIRED = 0x7f;
EROFS = 0x1e;
ELIBACC = 0x4f;
E2BIG = 0x7;
EDEADLK = 0x23;
ECONNRESET = 0x68;
ENXIO = 0x6;
EBADRQC = 0x38;
ENAMETOOLONG = 0x24;
ESOCKTNOSUPPORT = 0x5e;
EDOTDOT = 0x49;
EADDRNOTAVAIL = 0x63;
ETIME = 0x3e;
EPROTONOSUPPORT = 0x5d;
ENOTRECOVERABLE = 0x83;
EIO = 0x5;
ENETUNREACH = 0x65;
EXDEV = 0x12;
EDQUOT = 0x7a;
EREMOTEIO = 0x79;
ENOSPC = 0x1c;
ENOEXEC = 0x8;
EMSGSIZE = 0x5a;
EDOM = 0x21;
EFBIG = 0x1b;
ESRCH = 0x3;
ECHRNG = 0x2c;
EHOSTDOWN = 0x70;
ENOLCK = 0x25;
ENFILE = 0x17;
ENOSYS = 0x26;
ENOTCONN = 0x6b;
ENOTSUP = 0x5f;
ESRMNT = 0x45;
EDEADLOCK = 0x23;
ECONNABORTED = 0x67;
ENOANO = 0x37;
EISCONN = 0x6a;
EUSERS = 0x57;
ENOPROTOOPT = 0x5c;
EMFILE = 0x18;
ENOBUFS = 0x69;
EL3HLT = 0x2e;
EFAULT = 0xe;
EWOULDBLOCK = 0xb;
ELIBBAD = 0x50;
ESTRPIPE = 0x56;
ECONNREFUSED = 0x6f;
EAGAIN = 0xb;
ELIBMAX = 0x52;
EEXIST = 0x11;
EL2NSYNC = 0x2d;
ENOENT = 0x2;
ENOPKG = 0x41;
EKEYREVOKED = 0x80;
EHOSTUNREACH = 0x71;
ENOTUNIQ = 0x4c;
EOPNOTSUPP = 0x5f;
ENOTDIR = 0x14;
EMEDIUMTYPE = 0x7c;
SIGBUS = 0x7;
SIGTTIN = 0x15;
SIGPROF = 0x1b;
SIGFPE = 0x8;
SIGHUP = 0x1;
SIGTTOU = 0x16;
SIGSTKFLT = 0x10;
SIGUSR1 = 0xa;
SIGURG = 0x17;
SIGQUIT = 0x3;
SIGCLD = 0x11;
SIGIO = 0x1d;
SIGABRT = 0x6;
SIGUSR2 = 0xc;
SIGTRAP = 0x5;
SIGVTALRM = 0x1a;
SIGPOLL = 0x1d;
SIGSEGV = 0xb;
SIGCONT = 0x12;
SIGPIPE = 0xd;
SIGWINCH = 0x1c;
SIGXFSZ = 0x19;
SIGCHLD = 0x11;
SIGSYS = 0x1f;
SIGSTOP = 0x13;
SIGALRM = 0xe;
SIGTSTP = 0x14;
SIGKILL = 0x9;
SIGXCPU = 0x18;
SIGUNUSED = 0x1f;
SIGPWR = 0x1e;
SIGILL = 0x4;
SIGINT = 0x2;
SIGIOT = 0x6;
SIGTERM = 0xf;
)
// Types
// Error table
var errors = [...]string {
72: "multihop attempted",
49: "protocol driver not attached",
97: "address family not supported by protocol",
78: "remote address changed",
13: "permission denied",
47: "level 3 reset",
89: "destination address required",
84: "invalid or incomplete multibyte or wide character",
29: "illegal seek",
31: "too many links",
130: "owner died",
25: "inappropriate ioctl for device",
52: "invalid exchange",
9: "bad file descriptor",
53: "invalid request descriptor",
68: "advertise error",
34: "numerical result out of range",
125: "operation canceled",
26: "text file busy",
12: "cannot allocate memory",
115: "operation now in progress",
15: "block device required",
91: "protocol wrong type for socket",
85: "interrupted system call should be restarted",
120: "is a named type file",
42: "no message of desired type",
114: "operation already in progress",
110: "connection timed out",
61: "no data available",
4: "interrupted system call",
67: "link has been severed",
1: "operation not permitted",
40: "too many levels of symbolic links",
100: "network is down",
116: "stale NFS file handle",
88: "socket operation on non-socket",
63: "out of streams resources",
10: "no child processes",
48: "link number out of range",
32: "broken pipe",
74: "bad message",
59: "bad font file format",
66: "object is remote",
109: "too many references: cannot splice",
96: "protocol family not supported",
64: "machine is not on the network",
54: "exchange full",
57: "invalid slot",
118: "not a XENIX named type file",
83: "cannot exec a shared library directly",
50: "no CSI structure available",
39: "directory not empty",
98: "address already in use",
102: "network dropped connection on reset",
21: "is a directory",
43: "identifier removed",
70: "communication error on send",
77: "file descriptor in bad state",
51: "level 2 halted",
126: "required key not available",
22: "invalid argument",
108: "cannot send after transport endpoint shutdown",
129: "key was rejected by service",
81: ".lib section in a.out corrupted",
119: "no XENIX semaphores available",
60: "device not a stream",
75: "value too large for defined data type",
117: "structure needs cleaning",
123: "no medium found",
16: "device or resource busy",
71: "protocol error",
19: "no such device",
127: "key has expired",
30: "read-only file system",
79: "can not access a needed shared library",
7: "argument list too long",
35: "resource deadlock avoided",
104: "connection reset by peer",
6: "no such device or address",
56: "invalid request code",
36: "file name too long",
94: "socket type not supported",
73: "RFS specific error",
99: "cannot assign requested address",
62: "timer expired",
93: "protocol not supported",
131: "state not recoverable",
5: "input/output error",
101: "network is unreachable",
18: "invalid cross-device link",
122: "disk quota exceeded",
121: "remote I/O error",
28: "no space left on device",
8: "exec format error",
90: "message too long",
33: "numerical argument out of domain",
27: "file too large",
3: "no such process",
44: "channel number out of range",
112: "host is down",
37: "no locks available",
23: "too many open files in system",
38: "function not implemented",
107: "transport endpoint is not connected",
95: "operation not supported",
69: "srmount error",
103: "software caused connection abort",
55: "no anode",
106: "transport endpoint is already connected",
87: "too many users",
92: "protocol not available",
24: "too many open files",
105: "no buffer space available",
46: "level 3 halted",
14: "bad address",
11: "resource temporarily unavailable",
80: "accessing a corrupted shared library",
86: "streams pipe error",
111: "connection refused",
82: "attempting to link in too many shared libraries",
17: "file exists",
45: "level 2 not synchronized",
2: "no such file or directory",
65: "package not installed",
128: "key has been revoked",
113: "no route to host",
76: "name not unique on network",
20: "not a directory",
124: "wrong medium type",
}
This diff is collapsed.
// mksysnum_linux.sh /usr/include/asm/unistd_32.h
// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
package syscall
const(
SYS_RESTART_SYSCALL = 0;
SYS_EXIT = 1;
SYS_FORK = 2;
SYS_READ = 3;
SYS_WRITE = 4;
SYS_OPEN = 5;
SYS_CLOSE = 6;
SYS_WAITPID = 7;
SYS_CREAT = 8;
SYS_LINK = 9;
SYS_UNLINK = 10;
SYS_EXECVE = 11;
SYS_CHDIR = 12;
SYS_TIME = 13;
SYS_MKNOD = 14;
SYS_CHMOD = 15;
SYS_LCHOWN = 16;
SYS_BREAK = 17;
SYS_OLDSTAT = 18;
SYS_LSEEK = 19;
SYS_GETPID = 20;
SYS_MOUNT = 21;
SYS_UMOUNT = 22;
SYS_SETUID = 23;
SYS_GETUID = 24;
SYS_STIME = 25;
SYS_PTRACE = 26;
SYS_ALARM = 27;
SYS_OLDFSTAT = 28;
SYS_PAUSE = 29;
SYS_UTIME = 30;
SYS_STTY = 31;
SYS_GTTY = 32;
SYS_ACCESS = 33;
SYS_NICE = 34;
SYS_FTIME = 35;
SYS_SYNC = 36;
SYS_KILL = 37;
SYS_RENAME = 38;
SYS_MKDIR = 39;
SYS_RMDIR = 40;
SYS_DUP = 41;
SYS_PIPE = 42;
SYS_TIMES = 43;
SYS_PROF = 44;
SYS_BRK = 45;
SYS_SETGID = 46;
SYS_GETGID = 47;
SYS_SIGNAL = 48;
SYS_GETEUID = 49;
SYS_GETEGID = 50;
SYS_ACCT = 51;
SYS_UMOUNT2 = 52;
SYS_LOCK = 53;
SYS_IOCTL = 54;
SYS_FCNTL = 55;
SYS_MPX = 56;
SYS_SETPGID = 57;
SYS_ULIMIT = 58;
SYS_OLDOLDUNAME = 59;
SYS_UMASK = 60;
SYS_CHROOT = 61;
SYS_USTAT = 62;
SYS_DUP2 = 63;
SYS_GETPPID = 64;
SYS_GETPGRP = 65;
SYS_SETSID = 66;
SYS_SIGACTION = 67;
SYS_SGETMASK = 68;
SYS_SSETMASK = 69;
SYS_SETREUID = 70;
SYS_SETREGID = 71;
SYS_SIGSUSPEND = 72;
SYS_SIGPENDING = 73;
SYS_SETHOSTNAME = 74;
SYS_SETRLIMIT = 75;
SYS_GETRLIMIT = 76;
SYS_GETRUSAGE = 77;
SYS_GETTIMEOFDAY = 78;
SYS_SETTIMEOFDAY = 79;
SYS_GETGROUPS = 80;
SYS_SETGROUPS = 81;
SYS_SELECT = 82;
SYS_SYMLINK = 83;
SYS_OLDLSTAT = 84;
SYS_READLINK = 85;
SYS_USELIB = 86;
SYS_SWAPON = 87;
SYS_REBOOT = 88;
SYS_READDIR = 89;
SYS_MMAP = 90;
SYS_MUNMAP = 91;
SYS_TRUNCATE = 92;
SYS_FTRUNCATE = 93;
SYS_FCHMOD = 94;
SYS_FCHOWN = 95;
SYS_GETPRIORITY = 96;
SYS_SETPRIORITY = 97;
SYS_PROFIL = 98;
SYS_STATFS = 99;
SYS_FSTATFS = 100;
SYS_IOPERM = 101;
SYS_SOCKETCALL = 102;
SYS_SYSLOG = 103;
SYS_SETITIMER = 104;
SYS_GETITIMER = 105;
SYS_STAT = 106;
SYS_LSTAT = 107;
SYS_FSTAT = 108;
SYS_OLDUNAME = 109;
SYS_IOPL = 110;
SYS_VHANGUP = 111;
SYS_IDLE = 112;
SYS_VM86OLD = 113;
SYS_WAIT4 = 114;
SYS_SWAPOFF = 115;
SYS_SYSINFO = 116;
SYS_IPC = 117;
SYS_FSYNC = 118;
SYS_SIGRETURN = 119;
SYS_CLONE = 120;
SYS_SETDOMAINNAME = 121;
SYS_UNAME = 122;
SYS_MODIFY_LDT = 123;
SYS_ADJTIMEX = 124;
SYS_MPROTECT = 125;
SYS_SIGPROCMASK = 126;
SYS_CREATE_MODULE = 127;
SYS_INIT_MODULE = 128;
SYS_DELETE_MODULE = 129;
SYS_GET_KERNEL_SYMS = 130;
SYS_QUOTACTL = 131;
SYS_GETPGID = 132;
SYS_FCHDIR = 133;
SYS_BDFLUSH = 134;
SYS_SYSFS = 135;
SYS_PERSONALITY = 136;
SYS_AFS_SYSCALL = 137;
SYS_SETFSUID = 138;
SYS_SETFSGID = 139;
SYS__LLSEEK = 140;
SYS_GETDENTS = 141;
SYS__NEWSELECT = 142;
SYS_FLOCK = 143;
SYS_MSYNC = 144;
SYS_READV = 145;
SYS_WRITEV = 146;
SYS_GETSID = 147;
SYS_FDATASYNC = 148;
SYS__SYSCTL = 149;
SYS_MLOCK = 150;
SYS_MUNLOCK = 151;
SYS_MLOCKALL = 152;
SYS_MUNLOCKALL = 153;
SYS_SCHED_SETPARAM = 154;
SYS_SCHED_GETPARAM = 155;
SYS_SCHED_SETSCHEDULER = 156;
SYS_SCHED_GETSCHEDULER = 157;
SYS_SCHED_YIELD = 158;
SYS_SCHED_GET_PRIORITY_MAX = 159;
SYS_SCHED_GET_PRIORITY_MIN = 160;
SYS_SCHED_RR_GET_INTERVAL = 161;
SYS_NANOSLEEP = 162;
SYS_MREMAP = 163;
SYS_SETRESUID = 164;
SYS_GETRESUID = 165;
SYS_VM86 = 166;
SYS_QUERY_MODULE = 167;
SYS_POLL = 168;
SYS_NFSSERVCTL = 169;
SYS_SETRESGID = 170;
SYS_GETRESGID = 171;
SYS_PRCTL = 172;
SYS_RT_SIGRETURN = 173;
SYS_RT_SIGACTION = 174;
SYS_RT_SIGPROCMASK = 175;
SYS_RT_SIGPENDING = 176;
SYS_RT_SIGTIMEDWAIT = 177;
SYS_RT_SIGQUEUEINFO = 178;
SYS_RT_SIGSUSPEND = 179;
SYS_PREAD64 = 180;
SYS_PWRITE64 = 181;
SYS_CHOWN = 182;
SYS_GETCWD = 183;
SYS_CAPGET = 184;
SYS_CAPSET = 185;
SYS_SIGALTSTACK = 186;
SYS_SENDFILE = 187;
SYS_GETPMSG = 188;
SYS_PUTPMSG = 189;
SYS_VFORK = 190;
SYS_UGETRLIMIT = 191;
SYS_MMAP2 = 192;
SYS_TRUNCATE64 = 193;
SYS_FTRUNCATE64 = 194;
SYS_STAT64 = 195;
SYS_LSTAT64 = 196;
SYS_FSTAT64 = 197;
SYS_LCHOWN32 = 198;
SYS_GETUID32 = 199;
SYS_GETGID32 = 200;
SYS_GETEUID32 = 201;
SYS_GETEGID32 = 202;
SYS_SETREUID32 = 203;
SYS_SETREGID32 = 204;
SYS_GETGROUPS32 = 205;
SYS_SETGROUPS32 = 206;
SYS_FCHOWN32 = 207;
SYS_SETRESUID32 = 208;
SYS_GETRESUID32 = 209;
SYS_SETRESGID32 = 210;
SYS_GETRESGID32 = 211;
SYS_CHOWN32 = 212;
SYS_SETUID32 = 213;
SYS_SETGID32 = 214;
SYS_SETFSUID32 = 215;
SYS_SETFSGID32 = 216;
SYS_PIVOT_ROOT = 217;
SYS_MINCORE = 218;
SYS_MADVISE = 219;
SYS_MADVISE1 = 219;
SYS_GETDENTS64 = 220;
SYS_FCNTL64 = 221;
SYS_GETTID = 224;
SYS_READAHEAD = 225;
SYS_SETXATTR = 226;
SYS_LSETXATTR = 227;
SYS_FSETXATTR = 228;
SYS_GETXATTR = 229;
SYS_LGETXATTR = 230;
SYS_FGETXATTR = 231;
SYS_LISTXATTR = 232;
SYS_LLISTXATTR = 233;
SYS_FLISTXATTR = 234;
SYS_REMOVEXATTR = 235;
SYS_LREMOVEXATTR = 236;
SYS_FREMOVEXATTR = 237;
SYS_TKILL = 238;
SYS_SENDFILE64 = 239;
SYS_FUTEX = 240;
SYS_SCHED_SETAFFINITY = 241;
SYS_SCHED_GETAFFINITY = 242;
SYS_SET_THREAD_AREA = 243;
SYS_GET_THREAD_AREA = 244;
SYS_IO_SETUP = 245;
SYS_IO_DESTROY = 246;
SYS_IO_GETEVENTS = 247;
SYS_IO_SUBMIT = 248;
SYS_IO_CANCEL = 249;
SYS_FADVISE64 = 250;
SYS_EXIT_GROUP = 252;
SYS_LOOKUP_DCOOKIE = 253;
SYS_EPOLL_CREATE = 254;
SYS_EPOLL_CTL = 255;
SYS_EPOLL_WAIT = 256;
SYS_REMAP_FILE_PAGES = 257;
SYS_SET_TID_ADDRESS = 258;
SYS_TIMER_CREATE = 259;
SYS_STATFS64 = 268;
SYS_FSTATFS64 = 269;
SYS_TGKILL = 270;
SYS_UTIMES = 271;
SYS_FADVISE64_64 = 272;
SYS_VSERVER = 273;
SYS_MBIND = 274;
SYS_GET_MEMPOLICY = 275;
SYS_SET_MEMPOLICY = 276;
SYS_MQ_OPEN = 277;
SYS_KEXEC_LOAD = 283;
SYS_WAITID = 284;
SYS_ADD_KEY = 286;
SYS_REQUEST_KEY = 287;
SYS_KEYCTL = 288;
SYS_IOPRIO_SET = 289;
SYS_IOPRIO_GET = 290;
SYS_INOTIFY_INIT = 291;
SYS_INOTIFY_ADD_WATCH = 292;
SYS_INOTIFY_RM_WATCH = 293;
SYS_MIGRATE_PAGES = 294;
SYS_OPENAT = 295;
SYS_MKDIRAT = 296;
SYS_MKNODAT = 297;
SYS_FCHOWNAT = 298;
SYS_FUTIMESAT = 299;
SYS_FSTATAT64 = 300;
SYS_UNLINKAT = 301;
SYS_RENAMEAT = 302;
SYS_LINKAT = 303;
SYS_SYMLINKAT = 304;
SYS_READLINKAT = 305;
SYS_FCHMODAT = 306;
SYS_FACCESSAT = 307;
SYS_PSELECT6 = 308;
SYS_PPOLL = 309;
SYS_UNSHARE = 310;
SYS_SET_ROBUST_LIST = 311;
SYS_GET_ROBUST_LIST = 312;
SYS_SPLICE = 313;
SYS_SYNC_FILE_RANGE = 314;
SYS_TEE = 315;
SYS_VMSPLICE = 316;
SYS_MOVE_PAGES = 317;
SYS_GETCPU = 318;
SYS_EPOLL_PWAIT = 319;
SYS_UTIMENSAT = 320;
SYS_SIGNALFD = 321;
SYS_TIMERFD = 322;
SYS_EVENTFD = 323;
SYS_FALLOCATE = 324;
)
func _darwin_system_call_conflict() {
}
// godefs -gsyscall -f-m32 types_linux.c types_linux_386.c
// MACHINE GENERATED - DO NOT EDIT.
package syscall
// Constants
const (
sizeofPtr = 0x4;
sizeofShort = 0x2;
sizeofInt = 0x4;
sizeofLong = 0x4;
sizeofLongLong = 0x8;
PathMax = 0x1000;
O_RDONLY = 0;
O_WRONLY = 0x1;
O_RDWR = 0x2;
O_APPEND = 0x400;
O_ASYNC = 0x2000;
O_CREAT = 0x40;
O_NOCTTY = 0x100;
O_NONBLOCK = 0x800;
O_SYNC = 0x1000;
O_TRUNC = 0x200;
O_CLOEXEC = 0;
F_GETFD = 0x1;
F_SETFD = 0x2;
F_GETFL = 0x3;
F_SETFL = 0x4;
FD_CLOEXEC = 0x1;
NAME_MAX = 0xff;
S_IFMT = 0xf000;
S_IFIFO = 0x1000;
S_IFCHR = 0x2000;
S_IFDIR = 0x4000;
S_IFBLK = 0x6000;
S_IFREG = 0x8000;
S_IFLNK = 0xa000;
S_IFSOCK = 0xc000;
S_ISUID = 0x800;
S_ISGID = 0x400;
S_ISVTX = 0x200;
S_IRUSR = 0x100;
S_IWUSR = 0x80;
S_IXUSR = 0x40;
WNOHANG = 0x1;
WUNTRACED = 0x2;
WEXITED = 0x4;
WSTOPPED = 0x2;
WCONTINUED = 0x8;
WNOWAIT = 0x1000000;
WCLONE = 0x80000000;
WALL = 0x40000000;
WNOTHREAD = 0x20000000;
AF_UNIX = 0x1;
AF_INET = 0x2;
AF_INET6 = 0xa;
SOCK_STREAM = 0x1;
SOCK_DGRAM = 0x2;
SOCK_RAW = 0x3;
SOCK_SEQPACKET = 0x5;
SOL_SOCKET = 0x1;
SO_REUSEADDR = 0x2;
SO_KEEPALIVE = 0x9;
SO_DONTROUTE = 0x5;
SO_BROADCAST = 0x6;
SO_LINGER = 0xd;
SO_SNDBUF = 0x7;
SO_RCVBUF = 0x8;
SO_SNDTIMEO = 0x15;
SO_RCVTIMEO = 0x14;
IPPROTO_TCP = 0x6;
IPPROTO_UDP = 0x11;
TCP_NODELAY = 0x1;
SOMAXCONN = 0x80;
SizeofSockaddrInet4 = 0x10;
SizeofSockaddrInet6 = 0x1c;
SizeofSockaddrAny = 0x1c;
SizeofSockaddrUnix = 0x6e;
_PTRACE_TRACEME = 0;
_PTRACE_PEEKTEXT = 0x1;
_PTRACE_PEEKDATA = 0x2;
_PTRACE_PEEKUSER = 0x3;
_PTRACE_POKETEXT = 0x4;
_PTRACE_POKEDATA = 0x5;
_PTRACE_POKEUSER = 0x6;
_PTRACE_CONT = 0x7;
_PTRACE_KILL = 0x8;
_PTRACE_SINGLESTEP = 0x9;
_PTRACE_GETREGS = 0xc;
_PTRACE_SETREGS = 0xd;
_PTRACE_GETFPREGS = 0xe;
_PTRACE_SETFPREGS = 0xf;
_PTRACE_ATTACH = 0x10;
_PTRACE_DETACH = 0x11;
_PTRACE_GETFPXREGS = 0x12;
_PTRACE_SETFPXREGS = 0x13;
_PTRACE_SYSCALL = 0x18;
_PTRACE_SETOPTIONS = 0x4200;
_PTRACE_GETEVENTMSG = 0x4201;
_PTRACE_GETSIGINFO = 0x4202;
_PTRACE_SETSIGINFO = 0x4203;
PTRACE_O_TRACESYSGOOD = 0x1;
PTRACE_O_TRACEFORK = 0x2;
PTRACE_O_TRACEVFORK = 0x4;
PTRACE_O_TRACECLONE = 0x8;
PTRACE_O_TRACEEXEC = 0x10;
PTRACE_O_TRACEVFORKDONE = 0x20;
PTRACE_O_TRACEEXIT = 0x40;
PTRACE_O_MASK = 0x7f;
PTRACE_EVENT_FORK = 0x1;
PTRACE_EVENT_VFORK = 0x2;
PTRACE_EVENT_CLONE = 0x3;
PTRACE_EVENT_EXEC = 0x4;
PTRACE_EVENT_VFORK_DONE = 0x5;
PTRACE_EVENT_EXIT = 0x6;
EPOLLIN = 0x1;
EPOLLRDHUP = 0x2000;
EPOLLOUT = 0x4;
EPOLLONESHOT = 0x40000000;
EPOLL_CTL_MOD = 0x3;
EPOLL_CTL_ADD = 0x1;
EPOLL_CTL_DEL = 0x2;
)
// Types
type _C_short int16
type _C_int int32
type _C_long int32
type _C_long_long int64
type Timespec struct {
Sec int32;
Nsec int32;
}
type Timeval struct {
Sec int32;
Usec int32;
}
type Timex struct {
Modes uint32;
Offset int32;
Freq int32;
Maxerror int32;
Esterror int32;
Status int32;
Constant int32;
Precision int32;
Tolerance int32;
Time Timeval;
Tick int32;
Ppsfreq int32;
Jitter int32;
Shift int32;
Stabil int32;
Jitcnt int32;
Calcnt int32;
Errcnt int32;
Stbcnt int32;
int32;
int32;
int32;
int32;
int32;
int32;
int32;
int32;
int32;
int32;
int32;
int32;
}
type Time_t int32
type Tms struct {
Utime int32;
Stime int32;
Cutime int32;
Cstime int32;
}
type Utimbuf struct {
Actime int32;
Modtime int32;
}
type Rusage struct {
Utime Timeval;
Stime Timeval;
Maxrss int32;
Ixrss int32;
Idrss int32;
Isrss int32;
Minflt int32;
Majflt int32;
Nswap int32;
Inblock int32;
Oublock int32;
Msgsnd int32;
Msgrcv int32;
Nsignals int32;
Nvcsw int32;
Nivcsw int32;
}
type Rlimit struct {
Cur uint64;
Max uint64;
}
type _Gid_t uint32
type Stat_t struct {
Dev uint64;
__pad1 uint16;
Pad0 [2]byte;
__st_ino uint32;
Mode uint32;
Nlink uint32;
Uid uint32;
Gid uint32;
Rdev uint64;
__pad2 uint16;
Pad1 [2]byte;
Size int64;
Blksize int32;
Blocks int64;
Atim Timespec;
Mtim Timespec;
Ctim Timespec;
Ino uint64;
}
type Statfs_t struct {
Type int32;
Bsize int32;
Blocks uint64;
Bfree uint64;
Bavail uint64;
Files uint64;
Ffree uint64;
Fsid [8]byte /* __fsid_t */;
Namelen int32;
Frsize int32;
Spare [5]int32;
}
type Dirent struct {
Ino uint64;
Off int64;
Reclen uint16;
Type uint8;
Name [256]int8;
Pad0 [1]byte;
}
type RawSockaddrInet4 struct {
Family uint16;
Port uint16;
Addr [4]byte /* in_addr */;
Zero [8]uint8;
}
type RawSockaddrInet6 struct {
Family uint16;
Port uint16;
Flowinfo uint32;
Addr [16]byte /* in6_addr */;
Scope_id uint32;
}
type RawSockaddrUnix struct {
Family uint16;
Path [108]int8;
}
type RawSockaddr struct {
Family uint16;
Data [14]int8;
}
type RawSockaddrAny struct {
Addr RawSockaddr;
Pad [12]int8;
}
type _Socklen uint32
type Linger struct {
Onoff int32;
Linger int32;
}
type PtraceRegs struct {
Ebx int32;
Ecx int32;
Edx int32;
Esi int32;
Edi int32;
Ebp int32;
Eax int32;
Ds uint16;
__ds uint16;
Es uint16;
__es uint16;
Fs uint16;
__fs uint16;
Gs uint16;
__gs uint16;
Eax int32;
Eip int32;
Cs uint16;
__cs uint16;
Eflags int32;
Esp int32;
Ss uint16;
__ss uint16;
}
type FdSet struct {
Bits [32]int32;
}
type Sysinfo_t struct {
Uptime int32;
Loads [3]uint32;
Totalram uint32;
Freeram uint32;
Sharedram uint32;
Bufferram uint32;
Totalswap uint32;
Freeswap uint32;
Procs uint16;
Pad uint16;
Totalhigh uint32;
Freehigh uint32;
Unit uint32;
_f [8]int8;
}
type Utsname struct {
Sysname [65]int8;
Nodename [65]int8;
Release [65]int8;
Version [65]int8;
Machine [65]int8;
Domainname [65]int8;
}
type Ustat_t struct {
Tfree int32;
Tinode uint32;
Fname [6]int8;
Fpack [6]int8;
}
type EpollEvent struct {
Events uint32;
Fd int32;
Pad int32;
}
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