// TODO: Generate using cgo like defs_linux_{386,amd64}.h // Constants enum { EINTR = 0x4, ENOMEM = 0xc, EAGAIN = 0xb, PROT_NONE = 0, PROT_READ = 0x1, PROT_WRITE = 0x2, PROT_EXEC = 0x4, MAP_ANON = 0x20, MAP_PRIVATE = 0x2, MAP_FIXED = 0x10, MADV_DONTNEED = 0x4, SA_RESTART = 0x10000000, SA_ONSTACK = 0x8000000, SA_RESTORER = 0, // unused on ARM SA_SIGINFO = 0x4, SIGHUP = 0x1, SIGINT = 0x2, SIGQUIT = 0x3, SIGILL = 0x4, SIGTRAP = 0x5, SIGABRT = 0x6, SIGBUS = 0x7, SIGFPE = 0x8, SIGKILL = 0x9, SIGUSR1 = 0xa, SIGSEGV = 0xb, SIGUSR2 = 0xc, SIGPIPE = 0xd, SIGALRM = 0xe, SIGSTKFLT = 0x10, SIGCHLD = 0x11, SIGCONT = 0x12, SIGSTOP = 0x13, SIGTSTP = 0x14, SIGTTIN = 0x15, SIGTTOU = 0x16, SIGURG = 0x17, SIGXCPU = 0x18, SIGXFSZ = 0x19, SIGVTALRM = 0x1a, SIGPROF = 0x1b, SIGWINCH = 0x1c, SIGIO = 0x1d, SIGPWR = 0x1e, SIGSYS = 0x1f, FPE_INTDIV = 0x1, FPE_INTOVF = 0x2, FPE_FLTDIV = 0x3, FPE_FLTOVF = 0x4, FPE_FLTUND = 0x5, FPE_FLTRES = 0x6, FPE_FLTINV = 0x7, FPE_FLTSUB = 0x8, BUS_ADRALN = 0x1, BUS_ADRERR = 0x2, BUS_OBJERR = 0x3, SEGV_MAPERR = 0x1, SEGV_ACCERR = 0x2, ITIMER_REAL = 0, ITIMER_PROF = 0x2, ITIMER_VIRTUAL = 0x1, O_RDONLY = 0, O_CLOEXEC = 02000000, EPOLLIN = 0x1, EPOLLOUT = 0x4, EPOLLERR = 0x8, EPOLLHUP = 0x10, EPOLLRDHUP = 0x2000, EPOLLET = -0x80000000, EPOLL_CLOEXEC = 0x80000, EPOLL_CTL_ADD = 0x1, EPOLL_CTL_DEL = 0x2, EPOLL_CTL_MOD = 0x3, }; // Types #pragma pack on typedef struct Timespec Timespec; struct Timespec { int32 tv_sec; int32 tv_nsec; }; typedef struct SigaltstackT SigaltstackT; struct SigaltstackT { void *ss_sp; int32 ss_flags; uint32 ss_size; }; typedef struct Sigcontext Sigcontext; struct Sigcontext { uint32 trap_no; uint32 error_code; uint32 oldmask; uint32 arm_r0; uint32 arm_r1; uint32 arm_r2; uint32 arm_r3; uint32 arm_r4; uint32 arm_r5; uint32 arm_r6; uint32 arm_r7; uint32 arm_r8; uint32 arm_r9; uint32 arm_r10; uint32 arm_fp; uint32 arm_ip; uint32 arm_sp; uint32 arm_lr; uint32 arm_pc; uint32 arm_cpsr; uint32 fault_address; }; typedef struct Ucontext Ucontext; struct Ucontext { uint32 uc_flags; Ucontext *uc_link; SigaltstackT uc_stack; Sigcontext uc_mcontext; uint32 uc_sigmask; int32 __unused[31]; uint32 uc_regspace[128]; }; typedef struct Timeval Timeval; struct Timeval { int32 tv_sec; int32 tv_usec; }; typedef struct Itimerval Itimerval; struct Itimerval { Timeval it_interval; Timeval it_value; }; typedef struct Siginfo Siginfo; struct Siginfo { int32 si_signo; int32 si_errno; int32 si_code; uint8 _sifields[4]; }; typedef struct SigactionT SigactionT; struct SigactionT { void *sa_handler; uint32 sa_flags; void *sa_restorer; uint64 sa_mask; }; typedef struct EpollEvent EpollEvent; struct EpollEvent { uint32 events; uint32 _pad; byte data[8]; // to match amd64 }; #pragma pack off