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// +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_NONBLOCK = 0x4
85
86	_SS_DISABLE  = 0x2
87	_SI_USER     = 0x0
88	_SIG_BLOCK   = 0x0
89	_SIG_UNBLOCK = 0x1
90	_SIG_SETMASK = 0x2
91
92	_SA_SIGINFO = 0x100
93	_SA_RESTART = 0x8
94	_SA_ONSTACK = 0x1
95
96	_PTHREAD_CREATE_DETACHED = 0x1
97
98	__SC_PAGE_SIZE        = 0x30
99	__SC_NPROCESSORS_ONLN = 0x48
100
101	_F_SETFD    = 0x2
102	_F_SETFL    = 0x4
103	_F_GETFD    = 0x1
104	_F_GETFL    = 0x3
105	_FD_CLOEXEC = 0x1
106)
107
108type sigset [4]uint64
109
110var sigset_all = sigset{^uint64(0), ^uint64(0), ^uint64(0), ^uint64(0)}
111
112type siginfo struct {
113	si_signo   int32
114	si_errno   int32
115	si_code    int32
116	si_pid     int32
117	si_uid     uint32
118	si_status  int32
119	si_addr    uintptr
120	si_band    int64
121	si_value   [2]int32 // [8]byte
122	__si_flags int32
123	__pad      [3]int32
124}
125
126type timespec struct {
127	tv_sec  int64
128	tv_nsec int64
129}
130
131//go:nosplit
132func (ts *timespec) setNsec(ns int64) {
133	ts.tv_sec = ns / 1e9
134	ts.tv_nsec = ns % 1e9
135}
136
137type timeval struct {
138	tv_sec    int64
139	tv_usec   int32
140	pad_cgo_0 [4]byte
141}
142
143func (tv *timeval) set_usec(x int32) {
144	tv.tv_usec = x
145}
146
147type itimerval struct {
148	it_interval timeval
149	it_value    timeval
150}
151
152type stackt struct {
153	ss_sp     uintptr
154	ss_size   uintptr
155	ss_flags  int32
156	__pad     [4]int32
157	pas_cgo_0 [4]byte
158}
159
160type sigcontext struct {
161	sc_onstack int32
162	pad_cgo_0  [4]byte
163	sc_mask    sigset
164	sc_uerror  int32
165	sc_jmpbuf  context64
166}
167
168type ucontext struct {
169	__sc_onstack   int32
170	pad_cgo_0      [4]byte
171	uc_sigmask     sigset
172	__sc_error     int32
173	pad_cgo_1      [4]byte
174	uc_mcontext    context64
175	uc_link        *ucontext
176	uc_stack       stackt
177	__extctx       uintptr // pointer to struct __extctx but we don't use it
178	__extctx_magic int32
179	__pad          int32
180}
181
182type context64 struct {
183	gpr        [32]uint64
184	msr        uint64
185	iar        uint64
186	lr         uint64
187	ctr        uint64
188	cr         uint32
189	xer        uint32
190	fpscr      uint32
191	fpscrx     uint32
192	except     [1]uint64
193	fpr        [32]float64
194	fpeu       uint8
195	fpinfo     uint8
196	fpscr24_31 uint8
197	pad        [1]uint8
198	excp_type  int32
199}
200
201type sigactiont struct {
202	sa_handler uintptr // a union of two pointer
203	sa_mask    sigset
204	sa_flags   int32
205	pad_cgo_0  [4]byte
206}
207
208type pthread uint32
209type pthread_attr *byte
210
211type semt int32
212