1// Copyright 2019 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5package runtime
6
7import "unsafe"
8
9const (
10	_EINTR     = 0x4
11	_EFAULT    = 0xe
12	_EAGAIN    = 0x23
13	_ETIMEDOUT = 0x3c
14
15	_O_WRONLY   = 0x1
16	_O_NONBLOCK = 0x4
17	_O_CREAT    = 0x200
18	_O_TRUNC    = 0x400
19	_O_CLOEXEC  = 0x10000
20
21	_PROT_NONE  = 0x0
22	_PROT_READ  = 0x1
23	_PROT_WRITE = 0x2
24	_PROT_EXEC  = 0x4
25
26	_MAP_ANON    = 0x1000
27	_MAP_PRIVATE = 0x2
28	_MAP_FIXED   = 0x10
29	_MAP_STACK   = 0x4000
30
31	_MADV_DONTNEED = 0x4
32	_MADV_FREE     = 0x6
33
34	_SA_SIGINFO = 0x40
35	_SA_RESTART = 0x2
36	_SA_ONSTACK = 0x1
37
38	_PTHREAD_CREATE_DETACHED = 0x1
39
40	_SIGHUP    = 0x1
41	_SIGINT    = 0x2
42	_SIGQUIT   = 0x3
43	_SIGILL    = 0x4
44	_SIGTRAP   = 0x5
45	_SIGABRT   = 0x6
46	_SIGEMT    = 0x7
47	_SIGFPE    = 0x8
48	_SIGKILL   = 0x9
49	_SIGBUS    = 0xa
50	_SIGSEGV   = 0xb
51	_SIGSYS    = 0xc
52	_SIGPIPE   = 0xd
53	_SIGALRM   = 0xe
54	_SIGTERM   = 0xf
55	_SIGURG    = 0x10
56	_SIGSTOP   = 0x11
57	_SIGTSTP   = 0x12
58	_SIGCONT   = 0x13
59	_SIGCHLD   = 0x14
60	_SIGTTIN   = 0x15
61	_SIGTTOU   = 0x16
62	_SIGIO     = 0x17
63	_SIGXCPU   = 0x18
64	_SIGXFSZ   = 0x19
65	_SIGVTALRM = 0x1a
66	_SIGPROF   = 0x1b
67	_SIGWINCH  = 0x1c
68	_SIGINFO   = 0x1d
69	_SIGUSR1   = 0x1e
70	_SIGUSR2   = 0x1f
71
72	_FPE_INTDIV = 0x1
73	_FPE_INTOVF = 0x2
74	_FPE_FLTDIV = 0x3
75	_FPE_FLTOVF = 0x4
76	_FPE_FLTUND = 0x5
77	_FPE_FLTRES = 0x6
78	_FPE_FLTINV = 0x7
79	_FPE_FLTSUB = 0x8
80
81	_BUS_ADRALN = 0x1
82	_BUS_ADRERR = 0x2
83	_BUS_OBJERR = 0x3
84
85	_SEGV_MAPERR = 0x1
86	_SEGV_ACCERR = 0x2
87
88	_ITIMER_REAL    = 0x0
89	_ITIMER_VIRTUAL = 0x1
90	_ITIMER_PROF    = 0x2
91
92	_EV_ADD       = 0x1
93	_EV_DELETE    = 0x2
94	_EV_CLEAR     = 0x20
95	_EV_ERROR     = 0x4000
96	_EV_EOF       = 0x8000
97	_EVFILT_READ  = -0x1
98	_EVFILT_WRITE = -0x2
99)
100
101type tforkt struct {
102	tf_tcb   unsafe.Pointer
103	tf_tid   *int32
104	tf_stack uintptr
105}
106
107type sigcontext struct {
108	__sc_unused int32
109	sc_mask     int32
110	sc_sp       uintptr
111	sc_lr       uintptr
112	sc_elr      uintptr
113	sc_spsr     uintptr
114	sc_x        [30]uintptr
115	sc_cookie   int64
116}
117
118type siginfo struct {
119	si_signo  int32
120	si_code   int32
121	si_errno  int32
122	pad_cgo_0 [4]byte
123	_data     [120]byte
124}
125
126type stackt struct {
127	ss_sp     uintptr
128	ss_size   uintptr
129	ss_flags  int32
130	pad_cgo_0 [4]byte
131}
132
133type timespec struct {
134	tv_sec  int64
135	tv_nsec int64
136}
137
138//go:nosplit
139func (ts *timespec) setNsec(ns int64) {
140	ts.tv_sec = ns / 1e9
141	ts.tv_nsec = ns % 1e9
142}
143
144type timeval struct {
145	tv_sec  int64
146	tv_usec int64
147}
148
149func (tv *timeval) set_usec(x int32) {
150	tv.tv_usec = int64(x)
151}
152
153type itimerval struct {
154	it_interval timeval
155	it_value    timeval
156}
157
158type keventt struct {
159	ident  uint64
160	filter int16
161	flags  uint16
162	fflags uint32
163	data   int64
164	udata  *byte
165}
166
167type pthread uintptr
168type pthreadattr uintptr
169type pthreadcond uintptr
170type pthreadcondattr uintptr
171type pthreadmutex uintptr
172type pthreadmutexattr uintptr
173