summaryrefslogtreecommitdiffstats
path: root/src/runtime/defs_aix.go
blob: b794cd5de8b2da354cdd988cdbc14850daa42cc4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
// Copyright 2018 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

//go:build ignore

/*
Input to cgo -godefs
GOARCH=ppc64 go tool cgo -godefs defs_aix.go > defs_aix_ppc64_tmp.go

This is only a helper to create defs_aix_ppc64.go
Go runtime functions require the "linux" name of fields (ss_sp, si_addr, etc)
However, AIX structures don't provide such names and must be modified.

TODO(aix): create a script to automatise defs_aix creation.

Modifications made:
 - sigset replaced by a [4]uint64 array
 - add sigset_all variable
 - siginfo.si_addr uintptr instead of *byte
 - add (*timeval) set_usec
 - stackt.ss_sp uintptr instead of *byte
 - stackt.ss_size uintptr instead of uint64
 - sigcontext.sc_jmpbuf context64 instead of jumbuf
 - ucontext.__extctx is a uintptr because we don't need extctx struct
 - ucontext.uc_mcontext: replace jumbuf structure by context64 structure
 - sigaction.sa_handler represents union field as both are uintptr
 - tstate.* replace *byte by uintptr


*/

package runtime

/*

#include <sys/types.h>
#include <sys/errno.h>
#include <sys/time.h>
#include <sys/signal.h>
#include <sys/mman.h>
#include <sys/thread.h>
#include <sys/resource.h>

#include <unistd.h>
#include <fcntl.h>
#include <pthread.h>
#include <semaphore.h>
*/
import "C"

const (
	_EPERM     = C.EPERM
	_ENOENT    = C.ENOENT
	_EINTR     = C.EINTR
	_EAGAIN    = C.EAGAIN
	_ENOMEM    = C.ENOMEM
	_EACCES    = C.EACCES
	_EFAULT    = C.EFAULT
	_EINVAL    = C.EINVAL
	_ETIMEDOUT = C.ETIMEDOUT

	_PROT_NONE  = C.PROT_NONE
	_PROT_READ  = C.PROT_READ
	_PROT_WRITE = C.PROT_WRITE
	_PROT_EXEC  = C.PROT_EXEC

	_MAP_ANON      = C.MAP_ANONYMOUS
	_MAP_PRIVATE   = C.MAP_PRIVATE
	_MAP_FIXED     = C.MAP_FIXED
	_MADV_DONTNEED = C.MADV_DONTNEED

	_SIGHUP     = C.SIGHUP
	_SIGINT     = C.SIGINT
	_SIGQUIT    = C.SIGQUIT
	_SIGILL     = C.SIGILL
	_SIGTRAP    = C.SIGTRAP
	_SIGABRT    = C.SIGABRT
	_SIGBUS     = C.SIGBUS
	_SIGFPE     = C.SIGFPE
	_SIGKILL    = C.SIGKILL
	_SIGUSR1    = C.SIGUSR1
	_SIGSEGV    = C.SIGSEGV
	_SIGUSR2    = C.SIGUSR2
	_SIGPIPE    = C.SIGPIPE
	_SIGALRM    = C.SIGALRM
	_SIGCHLD    = C.SIGCHLD
	_SIGCONT    = C.SIGCONT
	_SIGSTOP    = C.SIGSTOP
	_SIGTSTP    = C.SIGTSTP
	_SIGTTIN    = C.SIGTTIN
	_SIGTTOU    = C.SIGTTOU
	_SIGURG     = C.SIGURG
	_SIGXCPU    = C.SIGXCPU
	_SIGXFSZ    = C.SIGXFSZ
	_SIGVTALRM  = C.SIGVTALRM
	_SIGPROF    = C.SIGPROF
	_SIGWINCH   = C.SIGWINCH
	_SIGIO      = C.SIGIO
	_SIGPWR     = C.SIGPWR
	_SIGSYS     = C.SIGSYS
	_SIGTERM    = C.SIGTERM
	_SIGEMT     = C.SIGEMT
	_SIGWAITING = C.SIGWAITING

	_FPE_INTDIV = C.FPE_INTDIV
	_FPE_INTOVF = C.FPE_INTOVF
	_FPE_FLTDIV = C.FPE_FLTDIV
	_FPE_FLTOVF = C.FPE_FLTOVF
	_FPE_FLTUND = C.FPE_FLTUND
	_FPE_FLTRES = C.FPE_FLTRES
	_FPE_FLTINV = C.FPE_FLTINV
	_FPE_FLTSUB = C.FPE_FLTSUB

	_BUS_ADRALN = C.BUS_ADRALN
	_BUS_ADRERR = C.BUS_ADRERR
	_BUS_OBJERR = C.BUS_OBJERR

	_SEGV_MAPERR = C.SEGV_MAPERR
	_SEGV_ACCERR = C.SEGV_ACCERR

	_ITIMER_REAL    = C.ITIMER_REAL
	_ITIMER_VIRTUAL = C.ITIMER_VIRTUAL
	_ITIMER_PROF    = C.ITIMER_PROF

	_O_RDONLY   = C.O_RDONLY
	_O_NONBLOCK = C.O_NONBLOCK

	_SS_DISABLE  = C.SS_DISABLE
	_SI_USER     = C.SI_USER
	_SIG_BLOCK   = C.SIG_BLOCK
	_SIG_UNBLOCK = C.SIG_UNBLOCK
	_SIG_SETMASK = C.SIG_SETMASK

	_SA_SIGINFO = C.SA_SIGINFO
	_SA_RESTART = C.SA_RESTART
	_SA_ONSTACK = C.SA_ONSTACK

	_PTHREAD_CREATE_DETACHED = C.PTHREAD_CREATE_DETACHED

	__SC_PAGE_SIZE        = C._SC_PAGE_SIZE
	__SC_NPROCESSORS_ONLN = C._SC_NPROCESSORS_ONLN

	_F_SETFD    = C.F_SETFD
	_F_SETFL    = C.F_SETFL
	_F_GETFD    = C.F_GETFD
	_F_GETFL    = C.F_GETFL
	_FD_CLOEXEC = C.FD_CLOEXEC
)

type sigset C.sigset_t
type siginfo C.siginfo_t
type timespec C.struct_timespec
type timestruc C.struct_timestruc_t
type timeval C.struct_timeval
type itimerval C.struct_itimerval

type stackt C.stack_t
type sigcontext C.struct_sigcontext
type ucontext C.ucontext_t
type _Ctype_struct___extctx uint64 // ucontext use a pointer to this structure but it shouldn't be used
type jmpbuf C.struct___jmpbuf
type context64 C.struct___context64
type sigactiont C.struct_sigaction
type tstate C.struct_tstate
type rusage C.struct_rusage

type pthread C.pthread_t
type pthread_attr C.pthread_attr_t

type semt C.sem_t