X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/39236c6e673c41db228275375ab7fdb0f837b292..04b8595b18b1b41ac7a206e4b3d51a635f8413d7:/libsyscall/wrappers/_libc_funcptr.c diff --git a/libsyscall/wrappers/_libc_funcptr.c b/libsyscall/wrappers/_libc_funcptr.c index 8a2ba68c8..63eb09ca6 100644 --- a/libsyscall/wrappers/_libc_funcptr.c +++ b/libsyscall/wrappers/_libc_funcptr.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010 Apple Inc. All rights reserved. + * Copyright (c) 2010-2014 Apple Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -28,6 +28,7 @@ #include "_libkernel_init.h" extern _libkernel_functions_t _libkernel_functions; +extern void mig_os_release(void* ptr); __attribute__((visibility("hidden"))) void * @@ -70,3 +71,64 @@ _pthread_exit_if_canceled(int error) __attribute__((visibility("hidden"))) void _pthread_set_self(void *ptr __attribute__((__unused__))) {} + +__attribute__((visibility("hidden"))) +void +_pthread_clear_qos_tsd(mach_port_t thread_port) +{ + if (_libkernel_functions->version >= 3 && + _libkernel_functions->pthread_clear_qos_tsd) { + return _libkernel_functions->pthread_clear_qos_tsd(thread_port); + } +} + +/* + * mach/mach.h voucher_mach_msg API + */ + +static const struct _libkernel_voucher_functions + _libkernel_voucher_functions_empty; +static _libkernel_voucher_functions_t _libkernel_voucher_functions = + &_libkernel_voucher_functions_empty; + +kern_return_t +__libkernel_voucher_init(_libkernel_voucher_functions_t fns) +{ + _libkernel_voucher_functions = fns; + return KERN_SUCCESS; +} + +boolean_t +voucher_mach_msg_set(mach_msg_header_t *msg) +{ + if (_libkernel_voucher_functions->voucher_mach_msg_set) { + return _libkernel_voucher_functions->voucher_mach_msg_set(msg); + } + return 0; +} + +void +voucher_mach_msg_clear(mach_msg_header_t *msg) +{ + if (_libkernel_voucher_functions->voucher_mach_msg_clear) { + return _libkernel_voucher_functions->voucher_mach_msg_clear(msg); + } +} + +voucher_mach_msg_state_t +voucher_mach_msg_adopt(mach_msg_header_t *msg) +{ + if (_libkernel_voucher_functions->voucher_mach_msg_adopt) { + return _libkernel_voucher_functions->voucher_mach_msg_adopt(msg); + } + return VOUCHER_MACH_MSG_STATE_UNCHANGED; +} + +void +voucher_mach_msg_revert(voucher_mach_msg_state_t state) +{ + if (_libkernel_voucher_functions->voucher_mach_msg_revert) { + return _libkernel_voucher_functions->voucher_mach_msg_revert(state); + } +} +