]> git.saurik.com Git - apple/xnu.git/blobdiff - libsyscall/mach/mig_reply_port.c
xnu-6153.81.5.tar.gz
[apple/xnu.git] / libsyscall / mach / mig_reply_port.c
index aa2890ac675ba2f8d60b0ca5ba389d395cbf4145..521b5d6264a61e1f1816e0de7db451d17e9e2d05 100644 (file)
@@ -2,7 +2,7 @@
  * Copyright (c) 2010 Apple Inc. All rights reserved.
  *
  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
  * 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
  * 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
  * 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.
  * 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.
  * 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,
  * 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,
  * 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.
  * 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 <mach/mach.h>
 #include <mach/mach_init.h>
  * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
  */
 
 #include <mach/mach.h>
 #include <mach/mach_init.h>
+#include <sys/cdefs.h>
+#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)
 {
 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);
        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)
 {
 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);
        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
  ***********************************************************/
 
 void
-mig_put_reply_port(mach_port_t reply_port)
+mig_put_reply_port(mach_port_t reply_port __unused)
 {
 }
 {
 }