1// created by cgo -cdefs and then converted to Go
2// cgo -cdefs defs_linux.go defs1_linux.go
3
4package runtime
5
6import "unsafe"
7
8const (
9	_EINTR  = 0x4
10	_EAGAIN = 0xb
11	_ENOMEM = 0xc
12
13	_PROT_NONE  = 0x0
14	_PROT_READ  = 0x1
15	_PROT_WRITE = 0x2
16	_PROT_EXEC  = 0x4
17
18	_MAP_ANON    = 0x20
19	_MAP_PRIVATE = 0x2
20	_MAP_FIXED   = 0x10
21
22	_MADV_DONTNEED   = 0x4
23	_MADV_FREE       = 0x8
24	_MADV_HUGEPAGE   = 0xe
25	_MADV_NOHUGEPAGE = 0xf
26	_MADV_COLLAPSE   = 0x19
27
28	_SA_RESTART  = 0x10000000
29	_SA_ONSTACK  = 0x8000000
30	_SA_RESTORER = 0x4000000
31	_SA_SIGINFO  = 0x4
32
33	_SI_KERNEL = 0x80
34	_SI_TIMER  = -0x2
35
36	_SIGHUP    = 0x1
37	_SIGINT    = 0x2
38	_SIGQUIT   = 0x3
39	_SIGILL    = 0x4
40	_SIGTRAP   = 0x5
41	_SIGABRT   = 0x6
42	_SIGBUS    = 0x7
43	_SIGFPE    = 0x8
44	_SIGKILL   = 0x9
45	_SIGUSR1   = 0xa
46	_SIGSEGV   = 0xb
47	_SIGUSR2   = 0xc
48	_SIGPIPE   = 0xd
49	_SIGALRM   = 0xe
50	_SIGSTKFLT = 0x10
51	_SIGCHLD   = 0x11
52	_SIGCONT   = 0x12
53	_SIGSTOP   = 0x13
54	_SIGTSTP   = 0x14
55	_SIGTTIN   = 0x15
56	_SIGTTOU   = 0x16
57	_SIGURG    = 0x17
58	_SIGXCPU   = 0x18
59	_SIGXFSZ   = 0x19
60	_SIGVTALRM = 0x1a
61	_SIGPROF   = 0x1b
62	_SIGWINCH  = 0x1c
63	_SIGIO     = 0x1d
64	_SIGPWR    = 0x1e
65	_SIGSYS    = 0x1f
66
67	_SIGRTMIN = 0x20
68
69	_FPE_INTDIV = 0x1
70	_FPE_INTOVF = 0x2
71	_FPE_FLTDIV = 0x3
72	_FPE_FLTOVF = 0x4
73	_FPE_FLTUND = 0x5
74	_FPE_FLTRES = 0x6
75	_FPE_FLTINV = 0x7
76	_FPE_FLTSUB = 0x8
77
78	_BUS_ADRALN = 0x1
79	_BUS_ADRERR = 0x2
80	_BUS_OBJERR = 0x3
81
82	_SEGV_MAPERR = 0x1
83	_SEGV_ACCERR = 0x2
84
85	_ITIMER_REAL    = 0x0
86	_ITIMER_VIRTUAL = 0x1
87	_ITIMER_PROF    = 0x2
88
89	_CLOCK_THREAD_CPUTIME_ID = 0x3
90
91	_SIGEV_THREAD_ID = 0x4
92
93	_AF_UNIX    = 0x1
94	_SOCK_DGRAM = 0x2
95)
96
97type timespec struct {
98	tv_sec  int64
99	tv_nsec int64
100}
101
102//go:nosplit
103func (ts *timespec) setNsec(ns int64) {
104	ts.tv_sec = ns / 1e9
105	ts.tv_nsec = ns % 1e9
106}
107
108type timeval struct {
109	tv_sec  int64
110	tv_usec int64
111}
112
113func (tv *timeval) set_usec(x int32) {
114	tv.tv_usec = int64(x)
115}
116
117type sigactiont struct {
118	sa_handler  uintptr
119	sa_flags    uint64
120	sa_restorer uintptr
121	sa_mask     uint64
122}
123
124type siginfoFields struct {
125	si_signo int32
126	si_errno int32
127	si_code  int32
128	// below here is a union; si_addr is the only field we use
129	si_addr uint64
130}
131
132type siginfo struct {
133	siginfoFields
134
135	// Pad struct to the max size in the kernel.
136	_ [_si_max_size - unsafe.Sizeof(siginfoFields{})]byte
137}
138
139type itimerspec struct {
140	it_interval timespec
141	it_value    timespec
142}
143
144type itimerval struct {
145	it_interval timeval
146	it_value    timeval
147}
148
149type sigeventFields struct {
150	value  uintptr
151	signo  int32
152	notify int32
153	// below here is a union; sigev_notify_thread_id is the only field we use
154	sigev_notify_thread_id int32
155}
156
157type sigevent struct {
158	sigeventFields
159
160	// Pad struct to the max size in the kernel.
161	_ [_sigev_max_size - unsafe.Sizeof(sigeventFields{})]byte
162}
163
164// created by cgo -cdefs and then converted to Go
165// cgo -cdefs defs_linux.go defs1_linux.go
166
167const (
168	_O_RDONLY   = 0x0
169	_O_WRONLY   = 0x1
170	_O_CREAT    = 0x40
171	_O_TRUNC    = 0x200
172	_O_NONBLOCK = 0x800
173	_O_CLOEXEC  = 0x80000
174)
175
176type usigset struct {
177	__val [16]uint64
178}
179
180type fpxreg struct {
181	significand [4]uint16
182	exponent    uint16
183	padding     [3]uint16
184}
185
186type xmmreg struct {
187	element [4]uint32
188}
189
190type fpstate struct {
191	cwd       uint16
192	swd       uint16
193	ftw       uint16
194	fop       uint16
195	rip       uint64
196	rdp       uint64
197	mxcsr     uint32
198	mxcr_mask uint32
199	_st       [8]fpxreg
200	_xmm      [16]xmmreg
201	padding   [24]uint32
202}
203
204type fpxreg1 struct {
205	significand [4]uint16
206	exponent    uint16
207	padding     [3]uint16
208}
209
210type xmmreg1 struct {
211	element [4]uint32
212}
213
214type fpstate1 struct {
215	cwd       uint16
216	swd       uint16
217	ftw       uint16
218	fop       uint16
219	rip       uint64
220	rdp       uint64
221	mxcsr     uint32
222	mxcr_mask uint32
223	_st       [8]fpxreg1
224	_xmm      [16]xmmreg1
225	padding   [24]uint32
226}
227
228type fpreg1 struct {
229	significand [4]uint16
230	exponent    uint16
231}
232
233type stackt struct {
234	ss_sp     *byte
235	ss_flags  int32
236	pad_cgo_0 [4]byte
237	ss_size   uintptr
238}
239
240type mcontext struct {
241	gregs       [23]uint64
242	fpregs      *fpstate
243	__reserved1 [8]uint64
244}
245
246type ucontext struct {
247	uc_flags     uint64
248	uc_link      *ucontext
249	uc_stack     stackt
250	uc_mcontext  mcontext
251	uc_sigmask   usigset
252	__fpregs_mem fpstate
253}
254
255type sigcontext struct {
256	r8          uint64
257	r9          uint64
258	r10         uint64
259	r11         uint64
260	r12         uint64
261	r13         uint64
262	r14         uint64
263	r15         uint64
264	rdi         uint64
265	rsi         uint64
266	rbp         uint64
267	rbx         uint64
268	rdx         uint64
269	rax         uint64
270	rcx         uint64
271	rsp         uint64
272	rip         uint64
273	eflags      uint64
274	cs          uint16
275	gs          uint16
276	fs          uint16
277	__pad0      uint16
278	err         uint64
279	trapno      uint64
280	oldmask     uint64
281	cr2         uint64
282	fpstate     *fpstate1
283	__reserved1 [8]uint64
284}
285
286type sockaddr_un struct {
287	family uint16
288	path   [108]byte
289}
290