1// Created by cgo -cdefs and converted (by hand) to Go
2// ../cmd/cgo/cgo -cdefs defs_linux.go defs1_linux.go defs2_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 = 0x0 // Only used on intel
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 by hand
165// ../cmd/cgo/cgo -cdefs defs_linux.go defs1_linux.go defs2_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 stackt struct {
181	ss_sp     *byte
182	ss_flags  int32
183	pad_cgo_0 [4]byte
184	ss_size   uintptr
185}
186
187type sigcontext struct {
188	fault_address uint64
189	/* AArch64 registers */
190	regs       [31]uint64
191	sp         uint64
192	pc         uint64
193	pstate     uint64
194	_pad       [8]byte // __attribute__((__aligned__(16)))
195	__reserved [4096]byte
196}
197
198type sockaddr_un struct {
199	family uint16
200	path   [108]byte
201}
202
203type ucontext struct {
204	uc_flags    uint64
205	uc_link     *ucontext
206	uc_stack    stackt
207	uc_sigmask  uint64
208	_pad        [(1024 - 64) / 8]byte
209	_pad2       [8]byte // sigcontext must be aligned to 16-byte
210	uc_mcontext sigcontext
211}
212