DECL_TEMPLATE(darwin, sem_wait); // 271
DECL_TEMPLATE(darwin, sem_trywait); // 272
DECL_TEMPLATE(darwin, sem_post); // 273
+
+#if DARWIN_VERS < DARWIN_10_10
// NYI sem_getvalue 274
+#elif DARWIN_VERS == DARWIN_10_10
+DECL_TEMPLATE(darwin, sysctlbyname); // 274
+#endif
+
DECL_TEMPLATE(darwin, sem_init); // 275
DECL_TEMPLATE(darwin, sem_destroy); // 276
DECL_TEMPLATE(darwin, open_extended) // 277
// NYI lio_listio 320
// NYI __pthread_cond_wait 321
// NYI iopolicysys 322
-// 323
+// NYI process_policy 323
// NYI mlockall 324
// NYI munlockall 325
// 326
// NYI audit_session_join 429
DECL_TEMPLATE(darwin, fileport_makeport); // 430
+// NYI fileport_makefd 431
+// NYI audit_session_port 432
+// NYI pid_suspend 433
+// NYI pid_resume 434
+#if DARWIN_VERS == DARWIN_10_10
+// NYI pid_hibernate 435
+// NYI pid_shutdown_sockets 436
+#endif /* DARWIN_VERS == DARWIN_10_10 */
+// old old shared_region_slide_np 437
// NYI shared_region_map_and_slide_np // 438
// NYI kas_info // 439
// NYI memorystatus_control // 440
DECL_TEMPLATE(darwin, guarded_close_np); // 442
DECL_TEMPLATE(darwin, guarded_kqueue_np); // 443
DECL_TEMPLATE(darwin, change_fdguard_np); // 444
-
+// old __proc_suppress 445
// NYI proc_rlimit_control // 446
DECL_TEMPLATE(darwin, connectx); // 447
DECL_TEMPLATE(darwin, disconnectx); // 448
+// NYI peeloff // 449
+// NYI socket_delegate // 450
+// NYI telemetry // 451
+// NYI proc_uuid_policy // 452
+// NYI memorystatus_get_level // 453
+// NYI system_override // 454
+// NYI vfs_purge // 455
+#if DARWIN_VERS == DARWIN_10_10
+// NYI sfi_ctl // 456
+// NYI sfi_pidctl // 457
+// NYI coalition // 458
+// NYI coalition_info // 459
+// NYI necp_match_policy // 460
+// NYI getattrlistbulk // 461
+// 462
+// NYI openat // 463
+// NYI openat_nocancel // 464
+// NYI renameat // 465
+// NYI faccessat // 466
+// NYI fchmodat // 467
+// NYI fchownat // 468
+// NYI fstatat // 469
+// NYI fstatat64 // 470
+// NYI linkat // 471
+// NYI unlinkat // 472
+// NYI readlinkat // 473
+// NYI symlinkat // 474
+// NYI mkdirat // 475
+// NYI getattrlistat // 476
+// NYI proc_trace_log // 477
+DECL_TEMPLATE(darwin, bsdthread_ctl); // 478
+// NYI openbyid_np // 479
+// NYI recvmsg_x // 480
+// NYI sendmsg_x // 481
+// NYI thread_selfusage // 482
+// NYI csrctl // 483
+// NYI guarded_open_dprotected_np // 484
+// NYI guarded_write_np // 485
+// NYI guarded_pwrite_np // 486
+// NYI guarded_writev_np // 487
+// NYI rename_ext // 488
+// NYI mremap_encrypted // 489
+#endif /* DARWIN_VERS == DARWIN_10_10 */
// Mach message helpers
DECL_TEMPLATE(darwin, mach_port_set_context);
DECL_TEMPLATE(darwin, mach_msg_thread);
// Mach traps
-#if DARWIN_VERS == DARWIN_10_8 || DARWIN_VERS == DARWIN_10_9
+#if DARWIN_VERS >= DARWIN_10_8
DECL_TEMPLATE(darwin, kernelrpc_mach_vm_allocate_trap);
DECL_TEMPLATE(darwin, kernelrpc_mach_vm_deallocate_trap);
DECL_TEMPLATE(darwin, kernelrpc_mach_vm_protect_trap);
DECL_TEMPLATE(darwin, kernelrpc_mach_port_unguard_trap);
DECL_TEMPLATE(darwin, iopolicysys);
DECL_TEMPLATE(darwin, process_policy);
-#endif /* DARWIN_VERS == DARWIN_10_8 || DARWIN_VERS == DARWIN_10_9 */
+#endif /* DARWIN_VERS >= DARWIN_10_8 */
DECL_TEMPLATE(darwin, mach_msg_unhandled);
DECL_TEMPLATE(darwin, mach_msg_unhandled_check);
DECL_TEMPLATE(darwin, mach_msg);
Bool is_reuse = reuse != 0;
# elif DARWIN_VERS == DARWIN_10_8 || DARWIN_VERS == DARWIN_10_9
Bool is_reuse = (reuse & 0x20000 /* == WQ_FLAG_THREAD_REUSE */) != 0;
+# elif DARWIN_VERS == DARWIN_10_10
+ // XXX FIXME is this correct?
+ Bool is_reuse = (reuse & 0x20000 /* == WQ_FLAG_THREAD_REUSE */) != 0;
+# else
+# error "Unsupported Darwin version"
# endif
if (is_reuse) {
UWord magic_delta = 0;
# elif DARWIN_VERS == DARWIN_10_7 || DARWIN_VERS == DARWIN_10_8
UWord magic_delta = 0x60;
-# elif DARWIN_VERS == DARWIN_10_9
+# elif DARWIN_VERS == DARWIN_10_9 || DARWIN_VERS == DARWIN_10_10
UWord magic_delta = 0xE0;
# else
# error "magic_delta: to be computed on new OS version"
#endif /* DARWIN_VERS >= DARWIN_10_9 */
+/* ---------------------------------------------------------------------
+ Added for OSX 10.10 (Yosemite)
+ ------------------------------------------------------------------ */
+
+#if DARWIN_VERS >= DARWIN_10_10
+
+PRE(bsdthread_ctl)
+{
+ // int bsdthread_ctl(user_addr_t cmd, user_addr_t arg1,
+ // user_addr_t arg2, user_addr_t arg3)
+ PRINT("bsdthread_ctl(FIXME)(%lx,%lx,%lx,%lx)", ARG1, ARG2, ARG3, ARG4);
+}
+
+PRE(sysctlbyname)
+{
+ // int sysctlbyname(const char *name, size_t namelen, void *old,
+ // size_t *oldlenp, void *new, size_t newlen)
+ PRINT("sysctlbyname(FIXME)(%lx(%s),%ld, %lx,%lx, %lx,%lx",
+ ARG1, ARG1 ? (const HChar*)ARG1 : "(null)",
+ ARG2, ARG3, ARG4, ARG5, ARG6);
+}
+
+#endif /* DARWIN_VERS >= DARWIN_10_10 */
+
+
/* ---------------------------------------------------------------------
syscall tables
------------------------------------------------------------------ */
MACX_(__NR_sem_wait, sem_wait),
MACX_(__NR_sem_trywait, sem_trywait),
MACX_(__NR_sem_post, sem_post),
-// _____(__NR_sem_getvalue),
+ // 274 seems to have been repurposed for 10.10. Was sem_getvalue,
+ // has become sysctlbyname. See below.
MACXY(__NR_sem_init, sem_init),
MACX_(__NR_sem_destroy, sem_destroy),
MACX_(__NR_open_extended, open_extended), // 277
MACX_(__NR_connectx, connectx),
MACX_(__NR_disconnectx, disconnectx),
#endif
-
+#if DARWIN_VERS >= DARWIN_10_10
+ MACX_(__NR_bsdthread_ctl, bsdthread_ctl),
+ MACX_(__NR_sysctlbyname, sysctlbyname),
+#endif
// _____(__NR_MAXSYSCALL)
MACX_(__NR_DARWIN_FAKE_SIGRETURN, FAKE_SIGRETURN)
};
#define __NR_sem_wait VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(271)
#define __NR_sem_trywait VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(272)
#define __NR_sem_post VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(273)
+
+#if DARWIN_VERS < DARWIN_10_10
#define __NR_sem_getvalue VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(274)
+#elif DARWIN_VERS == DARWIN_10_10
+#define __NR_sysctlbyname VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(274)
+#endif
+
#define __NR_sem_init VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(275)
#define __NR_sem_destroy VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(276)
#define __NR_open_extended VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(277)
#define __NR_fsgetpath VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(427)
#define __NR_audit_session_self VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(428)
#define __NR_audit_session_join VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(429)
-#endif
+#endif /* DARWIN_VERS >= DARWIN_10_6 */
#if DARWIN_VERS >= DARWIN_10_9
#define __NR_fileport_makeport VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(430)
#define __NR_fileport_makefd VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(431)
#define __NR_memorystatus_get_level VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(453)
#define __NR_system_override VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(454)
#define __NR_vfs_purge VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(455)
+#endif /* DARWIN_VERS >= DARWIN_10_9 */
+
+#if DARWIN_VERS == DARWIN_10_10
+#define __NR_bsdthread_ctl VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(478)
#endif
#if DARWIN_VERS < DARWIN_10_6
#define __NR_MAXSYSCALL VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(430)
#elif DARWIN_VERS == DARWIN_10_9
#define __NR_MAXSYSCALL VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(456)
+#elif DARWIN_VERS == DARWIN_10_10
+#define __NR_MAXSYSCALL VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(490)
#else
#error unknown darwin version
#endif