1// Generated using cgo, then manually converted into appropriate naming and code
2// for the Go runtime.
3// go tool cgo -godefs defs_linux.go defs1_linux.go defs2_linux.go
4
5package runtime
6
7import "unsafe"
8
9const (
10	_EINTR  = 0x4
11	_EAGAIN = 0xb
12	_ENOMEM = 0xc
13
14	_PROT_NONE  = 0x0
15	_PROT_READ  = 0x1
16	_PROT_WRITE = 0x2
17	_PROT_EXEC  = 0x4
18
19	_MAP_ANON    = 0x20
20	_MAP_PRIVATE = 0x2
21	_MAP_FIXED   = 0x10
22
23	_MADV_DONTNEED   = 0x4
24	_MADV_FREE       = 0x8
25	_MADV_HUGEPAGE   = 0xe
26	_MADV_NOHUGEPAGE = 0xf
27	_MADV_COLLAPSE   = 0x19
28
29	_SA_RESTART  = 0x10000000
30	_SA_ONSTACK  = 0x8000000
31	_SA_RESTORER = 0x0
32	_SA_SIGINFO  = 0x4
33
34	_SI_KERNEL = 0x80
35	_SI_TIMER  = -0x2
36
37	_SIGHUP    = 0x1
38	_SIGINT    = 0x2
39	_SIGQUIT   = 0x3
40	_SIGILL    = 0x4
41	_SIGTRAP   = 0x5
42	_SIGABRT   = 0x6
43	_SIGBUS    = 0x7
44	_SIGFPE    = 0x8
45	_SIGKILL   = 0x9
46	_SIGUSR1   = 0xa
47	_SIGSEGV   = 0xb
48	_SIGUSR2   = 0xc
49	_SIGPIPE   = 0xd
50	_SIGALRM   = 0xe
51	_SIGSTKFLT = 0x10
52	_SIGCHLD   = 0x11
53	_SIGCONT   = 0x12
54	_SIGSTOP   = 0x13
55	_SIGTSTP   = 0x14
56	_SIGTTIN   = 0x15
57	_SIGTTOU   = 0x16
58	_SIGURG    = 0x17
59	_SIGXCPU   = 0x18
60	_SIGXFSZ   = 0x19
61	_SIGVTALRM = 0x1a
62	_SIGPROF   = 0x1b
63	_SIGWINCH  = 0x1c
64	_SIGIO     = 0x1d
65	_SIGPWR    = 0x1e
66	_SIGSYS    = 0x1f
67
68	_SIGRTMIN = 0x20
69
70	_FPE_INTDIV = 0x1
71	_FPE_INTOVF = 0x2
72	_FPE_FLTDIV = 0x3
73	_FPE_FLTOVF = 0x4
74	_FPE_FLTUND = 0x5
75	_FPE_FLTRES = 0x6
76	_FPE_FLTINV = 0x7
77	_FPE_FLTSUB = 0x8
78
79	_BUS_ADRALN = 0x1
80	_BUS_ADRERR = 0x2
81	_BUS_OBJERR = 0x3
82
83	_SEGV_MAPERR = 0x1
84	_SEGV_ACCERR = 0x2
85
86	_ITIMER_REAL    = 0x0
87	_ITIMER_VIRTUAL = 0x1
88	_ITIMER_PROF    = 0x2
89
90	_CLOCK_THREAD_CPUTIME_ID = 0x3
91
92	_SIGEV_THREAD_ID = 0x4
93)
94
95type timespec struct {
96	tv_sec  int64
97	tv_nsec int64
98}
99
100//go:nosplit
101func (ts *timespec) setNsec(ns int64) {
102	ts.tv_sec = ns / 1e9
103	ts.tv_nsec = ns % 1e9
104}
105
106type timeval struct {
107	tv_sec  int64
108	tv_usec int64
109}
110
111func (tv *timeval) set_usec(x int32) {
112	tv.tv_usec = int64(x)
113}
114
115type sigactiont struct {
116	sa_handler uintptr
117	sa_flags   uint64
118	sa_mask    uint64
119	// Linux on riscv64 does not have the sa_restorer field, but the setsig
120	// function references it (for x86). Not much harm to include it at the end.
121	sa_restorer uintptr
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
164const (
165	_O_RDONLY   = 0x0
166	_O_WRONLY   = 0x1
167	_O_CREAT    = 0x40
168	_O_TRUNC    = 0x200
169	_O_NONBLOCK = 0x800
170	_O_CLOEXEC  = 0x80000
171)
172
173type user_regs_struct struct {
174	pc  uint64
175	ra  uint64
176	sp  uint64
177	gp  uint64
178	tp  uint64
179	t0  uint64
180	t1  uint64
181	t2  uint64
182	s0  uint64
183	s1  uint64
184	a0  uint64
185	a1  uint64
186	a2  uint64
187	a3  uint64
188	a4  uint64
189	a5  uint64
190	a6  uint64
191	a7  uint64
192	s2  uint64
193	s3  uint64
194	s4  uint64
195	s5  uint64
196	s6  uint64
197	s7  uint64
198	s8  uint64
199	s9  uint64
200	s10 uint64
201	s11 uint64
202	t3  uint64
203	t4  uint64
204	t5  uint64
205	t6  uint64
206}
207
208type user_fpregs_struct struct {
209	f [528]byte
210}
211
212type usigset struct {
213	us_x__val [16]uint64
214}
215
216type sigcontext struct {
217	sc_regs   user_regs_struct
218	sc_fpregs user_fpregs_struct
219}
220
221type stackt struct {
222	ss_sp    *byte
223	ss_flags int32
224	ss_size  uintptr
225}
226
227type ucontext struct {
228	uc_flags     uint64
229	uc_link      *ucontext
230	uc_stack     stackt
231	uc_sigmask   usigset
232	uc_x__unused [0]uint8
233	uc_pad_cgo_0 [8]byte
234	uc_mcontext  sigcontext
235}
236