1// Copyright 2018 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
5//go:build aix
6
7package runtime
8
9const (
10	_EPERM     = 0x1
11	_ENOENT    = 0x2
12	_EINTR     = 0x4
13	_EAGAIN    = 0xb
14	_ENOMEM    = 0xc
15	_EACCES    = 0xd
16	_EFAULT    = 0xe
17	_EINVAL    = 0x16
18	_ETIMEDOUT = 0x4e
19
20	_PROT_NONE  = 0x0
21	_PROT_READ  = 0x1
22	_PROT_WRITE = 0x2
23	_PROT_EXEC  = 0x4
24
25	_MAP_ANON      = 0x10
26	_MAP_PRIVATE   = 0x2
27	_MAP_FIXED     = 0x100
28	_MADV_DONTNEED = 0x4
29
30	_SIGHUP     = 0x1
31	_SIGINT     = 0x2
32	_SIGQUIT    = 0x3
33	_SIGILL     = 0x4
34	_SIGTRAP    = 0x5
35	_SIGABRT    = 0x6
36	_SIGBUS     = 0xa
37	_SIGFPE     = 0x8
38	_SIGKILL    = 0x9
39	_SIGUSR1    = 0x1e
40	_SIGSEGV    = 0xb
41	_SIGUSR2    = 0x1f
42	_SIGPIPE    = 0xd
43	_SIGALRM    = 0xe
44	_SIGCHLD    = 0x14
45	_SIGCONT    = 0x13
46	_SIGSTOP    = 0x11
47	_SIGTSTP    = 0x12
48	_SIGTTIN    = 0x15
49	_SIGTTOU    = 0x16
50	_SIGURG     = 0x10
51	_SIGXCPU    = 0x18
52	_SIGXFSZ    = 0x19
53	_SIGVTALRM  = 0x22
54	_SIGPROF    = 0x20
55	_SIGWINCH   = 0x1c
56	_SIGIO      = 0x17
57	_SIGPWR     = 0x1d
58	_SIGSYS     = 0xc
59	_SIGTERM    = 0xf
60	_SIGEMT     = 0x7
61	_SIGWAITING = 0x27
62
63	_FPE_INTDIV = 0x14
64	_FPE_INTOVF = 0x15
65	_FPE_FLTDIV = 0x16
66	_FPE_FLTOVF = 0x17
67	_FPE_FLTUND = 0x18
68	_FPE_FLTRES = 0x19
69	_FPE_FLTINV = 0x1a
70	_FPE_FLTSUB = 0x1b
71
72	_BUS_ADRALN = 0x1
73	_BUS_ADRERR = 0x2
74	_BUS_OBJERR = 0x3
75	_
76	_SEGV_MAPERR = 0x32
77	_SEGV_ACCERR = 0x33
78
79	_ITIMER_REAL    = 0x0
80	_ITIMER_VIRTUAL = 0x1
81	_ITIMER_PROF    = 0x2
82
83	_O_RDONLY   = 0x0
84	_O_WRONLY   = 0x1
85	_O_NONBLOCK = 0x4
86	_O_CREAT    = 0x100
87	_O_TRUNC    = 0x200
88
89	_SS_DISABLE  = 0x2
90	_SI_USER     = 0x0
91	_SIG_BLOCK   = 0x0
92	_SIG_UNBLOCK = 0x1
93	_SIG_SETMASK = 0x2
94
95	_SA_SIGINFO = 0x100
96	_SA_RESTART = 0x8
97	_SA_ONSTACK = 0x1
98
99	_PTHREAD_CREATE_DETACHED = 0x1
100
101	__SC_PAGE_SIZE        = 0x30
102	__SC_NPROCESSORS_ONLN = 0x48
103
104	_F_SETFL = 0x4
105	_F_GETFD = 0x1
106	_F_GETFL = 0x3
107)
108
109type sigset [4]uint64
110
111var sigset_all = sigset{^uint64(0), ^uint64(0), ^uint64(0), ^uint64(0)}
112
113type siginfo struct {
114	si_signo   int32
115	si_errno   int32
116	si_code    int32
117	si_pid     int32
118	si_uid     uint32
119	si_status  int32
120	si_addr    uintptr
121	si_band    int64
122	si_value   [2]int32 // [8]byte
123	__si_flags int32
124	__pad      [3]int32
125}
126
127type timespec struct {
128	tv_sec  int64
129	tv_nsec int64
130}
131
132//go:nosplit
133func (ts *timespec) setNsec(ns int64) {
134	ts.tv_sec = ns / 1e9
135	ts.tv_nsec = ns % 1e9
136}
137
138type timeval struct {
139	tv_sec    int64
140	tv_usec   int32
141	pad_cgo_0 [4]byte
142}
143
144func (tv *timeval) set_usec(x int32) {
145	tv.tv_usec = x
146}
147
148type itimerval struct {
149	it_interval timeval
150	it_value    timeval
151}
152
153type stackt struct {
154	ss_sp     uintptr
155	ss_size   uintptr
156	ss_flags  int32
157	__pad     [4]int32
158	pas_cgo_0 [4]byte
159}
160
161type sigcontext struct {
162	sc_onstack int32
163	pad_cgo_0  [4]byte
164	sc_mask    sigset
165	sc_uerror  int32
166	sc_jmpbuf  context64
167}
168
169type ucontext struct {
170	__sc_onstack   int32
171	pad_cgo_0      [4]byte
172	uc_sigmask     sigset
173	__sc_error     int32
174	pad_cgo_1      [4]byte
175	uc_mcontext    context64
176	uc_link        *ucontext
177	uc_stack       stackt
178	__extctx       uintptr // pointer to struct __extctx but we don't use it
179	__extctx_magic int32
180	__pad          int32
181}
182
183type context64 struct {
184	gpr        [32]uint64
185	msr        uint64
186	iar        uint64
187	lr         uint64
188	ctr        uint64
189	cr         uint32
190	xer        uint32
191	fpscr      uint32
192	fpscrx     uint32
193	except     [1]uint64
194	fpr        [32]float64
195	fpeu       uint8
196	fpinfo     uint8
197	fpscr24_31 uint8
198	pad        [1]uint8
199	excp_type  int32
200}
201
202type sigactiont struct {
203	sa_handler uintptr // a union of two pointer
204	sa_mask    sigset
205	sa_flags   int32
206	pad_cgo_0  [4]byte
207}
208
209type pthread uint32
210type pthread_attr *byte
211
212type semt int32
213