/* * Linux system calls, and the structures needed to call them. */ typedef struct Timeval Timeval; struct Timeval { long sec; long usec; }; enum { ITIMER_REAL = 0 }; typedef struct Itimerval Itimerval; struct Itimerval { Timeval interval; Timeval value; }; typedef struct Stat Stat; struct Stat { ushort dev; ushort __pad1; ulong ino; ushort mode; ushort nlink; ushort uid; ushort gid; ushort rdev; ushort __pad2; ulong size; ulong blksize; ulong blocks; ulong atime; ulong __unused1; ulong mtime; ulong __unused2; ulong ctime; ulong __unused3; ulong __unused4; ulong __unused5; }; typedef struct Utime Utime; struct Utime { long atime; long mtime; }; /* * Until proven otherwise, they all take 5 ulongs and return a ulong. */ ulong linuxsetup(ulong, ulong, ulong, ulong, ulong); void linuxexit(int); long linuxfork(void); long linuxread(int, void*, long); long linuxwrite(int, void*, long); enum { O_RDONLY = 0, O_WRONLY = 1, O_RDWR = 2, O_CREAT = 0100, O_EXCL = 0200, O_TRUNC = 01000, O_APPEND = 02000, O_DIRECTORY = 0200000, }; int linuxopen(char*, int, ...); int linuxclose(int); int linuxwaitpid(long, int*, int); int linuxcreat(char*, int); int linuxlink(char*, char*); int linuxunlink(char*); int linuxexecve(char *, char **, char**); int linuxchdir(char*); long linuxtime(long*); int linuxmknod(char*, int, int); int linuxchmod(char*, int); ulong linuxlchown(ulong, ulong, ulong, ulong, ulong); ulong linuxsyscall_17(ulong, ulong, ulong, ulong, ulong); ulong linuxstat(ulong, ulong, ulong, ulong, ulong); long linuxlseek(int, long, int); /* vlong? */ long linuxgetpid(void); ulong linuxmount(ulong, ulong, ulong, ulong, ulong); ulong linuxumount(ulong, ulong, ulong, ulong, ulong); ulong linuxsetuid(ulong, ulong, ulong, ulong, ulong); ulong linuxgetuid(ulong, ulong, ulong, ulong, ulong); ulong linuxstime(ulong, ulong, ulong, ulong, ulong); ulong linuxptrace(ulong, ulong, ulong, ulong, ulong); ulong linuxalarm(ulong, ulong, ulong, ulong, ulong); ulong linuxfstat(ulong, ulong, ulong, ulong, ulong); ulong linuxpause(ulong, ulong, ulong, ulong, ulong); int linuxutime(char*, Utime*); ulong linuxsyscall_31(ulong, ulong, ulong, ulong, ulong); ulong linuxsyscall_32(ulong, ulong, ulong, ulong, ulong); ulong linuxaccess(ulong, ulong, ulong, ulong, ulong); ulong linuxnice(ulong, ulong, ulong, ulong, ulong); ulong linuxsyscall_35(ulong, ulong, ulong, ulong, ulong); ulong linuxsync(void); ulong linuxkill(ulong, ulong, ulong, ulong, ulong); ulong linuxrename(ulong, ulong, ulong, ulong, ulong); ulong linuxmkdir(ulong, ulong, ulong, ulong, ulong); int linuxrmdir(char*); ulong linuxdup(ulong, ulong, ulong, ulong, ulong); ulong linuxpipe(ulong, ulong, ulong, ulong, ulong); ulong linuxtimes(ulong, ulong, ulong, ulong, ulong); ulong linuxsyscall_44(ulong, ulong, ulong, ulong, ulong); long linuxbrk(void*); ulong linuxsetgid(ulong, ulong, ulong, ulong, ulong); ulong linuxgetgid(ulong, ulong, ulong, ulong, ulong); ulong linuxsignal(ulong, ulong, ulong, ulong, ulong); ulong linuxgeteuid(ulong, ulong, ulong, ulong, ulong); ulong linuxgetegid(ulong, ulong, ulong, ulong, ulong); ulong linuxacct(ulong, ulong, ulong, ulong, ulong); ulong linuxsyscall_52(ulong, ulong, ulong, ulong, ulong); ulong linuxsyscall_53(ulong, ulong, ulong, ulong, ulong); ulong linuxioctl(ulong, ulong, ulong, ulong, ulong); ulong linuxfcntl(ulong, ulong, ulong, ulong, ulong); ulong linuxsyscall_56(ulong, ulong, ulong, ulong, ulong); ulong linuxsetpgid(ulong, ulong, ulong, ulong, ulong); ulong linuxsyscall_58(ulong, ulong, ulong, ulong, ulong); ulong linuxolduname(ulong, ulong, ulong, ulong, ulong); ulong linuxumask(ulong, ulong, ulong, ulong, ulong); ulong linuxchroot(ulong, ulong, ulong, ulong, ulong); ulong linuxustat(ulong, ulong, ulong, ulong, ulong); int linuxdup2(int, int); long linuxgetppid(void); ulong linuxgetpgrp(ulong, ulong, ulong, ulong, ulong); ulong linuxsetsid(ulong, ulong, ulong, ulong, ulong); ulong linuxsigaction(ulong, ulong, ulong, ulong, ulong); ulong linuxsgetmask(ulong, ulong, ulong, ulong, ulong); ulong linuxssetmask(ulong, ulong, ulong, ulong, ulong); ulong linuxsetreuid(ulong, ulong, ulong, ulong, ulong); ulong linuxsetregid(ulong, ulong, ulong, ulong, ulong); ulong linuxsigsuspend(ulong, ulong, ulong, ulong, ulong); ulong linuxsigpending(ulong, ulong, ulong, ulong, ulong); ulong linuxsethostname(ulong, ulong, ulong, ulong, ulong); ulong linuxsetrlimit(ulong, ulong, ulong, ulong, ulong); ulong linuxgetrlimit(ulong, ulong, ulong, ulong, ulong); ulong linuxgetrusage(ulong, ulong, ulong, ulong, ulong); int linuxgettimeofday(Timeval*, void*); ulong linuxsettimeofday(ulong, ulong, ulong, ulong, ulong); ulong linuxgetgroups(ulong, ulong, ulong, ulong, ulong); ulong linuxsetgroups(ulong, ulong, ulong, ulong, ulong); ulong linuxold_select(ulong, ulong, ulong, ulong, ulong); ulong linuxsymlink(ulong, ulong, ulong, ulong, ulong); ulong linuxlstat(ulong, ulong, ulong, ulong, ulong); ulong linuxreadlink(ulong, ulong, ulong, ulong, ulong); ulong linuxuselib(ulong, ulong, ulong, ulong, ulong); ulong linuxswapon(ulong, ulong, ulong, ulong, ulong); ulong linuxreboot(ulong, ulong, ulong, ulong, ulong); ulong linuxold_readdir(ulong, ulong, ulong, ulong, ulong); ulong linuxold_mmap(ulong, ulong, ulong, ulong, ulong); ulong linuxmunmap(ulong, ulong, ulong, ulong, ulong); ulong linuxtruncate(ulong, ulong, ulong, ulong, ulong); ulong linuxftruncate(ulong, ulong, ulong, ulong, ulong); ulong linuxfchmod(ulong, ulong, ulong, ulong, ulong); ulong linuxfchown(ulong, ulong, ulong, ulong, ulong); ulong linuxgetpriority(ulong, ulong, ulong, ulong, ulong); ulong linuxsetpriority(ulong, ulong, ulong, ulong, ulong); ulong linuxsyscall_98(ulong, ulong, ulong, ulong, ulong); ulong linuxstatfs(ulong, ulong, ulong, ulong, ulong); ulong linuxfstatfs(ulong, ulong, ulong, ulong, ulong); ulong linuxioperm(ulong, ulong, ulong, ulong, ulong); enum { PF_UNIX = 1, SOCK_STREAM = 1, SOCK_SEQPACKET = 5 }; enum { SOCKOP_SOCKETPAIR = 8 }; ulong linuxsocketcall(int, ulong*); ulong linuxsyslog(ulong, ulong, ulong, ulong, ulong); int linuxsetitimer(int, Itimerval*, Itimerval*); ulong linuxgetitimer(ulong, ulong, ulong, ulong, ulong); int linuxnewstat(char*, Stat*); int linuxnewlstat(char*, Stat*); int linuxnewfstat(int, Stat*); ulong linuxuname(ulong, ulong, ulong, ulong, ulong); ulong linuxiopl(ulong, ulong, ulong, ulong, ulong); ulong linuxvhangup(ulong, ulong, ulong, ulong, ulong); ulong linuxidle(ulong, ulong, ulong, ulong, ulong); ulong linuxvm86old(ulong, ulong, ulong, ulong, ulong); ulong linuxwait4(ulong, ulong, ulong, ulong, ulong); ulong linuxswapoff(ulong, ulong, ulong, ulong, ulong); ulong linuxsysinfo(ulong, ulong, ulong, ulong, ulong); ulong linuxipc(ulong, ulong, ulong, ulong, ulong); ulong linuxfsync(ulong, ulong, ulong, ulong, ulong); ulong linuxsigreturn(ulong, ulong, ulong, ulong, ulong); ulong linuxclone(ulong, ulong, ulong, ulong, ulong); ulong linuxsetdomainname(ulong, ulong, ulong, ulong, ulong); ulong linuxnewuname(ulong, ulong, ulong, ulong, ulong); ulong linuxmodify_ldt(ulong, ulong, ulong, ulong, ulong); ulong linuxadjtimex(ulong, ulong, ulong, ulong, ulong); ulong linuxmprotect(ulong, ulong, ulong, ulong, ulong); ulong linuxsigprocmask(ulong, ulong, ulong, ulong, ulong); ulong linuxcreate_module(ulong, ulong, ulong, ulong, ulong); ulong linuxinit_module(ulong, ulong, ulong, ulong, ulong); ulong linuxdelete_module(ulong, ulong, ulong, ulong, ulong); ulong linuxget_kernel_syms(ulong, ulong, ulong, ulong, ulong); ulong linuxquotactl(ulong, ulong, ulong, ulong, ulong); ulong linuxgetpgid(ulong, ulong, ulong, ulong, ulong); ulong linuxfchdir(ulong, ulong, ulong, ulong, ulong); ulong linuxbdflush(ulong, ulong, ulong, ulong, ulong); ulong linuxsysfs(ulong, ulong, ulong, ulong, ulong); int linuxpersonality(ulong); ulong linuxsyscall_137(ulong, ulong, ulong, ulong, ulong); ulong linuxsetfsuid(ulong, ulong, ulong, ulong, ulong); ulong linuxsetfsgid(ulong, ulong, ulong, ulong, ulong); ulong linuxllseek(ulong, ulong, ulong, ulong, ulong); ulong linuxgetdents(ulong, ulong, ulong, ulong, ulong); int linuxselect(int, void*, void*, void*, Timeval*); ulong linuxflock(ulong, ulong, ulong, ulong, ulong); ulong linuxmsync(ulong, ulong, ulong, ulong, ulong); ulong linuxreadv(ulong, ulong, ulong, ulong, ulong); ulong linuxwritev(ulong, ulong, ulong, ulong, ulong); ulong linuxgetsid(ulong, ulong, ulong, ulong, ulong); ulong linuxfdatasync(ulong, ulong, ulong, ulong, ulong); ulong linuxsysctl(ulong, ulong, ulong, ulong, ulong); ulong linuxmlock(ulong, ulong, ulong, ulong, ulong); ulong linuxmunlock(ulong, ulong, ulong, ulong, ulong); ulong linuxmlockall(ulong, ulong, ulong, ulong, ulong); ulong linuxmunlockall(ulong, ulong, ulong, ulong, ulong); ulong linuxsched_setparam(ulong, ulong, ulong, ulong, ulong); ulong linuxsched_getparam(ulong, ulong, ulong, ulong, ulong); ulong linuxsched_setscheduler(ulong, ulong, ulong, ulong, ulong); ulong linuxsched_getscheduler(ulong, ulong, ulong, ulong, ulong); ulong linuxsched_yield(ulong, ulong, ulong, ulong, ulong); ulong linuxsched_get_priority_max(ulong, ulong, ulong, ulong, ulong); ulong linuxsched_get_priority_min(ulong, ulong, ulong, ulong, ulong); ulong linuxsched_rr_get_interval(ulong, ulong, ulong, ulong, ulong); ulong linuxnanosleep(ulong, ulong, ulong, ulong, ulong); ulong linuxmremap(ulong, ulong, ulong, ulong, ulong); ulong linuxsetresuid(ulong, ulong, ulong, ulong, ulong); ulong linuxgetresuid(ulong, ulong, ulong, ulong, ulong); ulong linuxvm86(ulong, ulong, ulong, ulong, ulong); ulong linuxquery_module(ulong, ulong, ulong, ulong, ulong); ulong linuxpoll(ulong, ulong, ulong, ulong, ulong); ulong linuxnfsservctl(ulong, ulong, ulong, ulong, ulong); ulong linuxsetresgid(ulong, ulong, ulong, ulong, ulong); ulong linuxgetresgid(ulong, ulong, ulong, ulong, ulong); ulong linuxprctl(ulong, ulong, ulong, ulong, ulong); ulong linuxrt_sigreturn(ulong, ulong, ulong, ulong, ulong); ulong linuxrt_sigaction(ulong, ulong, ulong, ulong, ulong); ulong linuxrt_sigprocmask(ulong, ulong, ulong, ulong, ulong); ulong linuxrt_sigpending(ulong, ulong, ulong, ulong, ulong); ulong linuxrt_sigtimedwait(ulong, ulong, ulong, ulong, ulong); ulong linuxrt_sigqueueinfo(ulong, ulong, ulong, ulong, ulong); ulong linuxrt_sigsuspend(ulong, ulong, ulong, ulong, ulong); ulong linuxpread(ulong, ulong, ulong, ulong, ulong); ulong linuxpwrite(ulong, ulong, ulong, ulong, ulong); ulong linuxchown(ulong, ulong, ulong, ulong, ulong); long linuxgetcwd(char*, long);