+#define DISPATCH_PERF_MON_worker_thread_start DISPATCH_CODE_START(PERF_MON, 1)
+#define DISPATCH_PERF_MON_worker_thread_end DISPATCH_CODE_END(PERF_MON, 1)
+#define DISPATCH_PERF_MON_worker_useless DISPATCH_CODE(PERF_MON, 2)
+
+DISPATCH_ALWAYS_INLINE
+static inline void
+_dispatch_ktrace_impl(uint32_t code, uint64_t a, uint64_t b,
+ uint64_t c, uint64_t d)
+{
+ if (!code) return;
+#ifdef _COMM_PAGE_KDEBUG_ENABLE
+ if (likely(*(volatile uint32_t *)_COMM_PAGE_KDEBUG_ENABLE == 0)) return;
+#endif
+ kdebug_trace(code, a, b, c, d);
+}
+#define _dispatch_cast_to_uint64(e) \
+ __builtin_choose_expr(sizeof(e) > 4, \
+ ((uint64_t)(e)), ((uint64_t)(uintptr_t)(e)))
+#define _dispatch_ktrace(code, a, b, c, d) _dispatch_ktrace_impl(code, \
+ _dispatch_cast_to_uint64(a), _dispatch_cast_to_uint64(b), \
+ _dispatch_cast_to_uint64(c), _dispatch_cast_to_uint64(d))
+
+#else // __has_include(<sys/kdebug.h>)
+#define DISPATCH_CODE(subclass, code) 0
+#define ARIADNE_ENTER_DISPATCH_MAIN_CODE 0
+#define DISPATCH_USE_VOUCHER_KDEBUG_TRACE 0
+#define _dispatch_ktrace(code, a, b, c, d)
+#endif // !__has_include(<sys/kdebug.h>)
+#define _dispatch_ktrace4(code, a, b, c, d) _dispatch_ktrace(code, a, b, c, d)
+#define _dispatch_ktrace3(code, a, b, c) _dispatch_ktrace(code, a, b, c, 0)
+#define _dispatch_ktrace2(code, a, b) _dispatch_ktrace(code, a, b, 0, 0)
+#define _dispatch_ktrace1(code, a) _dispatch_ktrace(code, a, 0, 0, 0)
+#define _dispatch_ktrace0(code) _dispatch_ktrace(code, 0, 0, 0, 0)
+
+#ifndef MACH_MSGH_BITS_VOUCHER_MASK
+#define MACH_MSGH_BITS_VOUCHER_MASK 0x001f0000
+#define MACH_MSGH_BITS_SET_PORTS(remote, local, voucher) \
+ (((remote) & MACH_MSGH_BITS_REMOTE_MASK) | \
+ (((local) << 8) & MACH_MSGH_BITS_LOCAL_MASK) | \
+ (((voucher) << 16) & MACH_MSGH_BITS_VOUCHER_MASK))
+#define MACH_MSGH_BITS_VOUCHER(bits) \
+ (((bits) & MACH_MSGH_BITS_VOUCHER_MASK) >> 16)
+#define MACH_MSGH_BITS_HAS_VOUCHER(bits) \
+ (MACH_MSGH_BITS_VOUCHER(bits) != MACH_MSGH_BITS_ZERO)
+#define msgh_voucher_port msgh_reserved
+#define mach_voucher_t mach_port_t
+#define MACH_VOUCHER_NULL MACH_PORT_NULL
+#define MACH_SEND_INVALID_VOUCHER 0x10000005
+#endif
+
+#ifndef VOUCHER_USE_MACH_VOUCHER
+#if __has_include(<mach/mach_voucher.h>)
+#define VOUCHER_USE_MACH_VOUCHER 1
+#endif
+#endif // VOUCHER_USE_MACH_VOUCHER
+
+#ifndef VOUCHER_USE_EMPTY_MACH_BASE_VOUCHER
+#if RDAR_24272659 // FIXME: <rdar://problem/24272659>
+#define VOUCHER_USE_EMPTY_MACH_BASE_VOUCHER 1
+#else // RDAR_24272659
+#define VOUCHER_USE_EMPTY_MACH_BASE_VOUCHER 0
+#endif // RDAR_24272659
+#endif
+
+#ifndef VOUCHER_USE_PERSONA
+#if VOUCHER_USE_MACH_VOUCHER && defined(BANK_PERSONA_TOKEN) && \
+ TARGET_OS_IOS && !TARGET_OS_SIMULATOR
+#define VOUCHER_USE_PERSONA 1
+#else
+#define VOUCHER_USE_PERSONA 0
+#endif
+#endif // VOUCHER_USE_PERSONA
+
+#if VOUCHER_USE_MACH_VOUCHER
+#undef DISPATCH_USE_IMPORTANCE_ASSERTION
+#define DISPATCH_USE_IMPORTANCE_ASSERTION 0
+#else
+#undef MACH_RCV_VOUCHER
+#define MACH_RCV_VOUCHER 0
+#define VOUCHER_USE_PERSONA 0
+#endif // VOUCHER_USE_MACH_VOUCHER
+
+#define _dispatch_hardware_crash() \
+ __asm__(""); __builtin_trap() // <rdar://problem/17464981>
+
+#define _dispatch_set_crash_log_cause_and_message(ac, msg) ((void)(ac))
+#define _dispatch_set_crash_log_message(msg)
+#define _dispatch_set_crash_log_message_dynamic(msg)