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