lin
2025-06-05 ed3dd9d3e7519a82bb871d5eedb24a2fa0c91f47
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
// 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.
 
// +build ignore
 
/*
Input to cgo -godefs
GOARCH=ppc64 go tool cgo -godefs defs_aix.go > defs_aix_ppc64_tmp.go
 
This is only an 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_ANONYMOUS = 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
 
   _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