X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/6d2010ae8f7a6078e10b361c6962983bab233e0f..c6bf4f310a33a9262d455ea4d3f0630b1255e3fe:/libsyscall/mach/mig_reply_port.c?ds=inline diff --git a/libsyscall/mach/mig_reply_port.c b/libsyscall/mach/mig_reply_port.c index aa2890ac6..521b5d626 100644 --- a/libsyscall/mach/mig_reply_port.c +++ b/libsyscall/mach/mig_reply_port.c @@ -2,7 +2,7 @@ * Copyright (c) 2010 Apple Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ - * + * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License * Version 2.0 (the 'License'). You may not use this file except in @@ -11,10 +11,10 @@ * unlawful or unlicensed copies of an Apple operating system, or to * circumvent, violate, or enable the circumvention or violation of, any * terms of an Apple operating system software license agreement. - * + * * Please obtain a copy of the License at * http://www.opensource.apple.com/apsl/ and read it before using this file. - * + * * The Original Code and all software distributed under the License are * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, @@ -22,29 +22,27 @@ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. * Please see the License for the specific language governing rights and * limitations under the License. - * + * * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ */ #include #include +#include +#include "tsd.h" -//extern mach_port_t _pthread_reply_port(pthread_t); -static mach_port_t _task_reply_port = MACH_PORT_NULL; +__XNU_PRIVATE_EXTERN mach_port_t _task_reply_port = MACH_PORT_NULL; -extern mach_port_t _mig_get_reply_port(void); -extern void _mig_set_reply_port(mach_port_t port); +static inline mach_port_t +_mig_get_reply_port() +{ + return (mach_port_t)(uintptr_t)_os_tsd_get_direct(__TSD_MIG_REPLY); +} -/* - * Called by mach_init with 0 before cthread_init is - * called and again with 1 at the end of cthread_init. - */ -void -_mig_init(int init_done) +static inline void +_mig_set_reply_port(mach_port_t port) { - if (init_done == 0) { - _task_reply_port = mach_reply_port(); - } + _os_tsd_set_direct(__TSD_MIG_REPLY, (void *)(uintptr_t)port); } /* @@ -56,7 +54,7 @@ _mig_init(int init_done) mach_port_t mig_get_reply_port(void) { - register mach_port_t port = _mig_get_reply_port(); + mach_port_t port = _mig_get_reply_port(); if (port == MACH_PORT_NULL) { port = mach_reply_port(); _mig_set_reply_port(port); @@ -71,9 +69,7 @@ mig_get_reply_port(void) void mig_dealloc_reply_port(mach_port_t migport) { - register mach_port_t port; - - port = _mig_get_reply_port(); + mach_port_t port = _mig_get_reply_port(); if (port != MACH_PORT_NULL && port != _task_reply_port) { _mig_set_reply_port(_task_reply_port); (void) mach_port_mod_refs(mach_task_self(), port, MACH_PORT_RIGHT_RECEIVE, -1); @@ -90,6 +86,6 @@ mig_dealloc_reply_port(mach_port_t migport) ***********************************************************/ void -mig_put_reply_port(mach_port_t reply_port) +mig_put_reply_port(mach_port_t reply_port __unused) { }