2
/*--------------------------------------------------------------------*/
3
/*--- AIX5-specific syscalls stuff. priv_syswrap-aix5.h ---*/
4
/*--------------------------------------------------------------------*/
7
This file is part of Valgrind, a dynamic binary instrumentation
10
Copyright (C) 2006-2007 OpenWorks LLP
13
This program is free software; you can redistribute it and/or
14
modify it under the terms of the GNU General Public License as
15
published by the Free Software Foundation; either version 2 of the
16
License, or (at your option) any later version.
18
This program is distributed in the hope that it will be useful, but
19
WITHOUT ANY WARRANTY; without even the implied warranty of
20
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21
General Public License for more details.
23
You should have received a copy of the GNU General Public License
24
along with this program; if not, write to the Free Software
25
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
28
The GNU General Public License is contained in the file COPYING.
30
Neither the names of the U.S. Department of Energy nor the
31
University of California nor the names of its contributors may be
32
used to endorse or promote products derived from this software
33
without prior written permission.
36
#ifndef __PRIV_SYSWRAP_AIX5_H
37
#define __PRIV_SYSWRAP_AIX5_H
39
/* requires #include "priv_types_n_macros.h" */
42
/* Allocate a stack for this thread, if it doesn't already have one.
43
They're allocated lazily, and never freed. Returns the initial stack
44
pointer value to use, or 0 if allocation failed. */
45
extern Addr ML_(allocstack)(ThreadId tid);
47
/* Re-read /proc/../map and update everything that depends on it. */
48
extern void ML_(aix5_rescan_procmap_after_load_or_unload) ( void );
50
/* Mess with the given thread's pc/toc so that it is entering
51
pthread_exit() with argument PTHREAD_CANCELED. Returns True if ok,
52
False if it failed to do so, due to not being able to find
53
pthread_exit() by searching symbol tables. */
54
extern Bool ML_(aix5_force_thread_into_pthread_exit)( ThreadId );
56
/* For various reasons, on AIX we may have to just give up if
57
continuing is too difficult (eg, risk of future deadlock). This
58
sets up the process state to exit straight away, but does not
59
actually itself exit. */
61
void ML_(aix5_set_threadstate_for_emergency_exit)(ThreadId tid, HChar* why);
63
/* Debugging stuff, for making sense of AIX5 threading syscalls. */
64
extern void ML_(aix5debugstuff_show_tstate) ( Addr, HChar* who );
65
extern void ML_(aix5debugstuff_show_tstate_flags) ( UWord w );
66
extern HChar* ML_(aix5debugstuff_pc_to_fnname) ( Addr pc );
69
// Syscalls which can be handled by a common wrapper for
70
// both ppc32-aix5 and ppc64-aix5
72
DECL_TEMPLATE(aix5, sys___libc_sbrk);
73
DECL_TEMPLATE(aix5, sys___msleep);
74
DECL_TEMPLATE(aix5, sys__clock_settime);
75
DECL_TEMPLATE(aix5, sys__exit);
76
DECL_TEMPLATE(aix5, sys__fp_fpscrx_sc);
77
DECL_TEMPLATE(aix5, sys__getpgrp);
78
DECL_TEMPLATE(aix5, sys__getpid);
79
DECL_TEMPLATE(aix5, sys__getppid);
80
DECL_TEMPLATE(aix5, sys__getpriority);
81
DECL_TEMPLATE(aix5, sys__nsleep);
82
DECL_TEMPLATE(aix5, sys__pause);
83
DECL_TEMPLATE(aix5, sys__poll);
84
DECL_TEMPLATE(aix5, sys__select);
85
DECL_TEMPLATE(aix5, sys__sem_wait);
86
DECL_TEMPLATE(aix5, sys__setpgid);
87
DECL_TEMPLATE(aix5, sys__setsid);
88
DECL_TEMPLATE(aix5, sys__sigaction);
89
DECL_TEMPLATE(aix5, sys__thread_self);
90
DECL_TEMPLATE(aix5, sys__thread_setsched);
91
DECL_TEMPLATE(aix5, sys_access);
92
DECL_TEMPLATE(aix5, sys_accessx);
93
DECL_TEMPLATE(aix5, sys_appgetrlimit);
94
DECL_TEMPLATE(aix5, sys_appgetrusage);
95
DECL_TEMPLATE(aix5, sys_apprestimer);
96
DECL_TEMPLATE(aix5, sys_appsetrlimit);
97
DECL_TEMPLATE(aix5, sys_appulimit);
98
DECL_TEMPLATE(aix5, sys_bind);
99
DECL_TEMPLATE(aix5, sys_chdir);
100
DECL_TEMPLATE(aix5, sys_chmod);
101
DECL_TEMPLATE(aix5, sys_chown);
102
DECL_TEMPLATE(aix5, sys_close);
103
DECL_TEMPLATE(aix5, sys_connext);
104
DECL_TEMPLATE(aix5, sys_execve);
105
DECL_TEMPLATE(aix5, sys_finfo);
106
DECL_TEMPLATE(aix5, sys_fstatfs);
107
DECL_TEMPLATE(aix5, sys_fstatx);
108
DECL_TEMPLATE(aix5, sys_fsync);
109
DECL_TEMPLATE(aix5, sys_getdirent);
110
DECL_TEMPLATE(aix5, sys_getdirent64);
111
DECL_TEMPLATE(aix5, sys_getdomainname);
112
DECL_TEMPLATE(aix5, sys_getgidx);
113
DECL_TEMPLATE(aix5, sys_getgroups);
114
DECL_TEMPLATE(aix5, sys_gethostname);
115
DECL_TEMPLATE(aix5, sys_getpriv);
116
DECL_TEMPLATE(aix5, sys_getprocs);
117
DECL_TEMPLATE(aix5, sys_getrpid);
118
DECL_TEMPLATE(aix5, sys_getsockopt);
119
DECL_TEMPLATE(aix5, sys_gettimerid);
120
DECL_TEMPLATE(aix5, sys_getuidx);
121
DECL_TEMPLATE(aix5, sys_incinterval);
122
DECL_TEMPLATE(aix5, sys_kfcntl);
123
DECL_TEMPLATE(aix5, sys_kfork);
124
DECL_TEMPLATE(aix5, sys_kftruncate);
125
DECL_TEMPLATE(aix5, sys_kgetsidx);
126
DECL_TEMPLATE(aix5, sys_kill);
127
DECL_TEMPLATE(aix5, sys_kioctl);
128
DECL_TEMPLATE(aix5, sys_klseek);
129
DECL_TEMPLATE(aix5, sys_knlist);
130
DECL_TEMPLATE(aix5, sys_kpread);
131
DECL_TEMPLATE(aix5, sys_kread);
132
DECL_TEMPLATE(aix5, sys_kreadv);
133
DECL_TEMPLATE(aix5, sys_kthread_ctl);
134
DECL_TEMPLATE(aix5, sys_ktruncate);
135
DECL_TEMPLATE(aix5, sys_kwaitpid);
136
DECL_TEMPLATE(aix5, sys_kwrite);
137
DECL_TEMPLATE(aix5, sys_kwritev);
138
DECL_TEMPLATE(aix5, sys_listen);
139
DECL_TEMPLATE(aix5, sys_loadbind);
140
DECL_TEMPLATE(aix5, sys_loadquery);
141
DECL_TEMPLATE(aix5, sys_lseek);
142
DECL_TEMPLATE(aix5, sys_mkdir);
143
DECL_TEMPLATE(aix5, sys_mmap);
144
DECL_TEMPLATE(aix5, sys_mprotect);
145
DECL_TEMPLATE(aix5, sys_mntctl);
146
DECL_TEMPLATE(aix5, sys_munmap);
147
DECL_TEMPLATE(aix5, sys_naccept);
148
DECL_TEMPLATE(aix5, sys_ngetpeername);
149
DECL_TEMPLATE(aix5, sys_ngetsockname);
150
DECL_TEMPLATE(aix5, sys_nrecvfrom);
151
DECL_TEMPLATE(aix5, sys_nrecvmsg);
152
DECL_TEMPLATE(aix5, sys_nsendmsg);
153
DECL_TEMPLATE(aix5, sys_open);
154
DECL_TEMPLATE(aix5, sys_pipe);
155
DECL_TEMPLATE(aix5, sys_privcheck);
156
DECL_TEMPLATE(aix5, sys_readlink);
157
DECL_TEMPLATE(aix5, sys_recv);
158
DECL_TEMPLATE(aix5, sys_rename);
159
DECL_TEMPLATE(aix5, sys_sbrk);
160
DECL_TEMPLATE(aix5, sys_sched_get_priority_max);
161
DECL_TEMPLATE(aix5, sys_sem_destroy);
162
DECL_TEMPLATE(aix5, sys_sem_init);
163
DECL_TEMPLATE(aix5, sys_sem_post);
164
DECL_TEMPLATE(aix5, sys_send);
165
DECL_TEMPLATE(aix5, sys_setgid);
166
DECL_TEMPLATE(aix5, sys_setsockopt);
167
DECL_TEMPLATE(aix5, sys_setuid);
168
DECL_TEMPLATE(aix5, sys_shmat);
169
DECL_TEMPLATE(aix5, sys_shmctl);
170
DECL_TEMPLATE(aix5, sys_shmdt);
171
DECL_TEMPLATE(aix5, sys_shmget);
172
DECL_TEMPLATE(aix5, sys_shutdown);
173
DECL_TEMPLATE(aix5, sys_sigcleanup);
174
DECL_TEMPLATE(aix5, sys_sigprocmask);
175
DECL_TEMPLATE(aix5, sys_socket);
176
DECL_TEMPLATE(aix5, sys_statfs);
177
DECL_TEMPLATE(aix5, sys_statx);
178
DECL_TEMPLATE(aix5, sys_symlink);
179
DECL_TEMPLATE(aix5, sys_sys_parm);
180
DECL_TEMPLATE(aix5, sys_sysconfig);
181
DECL_TEMPLATE(aix5, sys_thread_create);
182
DECL_TEMPLATE(aix5, sys_thread_init);
183
DECL_TEMPLATE(aix5, sys_thread_kill);
184
/* thread_setmymask_fast is platform specific */
185
DECL_TEMPLATE(aix5, sys_thread_setmystate);
186
DECL_TEMPLATE(aix5, sys_thread_setmystate_fast);
187
/* thread_setstate is platform specific */
188
DECL_TEMPLATE(aix5, sys_thread_terminate_unlock);
189
DECL_TEMPLATE(aix5, sys_thread_tsleep);
190
DECL_TEMPLATE(aix5, sys_thread_tsleep_event);
191
DECL_TEMPLATE(aix5, sys_thread_twakeup);
192
DECL_TEMPLATE(aix5, sys_thread_twakeup_event);
193
DECL_TEMPLATE(aix5, sys_thread_unlock);
194
DECL_TEMPLATE(aix5, sys_thread_waitlock);
195
DECL_TEMPLATE(aix5, sys_thread_waitlock_);
196
DECL_TEMPLATE(aix5, sys_times);
197
DECL_TEMPLATE(aix5, sys_umask);
198
DECL_TEMPLATE(aix5, sys_uname);
199
DECL_TEMPLATE(aix5, sys_unlink);
200
DECL_TEMPLATE(aix5, sys_utimes);
201
DECL_TEMPLATE(aix5, sys_vmgetinfo);
202
DECL_TEMPLATE(aix5, sys_yield);
205
#endif // __PRIV_SYSWRAP_AIX5_H
207
/*--------------------------------------------------------------------*/
209
/*--------------------------------------------------------------------*/