1// created by cgo -cdefs and then converted to Go
2// cgo -cdefs defs2_linux.go
3
4package runtime
5
6const (
7	_EINTR  = 0x4
8	_EAGAIN = 0xb
9	_ENOMEM = 0xc
10	_ENOSYS = 0x26
11
12	_PROT_NONE  = 0x0
13	_PROT_READ  = 0x1
14	_PROT_WRITE = 0x2
15	_PROT_EXEC  = 0x4
16
17	_MAP_ANON    = 0x20
18	_MAP_PRIVATE = 0x2
19	_MAP_FIXED   = 0x10
20
21	_MADV_DONTNEED   = 0x4
22	_MADV_FREE       = 0x8
23	_MADV_HUGEPAGE   = 0xe
24	_MADV_NOHUGEPAGE = 0xf
25
26	_SA_RESTART  = 0x10000000
27	_SA_ONSTACK  = 0x8000000
28	_SA_RESTORER = 0x4000000
29	_SA_SIGINFO  = 0x4
30
31	_SIGHUP    = 0x1
32	_SIGINT    = 0x2
33	_SIGQUIT   = 0x3
34	_SIGILL    = 0x4
35	_SIGTRAP   = 0x5
36	_SIGABRT   = 0x6
37	_SIGBUS    = 0x7
38	_SIGFPE    = 0x8
39	_SIGKILL   = 0x9
40	_SIGUSR1   = 0xa
41	_SIGSEGV   = 0xb
42	_SIGUSR2   = 0xc
43	_SIGPIPE   = 0xd
44	_SIGALRM   = 0xe
45	_SIGSTKFLT = 0x10
46	_SIGCHLD   = 0x11
47	_SIGCONT   = 0x12
48	_SIGSTOP   = 0x13
49	_SIGTSTP   = 0x14
50	_SIGTTIN   = 0x15
51	_SIGTTOU   = 0x16
52	_SIGURG    = 0x17
53	_SIGXCPU   = 0x18
54	_SIGXFSZ   = 0x19
55	_SIGVTALRM = 0x1a
56	_SIGPROF   = 0x1b
57	_SIGWINCH  = 0x1c
58	_SIGIO     = 0x1d
59	_SIGPWR    = 0x1e
60	_SIGSYS    = 0x1f
61
62	_FPE_INTDIV = 0x1
63	_FPE_INTOVF = 0x2
64	_FPE_FLTDIV = 0x3
65	_FPE_FLTOVF = 0x4
66	_FPE_FLTUND = 0x5
67	_FPE_FLTRES = 0x6
68	_FPE_FLTINV = 0x7
69	_FPE_FLTSUB = 0x8
70
71	_BUS_ADRALN = 0x1
72	_BUS_ADRERR = 0x2
73	_BUS_OBJERR = 0x3
74
75	_SEGV_MAPERR = 0x1
76	_SEGV_ACCERR = 0x2
77
78	_ITIMER_REAL    = 0x0
79	_ITIMER_VIRTUAL = 0x1
80	_ITIMER_PROF    = 0x2
81
82	_O_RDONLY   = 0x0
83	_O_NONBLOCK = 0x800
84	_O_CLOEXEC  = 0x80000
85
86	_EPOLLIN       = 0x1
87	_EPOLLOUT      = 0x4
88	_EPOLLERR      = 0x8
89	_EPOLLHUP      = 0x10
90	_EPOLLRDHUP    = 0x2000
91	_EPOLLET       = 0x80000000
92	_EPOLL_CLOEXEC = 0x80000
93	_EPOLL_CTL_ADD = 0x1
94	_EPOLL_CTL_DEL = 0x2
95	_EPOLL_CTL_MOD = 0x3
96
97	_AF_UNIX    = 0x1
98	_F_SETFL    = 0x4
99	_SOCK_DGRAM = 0x2
100)
101
102type fpreg struct {
103	significand [4]uint16
104	exponent    uint16
105}
106
107type fpxreg struct {
108	significand [4]uint16
109	exponent    uint16
110	padding     [3]uint16
111}
112
113type xmmreg struct {
114	element [4]uint32
115}
116
117type fpstate struct {
118	cw        uint32
119	sw        uint32
120	tag       uint32
121	ipoff     uint32
122	cssel     uint32
123	dataoff   uint32
124	datasel   uint32
125	_st       [8]fpreg
126	status    uint16
127	magic     uint16
128	_fxsr_env [6]uint32
129	mxcsr     uint32
130	reserved  uint32
131	_fxsr_st  [8]fpxreg
132	_xmm      [8]xmmreg
133	padding1  [44]uint32
134	anon0     [48]byte
135}
136
137type timespec struct {
138	tv_sec  int32
139	tv_nsec int32
140}
141
142//go:nosplit
143func (ts *timespec) setNsec(ns int64) {
144	ts.tv_sec = timediv(ns, 1e9, &ts.tv_nsec)
145}
146
147type timeval struct {
148	tv_sec  int32
149	tv_usec int32
150}
151
152func (tv *timeval) set_usec(x int32) {
153	tv.tv_usec = x
154}
155
156type sigactiont struct {
157	sa_handler  uintptr
158	sa_flags    uint32
159	sa_restorer uintptr
160	sa_mask     uint64
161}
162
163type siginfo struct {
164	si_signo int32
165	si_errno int32
166	si_code  int32
167	// below here is a union; si_addr is the only field we use
168	si_addr uint32
169}
170
171type stackt struct {
172	ss_sp    *byte
173	ss_flags int32
174	ss_size  uintptr
175}
176
177type sigcontext struct {
178	gs            uint16
179	__gsh         uint16
180	fs            uint16
181	__fsh         uint16
182	es            uint16
183	__esh         uint16
184	ds            uint16
185	__dsh         uint16
186	edi           uint32
187	esi           uint32
188	ebp           uint32
189	esp           uint32
190	ebx           uint32
191	edx           uint32
192	ecx           uint32
193	eax           uint32
194	trapno        uint32
195	err           uint32
196	eip           uint32
197	cs            uint16
198	__csh         uint16
199	eflags        uint32
200	esp_at_signal uint32
201	ss            uint16
202	__ssh         uint16
203	fpstate       *fpstate
204	oldmask       uint32
205	cr2           uint32
206}
207
208type ucontext struct {
209	uc_flags    uint32
210	uc_link     *ucontext
211	uc_stack    stackt
212	uc_mcontext sigcontext
213	uc_sigmask  uint32
214}
215
216type itimerval struct {
217	it_interval timeval
218	it_value    timeval
219}
220
221type epollevent struct {
222	events uint32
223	data   [8]byte // to match amd64
224}
225
226type sockaddr_un struct {
227	family uint16
228	path   [108]byte
229}
230
231const __NEW_UTS_LEN = 64
232
233type new_utsname struct {
234	sysname    [__NEW_UTS_LEN + 1]byte
235	nodename   [__NEW_UTS_LEN + 1]byte
236	release    [__NEW_UTS_LEN + 1]byte
237	version    [__NEW_UTS_LEN + 1]byte
238	machine    [__NEW_UTS_LEN + 1]byte
239	domainname [__NEW_UTS_LEN + 1]byte
240}
241