blob: b68b9642a9c1592c5daf2d3e897132723c7bb2ff [file] [log] [blame]
Russ Cox580ef3e2014-11-11 17:07:37 -05001package runtime
2
3// Constants
4const (
5 _EINTR = 0x4
6 _ENOMEM = 0xc
7 _EAGAIN = 0xb
8
Keith Randall7e1b61c2015-02-23 13:58:05 -08009 _PROT_NONE = 0
10 _PROT_READ = 0x1
11 _PROT_WRITE = 0x2
12 _PROT_EXEC = 0x4
13
14 _MAP_ANON = 0x20
15 _MAP_PRIVATE = 0x2
16 _MAP_FIXED = 0x10
17
18 _MADV_DONTNEED = 0x4
19 _MADV_HUGEPAGE = 0xe
20 _MADV_NOHUGEPAGE = 0xf
21
Russ Cox580ef3e2014-11-11 17:07:37 -050022 _SA_RESTART = 0x10000000
23 _SA_ONSTACK = 0x8000000
24 _SA_RESTORER = 0 // unused on ARM
25 _SA_SIGINFO = 0x4
26 _SIGHUP = 0x1
27 _SIGINT = 0x2
28 _SIGQUIT = 0x3
29 _SIGILL = 0x4
30 _SIGTRAP = 0x5
31 _SIGABRT = 0x6
32 _SIGBUS = 0x7
33 _SIGFPE = 0x8
34 _SIGKILL = 0x9
35 _SIGUSR1 = 0xa
36 _SIGSEGV = 0xb
37 _SIGUSR2 = 0xc
38 _SIGPIPE = 0xd
39 _SIGALRM = 0xe
40 _SIGSTKFLT = 0x10
41 _SIGCHLD = 0x11
42 _SIGCONT = 0x12
43 _SIGSTOP = 0x13
44 _SIGTSTP = 0x14
45 _SIGTTIN = 0x15
46 _SIGTTOU = 0x16
47 _SIGURG = 0x17
48 _SIGXCPU = 0x18
49 _SIGXFSZ = 0x19
50 _SIGVTALRM = 0x1a
51 _SIGPROF = 0x1b
52 _SIGWINCH = 0x1c
53 _SIGIO = 0x1d
54 _SIGPWR = 0x1e
55 _SIGSYS = 0x1f
56 _FPE_INTDIV = 0x1
57 _FPE_INTOVF = 0x2
58 _FPE_FLTDIV = 0x3
59 _FPE_FLTOVF = 0x4
60 _FPE_FLTUND = 0x5
61 _FPE_FLTRES = 0x6
62 _FPE_FLTINV = 0x7
63 _FPE_FLTSUB = 0x8
64 _BUS_ADRALN = 0x1
65 _BUS_ADRERR = 0x2
66 _BUS_OBJERR = 0x3
67 _SEGV_MAPERR = 0x1
68 _SEGV_ACCERR = 0x2
69 _ITIMER_REAL = 0
70 _ITIMER_PROF = 0x2
71 _ITIMER_VIRTUAL = 0x1
72 _O_RDONLY = 0
Hyang-Ah Hana Kim3a871352015-01-24 17:51:42 -050073 _O_CLOEXEC = 0x80000
Russ Cox580ef3e2014-11-11 17:07:37 -050074
75 _EPOLLIN = 0x1
76 _EPOLLOUT = 0x4
77 _EPOLLERR = 0x8
78 _EPOLLHUP = 0x10
79 _EPOLLRDHUP = 0x2000
80 _EPOLLET = 0x80000000
81 _EPOLL_CLOEXEC = 0x80000
82 _EPOLL_CTL_ADD = 0x1
83 _EPOLL_CTL_DEL = 0x2
84 _EPOLL_CTL_MOD = 0x3
Hyang-Ah Hana Kim3a871352015-01-24 17:51:42 -050085
86 _AF_UNIX = 0x1
87 _F_SETFL = 0x4
88 _SOCK_DGRAM = 0x2
Russ Cox580ef3e2014-11-11 17:07:37 -050089)
90
91type timespec struct {
92 tv_sec int32
93 tv_nsec int32
94}
95
Russ Cox580cba42014-11-14 14:50:00 -050096func (ts *timespec) set_sec(x int64) {
97 ts.tv_sec = int32(x)
Russ Cox580ef3e2014-11-11 17:07:37 -050098}
99
Russ Coxa87e4a22014-11-14 12:55:10 -0500100func (ts *timespec) set_nsec(x int32) {
101 ts.tv_nsec = x
102}
103
Russ Cox580ef3e2014-11-11 17:07:37 -0500104type sigaltstackt struct {
105 ss_sp *byte
106 ss_flags int32
107 ss_size uintptr
108}
109
110type sigcontext struct {
111 trap_no uint32
112 error_code uint32
113 oldmask uint32
114 r0 uint32
115 r1 uint32
116 r2 uint32
117 r3 uint32
118 r4 uint32
119 r5 uint32
120 r6 uint32
121 r7 uint32
122 r8 uint32
123 r9 uint32
124 r10 uint32
125 fp uint32
126 ip uint32
127 sp uint32
128 lr uint32
129 pc uint32
130 cpsr uint32
131 fault_address uint32
132}
133
134type ucontext struct {
135 uc_flags uint32
136 uc_link *ucontext
137 uc_stack sigaltstackt
138 uc_mcontext sigcontext
139 uc_sigmask uint32
140 __unused [31]int32
141 uc_regspace [128]uint32
142}
143
144type timeval struct {
145 tv_sec int32
146 tv_usec int32
147}
148
149func (tv *timeval) set_usec(x int32) {
150 tv.tv_usec = x
151}
152
153type itimerval struct {
154 it_interval timeval
155 it_value timeval
156}
157
158type siginfo struct {
Austin Clementsf4a52542014-11-19 14:56:49 -0500159 si_signo int32
160 si_errno int32
161 si_code int32
162 // below here is a union; si_addr is the only field we use
163 si_addr uint32
Russ Cox580ef3e2014-11-11 17:07:37 -0500164}
165
166type sigactiont struct {
167 sa_handler uintptr
168 sa_flags uint32
169 sa_restorer uintptr
170 sa_mask uint64
171}
172
173type epollevent struct {
174 events uint32
175 _pad uint32
176 data [8]byte // to match amd64
177}
Hyang-Ah Hana Kim3a871352015-01-24 17:51:42 -0500178
179type sockaddr_un struct {
180 family uint16
181 path [108]byte
182}