1// created by cgo -cdefs and then converted to Go
2// cgo -cdefs defs_linux.go defs3_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_SIGINFO = 0x4
29
30	_SIGHUP    = 0x1
31	_SIGINT    = 0x2
32	_SIGQUIT   = 0x3
33	_SIGILL    = 0x4
34	_SIGTRAP   = 0x5
35	_SIGABRT   = 0x6
36	_SIGBUS    = 0x7
37	_SIGFPE    = 0x8
38	_SIGKILL   = 0x9
39	_SIGUSR1   = 0xa
40	_SIGSEGV   = 0xb
41	_SIGUSR2   = 0xc
42	_SIGPIPE   = 0xd
43	_SIGALRM   = 0xe
44	_SIGSTKFLT = 0x10
45	_SIGCHLD   = 0x11
46	_SIGCONT   = 0x12
47	_SIGSTOP   = 0x13
48	_SIGTSTP   = 0x14
49	_SIGTTIN   = 0x15
50	_SIGTTOU   = 0x16
51	_SIGURG    = 0x17
52	_SIGXCPU   = 0x18
53	_SIGXFSZ   = 0x19
54	_SIGVTALRM = 0x1a
55	_SIGPROF   = 0x1b
56	_SIGWINCH  = 0x1c
57	_SIGIO     = 0x1d
58	_SIGPWR    = 0x1e
59	_SIGSYS    = 0x1f
60
61	_FPE_INTDIV = 0x1
62	_FPE_INTOVF = 0x2
63	_FPE_FLTDIV = 0x3
64	_FPE_FLTOVF = 0x4
65	_FPE_FLTUND = 0x5
66	_FPE_FLTRES = 0x6
67	_FPE_FLTINV = 0x7
68	_FPE_FLTSUB = 0x8
69
70	_BUS_ADRALN = 0x1
71	_BUS_ADRERR = 0x2
72	_BUS_OBJERR = 0x3
73
74	_SEGV_MAPERR = 0x1
75	_SEGV_ACCERR = 0x2
76
77	_ITIMER_REAL    = 0x0
78	_ITIMER_VIRTUAL = 0x1
79	_ITIMER_PROF    = 0x2
80
81	_EPOLLIN       = 0x1
82	_EPOLLOUT      = 0x4
83	_EPOLLERR      = 0x8
84	_EPOLLHUP      = 0x10
85	_EPOLLRDHUP    = 0x2000
86	_EPOLLET       = 0x80000000
87	_EPOLL_CLOEXEC = 0x80000
88	_EPOLL_CTL_ADD = 0x1
89	_EPOLL_CTL_DEL = 0x2
90	_EPOLL_CTL_MOD = 0x3
91)
92
93//struct Sigset {
94//	uint64	sig[1];
95//};
96//typedef uint64 Sigset;
97
98type timespec struct {
99	tv_sec  int64
100	tv_nsec int64
101}
102
103//go:nosplit
104func (ts *timespec) setNsec(ns int64) {
105	ts.tv_sec = ns / 1e9
106	ts.tv_nsec = ns % 1e9
107}
108
109type timeval struct {
110	tv_sec  int64
111	tv_usec int64
112}
113
114func (tv *timeval) set_usec(x int32) {
115	tv.tv_usec = int64(x)
116}
117
118type sigactiont struct {
119	sa_handler  uintptr
120	sa_flags    uint64
121	sa_restorer uintptr
122	sa_mask     uint64
123}
124
125type siginfo struct {
126	si_signo int32
127	si_errno int32
128	si_code  int32
129	// below here is a union; si_addr is the only field we use
130	si_addr uint64
131}
132
133type itimerval struct {
134	it_interval timeval
135	it_value    timeval
136}
137
138type epollevent struct {
139	events    uint32
140	pad_cgo_0 [4]byte
141	data      [8]byte // unaligned uintptr
142}
143
144// created by cgo -cdefs and then converted to Go
145// cgo -cdefs defs_linux.go defs3_linux.go
146
147const (
148	_O_RDONLY    = 0x0
149	_O_NONBLOCK  = 0x800
150	_O_CLOEXEC   = 0x80000
151	_SA_RESTORER = 0
152)
153
154type ptregs struct {
155	gpr       [32]uint64
156	nip       uint64
157	msr       uint64
158	orig_gpr3 uint64
159	ctr       uint64
160	link      uint64
161	xer       uint64
162	ccr       uint64
163	softe     uint64
164	trap      uint64
165	dar       uint64
166	dsisr     uint64
167	result    uint64
168}
169
170type vreg struct {
171	u [4]uint32
172}
173
174type stackt struct {
175	ss_sp     *byte
176	ss_flags  int32
177	pad_cgo_0 [4]byte
178	ss_size   uintptr
179}
180
181type sigcontext struct {
182	_unused     [4]uint64
183	signal      int32
184	_pad0       int32
185	handler     uint64
186	oldmask     uint64
187	regs        *ptregs
188	gp_regs     [48]uint64
189	fp_regs     [33]float64
190	v_regs      *vreg
191	vmx_reserve [101]int64
192}
193
194type ucontext struct {
195	uc_flags    uint64
196	uc_link     *ucontext
197	uc_stack    stackt
198	uc_sigmask  uint64
199	__unused    [15]uint64
200	uc_mcontext sigcontext
201}
202