]> rtime.felk.cvut.cz Git - l4.git/blob - l4/pkg/valgrind/src/valgrind-3.6.0-svn/coregrind/m_syswrap/priv_syswrap-darwin.h
Inital import
[l4.git] / l4 / pkg / valgrind / src / valgrind-3.6.0-svn / coregrind / m_syswrap / priv_syswrap-darwin.h
1
2 /*--------------------------------------------------------------------*/
3 /*--- Private syscalls header for Darwin.    priv_syswrap-darwin.h ---*/
4 /*--------------------------------------------------------------------*/
5
6 /*
7    This file is part of Valgrind, a dynamic binary instrumentation
8    framework.
9
10    Copyright (C) 2005-2010 Apple Inc.
11       Greg Parker  gparker@apple.com
12
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.
17
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.
22
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
26    02111-1307, USA.
27
28    The GNU General Public License is contained in the file COPYING.
29 */
30
31 #ifndef __PRIV_SYSWRAP_DARWIN_H
32 #define __PRIV_SYSWRAP_DARWIN_H
33
34 /* requires #include "priv_types_n_macros.h" */
35
36 // syswrap-darwin.c
37 Addr allocstack ( ThreadId tid );
38 void find_stack_segment ( ThreadId tid, Addr sp );
39 void start_thread_NORETURN ( Word arg );
40 void assign_port_name(mach_port_t port, const char *name);
41 void record_named_port(ThreadId tid, mach_port_t port, mach_port_right_t right, const char *name);
42
43 extern const SyscallTableEntry ML_(mach_trap_table)[];
44 extern const SyscallTableEntry ML_(syscall_table)[];
45 extern const SyscallTableEntry ML_(mdep_trap_table)[];
46
47 extern const UInt ML_(syscall_table_size);
48 extern const UInt ML_(mach_trap_table_size);
49 extern const UInt ML_(mdep_trap_table_size);
50
51 void VG_(show_open_ports)(void);
52
53 void ML_(sync_mappings)(const HChar *when, const HChar *where, Int num);
54
55 // Unix syscalls.  
56 // GEN = it uses the generic wrapper
57 // NYI = wrapper not yet implemented in Valgrind
58 // NOC = the non-"_nocancel" wrapper is used
59 // old = the syscall no longer exists in Darwin
60 DECL_TEMPLATE(darwin, exit);                    // 1
61 // GEN fork 2
62 // GEN read 3
63 // GEN write 4
64 // GEN open 5
65 // GEN close 6
66 // GEN wait4 7
67 // old creat 8
68 // GEN link 9
69 // GEN unlink 10
70 // old execv 11
71 // GEN chdir 12
72 // GEN fchdir 13
73 // GEN mknod 14
74 // GEN chmod 15
75 // GEN chown 16
76 // old break 17
77 DECL_TEMPLATE(darwin, getfsstat);               // 18
78 // old lseek 19
79 // GEN getpid 20
80 // old mount 21
81 // old umount 22
82 // GEN setuid 23
83 // GEN getuid 24
84 // GEN geteuid 25
85 DECL_TEMPLATE(darwin, ptrace);                  // 26
86 DECL_TEMPLATE(darwin, recvmsg);                 // 27
87 DECL_TEMPLATE(darwin, sendmsg);                 // 28
88 DECL_TEMPLATE(darwin, recvfrom);                // 29
89 DECL_TEMPLATE(darwin, accept);                  // 30
90 DECL_TEMPLATE(darwin, getpeername);             // 31
91 DECL_TEMPLATE(darwin, getsockname);             // 32
92 // GEN access 33
93 DECL_TEMPLATE(darwin, chflags);                 // 34
94 DECL_TEMPLATE(darwin, fchflags);                // 35
95 // GEN sync 36
96 // GEN kill 37
97 // old stat 38
98 // GEN getppid 39
99 // old lstat 40
100 // GEN dup 41
101 DECL_TEMPLATE(darwin, pipe);                    // 42
102 // GEN getegid 43
103 // NYI profil
104 // old ktrace
105 DECL_TEMPLATE(darwin, sigaction);               // 46
106 // GEN getgid 47
107 DECL_TEMPLATE(darwin, sigprocmask);             // 48
108 DECL_TEMPLATE(darwin, getlogin);                // 49
109 // NYI setlogin 50
110 // NYI acct 51
111 DECL_TEMPLATE(darwin, sigpending);              // 52
112 // GEN sigaltstack 53
113 DECL_TEMPLATE(darwin, ioctl);                   // 54
114 // NYI reboot 55
115 // NYI revoke 56
116 // NYI symlink 57
117 // GEN readlink 58
118 // GEN execve 59
119 // GEN umask 60
120 // GEN chroot 61
121 // old fstat
122 // 63 used internally, reserved
123 // old getpagesize 64
124 // GEN msync 65
125 // GEN vfork 66
126 // old vread
127 // old vwrite
128 // old sbrk
129 // old sstk
130 // old mmap
131 // old vadvise
132 // GEN munmap 73
133 // GEN mprotect 74
134 // GEN madvise 75
135 // old vhangup
136 // old vlimit
137 // NYI mincore 78
138 // GEN getgroups 79
139 // NYI setgroups 80
140 // GEN getpgrp 81
141 // NYI setpgid 82
142 // GEN setitimer 83
143 // old wait
144 // NYI swapon 85
145 // GEN getitimer 86
146 // old gethostname
147 // old sethostname
148 DECL_TEMPLATE(darwin, getdtablesize);           // 89
149 // GEN dup2 90
150 // old getdopt
151 DECL_TEMPLATE(darwin, fcntl);                   // 92
152 // GEN select 93
153 // old setdopt
154 // GEN fsync 95
155 // GEN setpriority 96
156 DECL_TEMPLATE(darwin, socket);                  // 97
157 DECL_TEMPLATE(darwin, connect);                 // 98
158 // old accept
159 // GEN getpriority 100
160 // old send
161 // old recv
162 // old sigreturn
163 DECL_TEMPLATE(darwin, bind);                    // 104
164 DECL_TEMPLATE(darwin, setsockopt);              // 105
165 DECL_TEMPLATE(darwin, listen);                  // 106
166 // old vtimes
167 // old sigvec
168 // old sigblock
169 // old sigsetmask
170 DECL_TEMPLATE(darwin, sigsuspend);              // 111
171 // old sigstack
172 // old recvmsg
173 // old sendmsg
174 // old vtrace
175 // GEN gettimeofday 116
176 // GEN getrusage 117
177 DECL_TEMPLATE(darwin, getsockopt);              // 118
178 // old resuba
179 // GEN readv 120
180 // GEN writev 121
181 // NYI settimeofday 122
182 // GEN fchown 123
183 // GEN fchmod 124
184 // old recvfrom
185 // NYI setreuid 126
186 // NYI setregid 127
187 // GEN rename 128
188 // old truncate
189 // old ftruncate
190 // GEN flock 131
191 // NYI mkfifo 132
192 DECL_TEMPLATE(darwin, sendto);                  // 133
193 DECL_TEMPLATE(darwin, shutdown);                // 134
194 DECL_TEMPLATE(darwin, socketpair);              // 135
195 // GEN mkdir 136
196 // GEN rmdir 137
197 // GEN utimes 138
198 DECL_TEMPLATE(darwin, futimes);                 // 139
199 // NYI adjtime 140
200 // old getpeername
201 DECL_TEMPLATE(darwin, gethostuuid);             // 142
202 // old sethostid
203 // old getrlimit
204 // old setrlimit
205 // old killpg
206 // GEN setsid 147
207 // old setquota
208 // old qquota
209 // old getsockname
210 // NYI getpgid 151
211 // NYI setprivexec 152
212 // GEN pread 153
213 // GEN pwrite 154
214 // NYI nfssvc 155
215 // old getdirentries
216 // GEN statfs 157
217 // GEN fstatfs 158
218 // NYI unmount 159
219 // old async_daemon
220 // NYI getfh 161
221 // old getdomainname
222 // old setdomainname
223 // 164
224 // NYI quotactl 165
225 // old exportfs
226 DECL_TEMPLATE(darwin, mount);                   // 167
227 // old ustat
228 DECL_TEMPLATE(darwin, csops);                   // 169
229 // old table
230 // old wait3
231 // old rpause
232 // NYI waitid 173
233 // old getdents
234 // old gc_control
235 // NYI add_profil 176
236 // 177
237 // 178
238 // 179
239 DECL_TEMPLATE(darwin, kdebug_trace);            // 180
240 // GEN setgid 181
241 DECL_TEMPLATE(darwin, setegid);                 // 182
242 DECL_TEMPLATE(darwin, seteuid);                 // 183
243 DECL_TEMPLATE(darwin, sigreturn);               // 184
244 DECL_TEMPLATE(darwin, FAKE_SIGRETURN);
245 // NYI chud 185
246 // 186
247 // 187
248 // GEN stat 188
249 // GEN fstat 189
250 // GEN lstat 190
251 DECL_TEMPLATE(darwin, pathconf);            // 191
252 DECL_TEMPLATE(darwin, fpathconf);           // 192
253 // 193
254 // GEN getrlimit 194
255 // GEN setrlimit 195
256 DECL_TEMPLATE(darwin, getdirentries);       // 196
257 DECL_TEMPLATE(darwin, mmap);                // 197
258 // 198  __syscall
259 DECL_TEMPLATE(darwin, lseek);               // 199 (was UX64)
260 // GEN truncate 200
261 // GEN ftruncate 201
262 DECL_TEMPLATE(darwin, __sysctl);                // 202
263 // GEN mlock 203
264 // GEN munlock 204
265 // NYI undelete 205
266 // NYI ATsocket 206
267 // NYI ATgetmsg 207
268 // NYI ATputmsg 208
269 // NYI ATPsndreq 209
270 // NYI ATPsndrsp 210
271 // NYI ATPgetreq 211
272 // NYI ATPgetrsp 212
273 // 213  Reserved for AppleTalk
274 // NYI kqueue_from_portset_np 214
275 // NYI kqueue_portset_np 215
276 // NYI mkcomplex 216
277 // NYI statv 217
278 // NYI lstatv 218
279 // NYI fstatv 219
280 DECL_TEMPLATE(darwin, getattrlist);             // 220
281 DECL_TEMPLATE(darwin, setattrlist);             // 221
282 DECL_TEMPLATE(darwin, getdirentriesattr);       // 222
283 DECL_TEMPLATE(darwin, exchangedata);            // 223
284 // 224 checkuseraccess
285 // NYI searchfs 225
286 // GEN delete 226
287 // NYI copyfile 226
288 // 228
289 // 229
290 // GEN poll 230
291 DECL_TEMPLATE(darwin, watchevent);              // 231
292 DECL_TEMPLATE(darwin, waitevent);               // 232
293 DECL_TEMPLATE(darwin, modwatch);                // 233
294 DECL_TEMPLATE(darwin, getxattr);                // 234
295 DECL_TEMPLATE(darwin, fgetxattr);               // 235
296 DECL_TEMPLATE(darwin, setxattr);                // 236
297 DECL_TEMPLATE(darwin, fsetxattr);               // 237
298 // NYI removexattr 238
299 // NYI fremovexattr 239
300 DECL_TEMPLATE(darwin, listxattr);               // 240
301 DECL_TEMPLATE(darwin, flistxattr);              // 241
302 DECL_TEMPLATE(darwin, fsctl);                   // 242
303 DECL_TEMPLATE(darwin, initgroups);              // 243
304 DECL_TEMPLATE(darwin, posix_spawn);             // 244
305 // 245
306 // 246
307 // NYI nfsclnt 247
308 // NYI fhopen 248
309 // 249
310 // NYI minherit 250
311 // NYI semsys 251
312 // NYI msgsys 252
313 // NYI shmsys 253
314 DECL_TEMPLATE(darwin, semctl);                  // 254
315 DECL_TEMPLATE(darwin, semget);                  // 255
316 DECL_TEMPLATE(darwin, semop);                   // 256
317 // 257
318 // NYI msgctl 258
319 // NYI msgget 259
320 // NYI msgsnd 260
321 // NYI msgrcv 261
322 DECL_TEMPLATE(darwin, shmat);                   // 262
323 DECL_TEMPLATE(darwin, shmctl);                  // 263
324 DECL_TEMPLATE(darwin, shmdt);                   // 264
325 DECL_TEMPLATE(darwin, shmget);                  // 265
326 DECL_TEMPLATE(darwin, shm_open);                // 266
327 // NYI shm_unlink 267
328 DECL_TEMPLATE(darwin, sem_open);                // 268
329 DECL_TEMPLATE(darwin, sem_close);               // 269
330 DECL_TEMPLATE(darwin, sem_unlink);              // 270
331 DECL_TEMPLATE(darwin, sem_wait);                // 271
332 DECL_TEMPLATE(darwin, sem_trywait);             // 272
333 DECL_TEMPLATE(darwin, sem_post);                // 273
334 // NYI sem_getvalue 274
335 DECL_TEMPLATE(darwin, sem_init);                // 275
336 DECL_TEMPLATE(darwin, sem_destroy);             // 276
337 // NYI open_extended 277
338 // NYI umask_extended 278
339 DECL_TEMPLATE(darwin, stat_extended);           // 279
340 DECL_TEMPLATE(darwin, lstat_extended);          // 280
341 DECL_TEMPLATE(darwin, fstat_extended);          // 281
342 DECL_TEMPLATE(darwin, chmod_extended);          // 282
343 DECL_TEMPLATE(darwin, fchmod_extended);         // 283
344 DECL_TEMPLATE(darwin, access_extended);         // 284
345 DECL_TEMPLATE(darwin, settid);                  // 285
346 // NYI gettid 286
347 // NYI setsgroups 287
348 // NYI getsgroups 288
349 // NYI setwgroups 289
350 // NYI getwgroups 290
351 // NYI mkfifo_extended 291
352 // NYI mkdir_extended 292
353 // NYI identitysvc 293
354 // NYI shared_region_check_np 294
355 // NYI shared_region_map_np 295
356 // old load_shared_file
357 // old reset_shared_file
358 // old new_system_shared_regions
359 // old shared_region_map_file_np
360 // old shared_region_make_private_np
361 // NYI __pthread_mutex_destroy 301
362 // NYI __pthread_mutex_init 302
363 // NYI __pthread_mutex_lock 303
364 // NYI __pthread_mutex_trylock 304
365 // NYI __pthread_mutex_unlock 305
366 // NYI __pthread_cond_init 306
367 // NYI __pthread_cond_destroy 307
368 // NYI __pthread_cond_broadcast 308
369 // NYI __pthread_cond_signal 309
370 // NYI getsid 310
371 // NYI settid_with_pid 311
372 // NYI __pthread_cond_timedwait 312
373 // NYI aio_fsync 313
374 DECL_TEMPLATE(darwin, aio_return);             // 314
375 DECL_TEMPLATE(darwin, aio_suspend);            // 315
376 // NYI aio_cancel 316
377 DECL_TEMPLATE(darwin, aio_error);              // 317
378 DECL_TEMPLATE(darwin, aio_read);               // 318
379 DECL_TEMPLATE(darwin, aio_write);              // 319
380 // NYI lio_listio 320
381 // NYI __pthread_cond_wait 321
382 // NYI iopolicysys 322
383 // 323
384 // NYI mlockall 324
385 // NYI munlockall 325
386 // 326
387 DECL_TEMPLATE(darwin, issetugid);               // 327
388 DECL_TEMPLATE(darwin, __pthread_kill);          // 328
389 DECL_TEMPLATE(darwin, __pthread_sigmask);       // 329
390 // NYI __sigwait 330
391 DECL_TEMPLATE(darwin, __disable_threadsignal);  // 331
392 DECL_TEMPLATE(darwin, __pthread_markcancel);    // 332
393 DECL_TEMPLATE(darwin, __pthread_canceled);      // 333
394 DECL_TEMPLATE(darwin, __semwait_signal);        // 334
395 // old utrace
396 // NYI proc_info 336
397 DECL_TEMPLATE(darwin, sendfile);                // 337
398 DECL_TEMPLATE(darwin, stat64);                  // 338
399 DECL_TEMPLATE(darwin, fstat64);                 // 339
400 DECL_TEMPLATE(darwin, lstat64);                 // 340
401 DECL_TEMPLATE(darwin, stat64_extended);         // 341
402 DECL_TEMPLATE(darwin, lstat64_extended);        // 342
403 DECL_TEMPLATE(darwin, fstat64_extended);        // 343
404 DECL_TEMPLATE(darwin, getdirentries64);         // 344
405 DECL_TEMPLATE(darwin, statfs64);                // 345
406 DECL_TEMPLATE(darwin, fstatfs64);               // 346
407 DECL_TEMPLATE(darwin, getfsstat64);             // 347
408 // NYI __pthread_chdir 348
409 // NYI __pthread_fchdir 349
410 // NYI audit 350
411 DECL_TEMPLATE(darwin, auditon);                 // 351
412 // 352
413 // NYI getauid 353
414 // NYI setauid 354
415 // NYI getaudit 355
416 // NYI setaudit 356
417 // NYI getaudit_addr 357
418 // NYI setaudit_addr 358
419 // NYI auditctl 359
420 DECL_TEMPLATE(darwin, bsdthread_create);        // 360
421 DECL_TEMPLATE(darwin, bsdthread_terminate);     // 361
422 DECL_TEMPLATE(darwin, kqueue);                  // 362
423 DECL_TEMPLATE(darwin, kevent);                  // 363
424 // NYI lchown 364
425 // NYI stack_snapshot 365
426 DECL_TEMPLATE(darwin, bsdthread_register);      // 366
427 DECL_TEMPLATE(darwin, workq_open);              // 367
428 DECL_TEMPLATE(darwin, workq_ops);               // 368
429 // 369
430 // 370
431 // 371
432 // 372
433 // 373
434 // 374
435 // 375
436 // 376
437 // 377
438 // 378
439 // 379
440 // NYI __mac_execve 380
441 DECL_TEMPLATE(darwin, __mac_syscall);           // 381
442 // NYI __mac_get_file 382
443 // NYI __mac_set_file 383
444 // NYI __mac_get_link 384
445 // NYI __mac_set_link 385
446 // NYI __mac_get_proc 386
447 // NYI __mac_set_proc 387
448 // NYI __mac_get_fd 388
449 // NYI __mac_set_fd 389
450 // NYI __mac_get_pid 390
451 // NYI __mac_get_lcid 391
452 // NYI __mac_get_lctx 392
453 // NYI __mac_set_lctx 393
454 // NYI setlcid 394
455 // NYI getlcid 395
456 // GEN read_nocancel 396
457 // GEN write_nocancel 397
458 // GEN open_nocancel 398
459 // GEN close_nocancel 399
460 // GEN wait4_nocancel 400
461 // NOC recvmsg_nocancel 401
462 // NOC sendmsg_nocancel 402
463 // NOC recvfrom_nocancel 403
464 // NOC accept_nocancel 404
465 // GEN msync_nocancel 405
466 // NOC fcntl_nocancel 406
467 // GEN select_nocancel 407
468 // GEN fsync_nocancel 408
469 // NOC connect_nocancel 409
470 // NYI sigsuspend_nocancel 410
471 // GEN readv_nocancel 411
472 // GEN writev_nocancel 412
473 // NOC sendto_nocancel 413
474 // GEN pread_nocancel 414
475 // GEN pwrite_nocancel 415
476 // NYI waitid_nocancel 416
477 // GEN poll_nocancel 417
478 // NYI msgsnd_nocancel 418
479 // NYI msgrcv_nocancel 419
480 // NOC sem_wait_nocancel 420
481 // NYI aio_suspend_nocancel 421
482 // NYI __sigwait_nocancel 422
483 // NOC __semwait_signal_nocancel 423
484 // NYI __mac_mount 424
485 // NYI __mac_get_mount 425
486 // NYI __mac_getfsstat 426
487
488 // Mach message helpers
489 DECL_TEMPLATE(darwin, host_info);
490 DECL_TEMPLATE(darwin, host_page_size);
491 DECL_TEMPLATE(darwin, host_get_io_master);
492 DECL_TEMPLATE(darwin, host_get_clock_service);
493 DECL_TEMPLATE(darwin, host_request_notification);
494 DECL_TEMPLATE(darwin, mach_port_type);
495 DECL_TEMPLATE(darwin, mach_port_extract_member);
496 DECL_TEMPLATE(darwin, mach_port_allocate);
497 DECL_TEMPLATE(darwin, mach_port_deallocate);
498 DECL_TEMPLATE(darwin, mach_port_get_refs);
499 DECL_TEMPLATE(darwin, mach_port_mod_refs);
500 DECL_TEMPLATE(darwin, mach_port_get_set_status);
501 DECL_TEMPLATE(darwin, mach_port_destroy);
502 DECL_TEMPLATE(darwin, mach_port_request_notification);
503 DECL_TEMPLATE(darwin, mach_port_insert_right);
504 DECL_TEMPLATE(darwin, mach_port_get_attributes);
505 DECL_TEMPLATE(darwin, mach_port_set_attributes);
506 DECL_TEMPLATE(darwin, mach_port_insert_member);
507 DECL_TEMPLATE(darwin, task_get_special_port);
508 DECL_TEMPLATE(darwin, semaphore_create);
509 DECL_TEMPLATE(darwin, semaphore_destroy);
510 DECL_TEMPLATE(darwin, mach_ports_lookup);
511 DECL_TEMPLATE(darwin, task_threads);
512 DECL_TEMPLATE(darwin, task_suspend);
513 DECL_TEMPLATE(darwin, task_resume);
514 DECL_TEMPLATE(darwin, vm_allocate);
515 DECL_TEMPLATE(darwin, vm_deallocate);
516 DECL_TEMPLATE(darwin, vm_protect);
517 DECL_TEMPLATE(darwin, vm_inherit);
518 DECL_TEMPLATE(darwin, vm_read);
519 DECL_TEMPLATE(darwin, mach_vm_read);
520 DECL_TEMPLATE(darwin, vm_copy);
521 DECL_TEMPLATE(darwin, vm_read_overwrite);
522 DECL_TEMPLATE(darwin, vm_map);
523 DECL_TEMPLATE(darwin, vm_remap);
524 DECL_TEMPLATE(darwin, mach_make_memory_entry_64);
525 DECL_TEMPLATE(darwin, vm_purgable_control);
526 DECL_TEMPLATE(darwin, mach_vm_purgable_control);
527 DECL_TEMPLATE(darwin, mach_vm_allocate);
528 DECL_TEMPLATE(darwin, mach_vm_deallocate);
529 DECL_TEMPLATE(darwin, mach_vm_protect);
530 DECL_TEMPLATE(darwin, mach_vm_copy);
531 DECL_TEMPLATE(darwin, mach_vm_inherit);
532 DECL_TEMPLATE(darwin, mach_vm_map);
533 DECL_TEMPLATE(darwin, mach_vm_region_recurse);
534 DECL_TEMPLATE(darwin, thread_terminate);
535 DECL_TEMPLATE(darwin, thread_create);
536 DECL_TEMPLATE(darwin, thread_create_running);
537 DECL_TEMPLATE(darwin, thread_suspend);
538 DECL_TEMPLATE(darwin, thread_get_state);
539 DECL_TEMPLATE(darwin, thread_policy);
540 DECL_TEMPLATE(darwin, thread_info);
541 DECL_TEMPLATE(darwin, bootstrap_register);
542 DECL_TEMPLATE(darwin, bootstrap_look_up);
543 DECL_TEMPLATE(darwin, mach_msg_receive);
544 DECL_TEMPLATE(darwin, mach_msg_bootstrap);
545 DECL_TEMPLATE(darwin, mach_msg_host);
546 DECL_TEMPLATE(darwin, mach_msg_task);
547 DECL_TEMPLATE(darwin, mach_msg_thread);
548
549 // Mach traps
550 DECL_TEMPLATE(darwin, mach_msg_unhandled);
551 DECL_TEMPLATE(darwin, mach_msg);
552 DECL_TEMPLATE(darwin, mach_reply_port);
553 DECL_TEMPLATE(darwin, mach_thread_self);
554 DECL_TEMPLATE(darwin, mach_host_self);
555 DECL_TEMPLATE(darwin, mach_task_self);
556 DECL_TEMPLATE(darwin, syscall_thread_switch);
557 DECL_TEMPLATE(darwin, semaphore_signal);
558 DECL_TEMPLATE(darwin, semaphore_signal_all);
559 DECL_TEMPLATE(darwin, semaphore_signal_thread);
560 DECL_TEMPLATE(darwin, semaphore_wait);
561 DECL_TEMPLATE(darwin, semaphore_wait_signal);
562 DECL_TEMPLATE(darwin, semaphore_timedwait);
563 DECL_TEMPLATE(darwin, semaphore_timedwait_signal);
564 DECL_TEMPLATE(darwin, task_for_pid);
565 DECL_TEMPLATE(darwin, pid_for_task);
566 DECL_TEMPLATE(darwin, mach_timebase_info);
567 DECL_TEMPLATE(darwin, mach_wait_until);
568 DECL_TEMPLATE(darwin, mk_timer_create);
569 DECL_TEMPLATE(darwin, mk_timer_destroy);
570 DECL_TEMPLATE(darwin, mk_timer_arm);
571 DECL_TEMPLATE(darwin, mk_timer_cancel);
572 DECL_TEMPLATE(darwin, iokit_user_client_trap);
573 DECL_TEMPLATE(darwin, swtch);
574 DECL_TEMPLATE(darwin, swtch_pri);
575
576 // Machine-dependent traps
577 DECL_TEMPLATE(darwin, thread_fast_set_cthread_self);
578
579 // syswrap-<arch>-darwin.c
580 #include <mach/mach.h>
581 extern 
582 void thread_state_from_vex(thread_state_t mach_generic, 
583                            thread_state_flavor_t flavor, 
584                            mach_msg_type_number_t count, 
585                            VexGuestArchState *vex_generic);
586 extern
587 void thread_state_to_vex(const thread_state_t mach_generic, 
588                          thread_state_flavor_t flavor, 
589                          mach_msg_type_number_t count, 
590                          VexGuestArchState *vex_generic);
591 extern 
592 ThreadState *build_thread(const thread_state_t state, 
593                           thread_state_flavor_t flavor, 
594                           mach_msg_type_number_t count);
595 extern
596 void hijack_thread_state(thread_state_t mach_generic, 
597                          thread_state_flavor_t flavor, 
598                          mach_msg_type_number_t count, 
599                          ThreadState *tst);
600 extern
601 __attribute__((noreturn))
602 void call_on_new_stack_0_1 ( Addr stack,
603                              Addr retaddr,
604                              void (*f)(Word),
605                              Word arg1 );
606
607 extern void pthread_hijack_asm(void);
608 extern void pthread_hijack(Addr self, Addr kport, Addr func, Addr func_arg, 
609                            Addr stacksize, Addr flags, Addr sp);
610 extern void wqthread_hijack_asm(void);
611 extern void wqthread_hijack(Addr self, Addr kport, Addr stackaddr, Addr workitem, Int reuse, Addr sp);
612
613 extern Addr pthread_starter;
614 extern Addr wqthread_starter;
615 extern SizeT pthread_structsize;
616
617
618 #endif
619
620 /*--------------------------------------------------------------------*/
621 /*--- end                                                          ---*/
622 /*--------------------------------------------------------------------*/