]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/uxkern/ux_exception.c
xnu-3789.1.32.tar.gz
[apple/xnu.git] / bsd / uxkern / ux_exception.c
index c3313018cbb7907503b055c33de19d1c586915e0..21bd3eec9535affb2aebfb98e9fd4a0a14633770 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000-2008 Apple Inc. All rights reserved.
+ * Copyright (c) 2000-2016 Apple Inc. All rights reserved.
  *
  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
  * 
@@ -76,8 +76,7 @@ extern mach_msg_return_t mach_msg_send(mach_msg_header_t *msg,
                mach_msg_option_t option, mach_msg_size_t send_size,
                mach_msg_timeout_t send_timeout, mach_port_name_t notify);
 extern thread_t convert_port_to_thread(ipc_port_t port);
-extern void ipc_port_release(ipc_port_t);
-
+extern void ipc_port_release_send(ipc_port_t port);
 
 
 
@@ -98,8 +97,8 @@ mach_port_name_t              ux_exception_port;
 
 static task_t                  ux_handler_self;
 
-static
-void
+__attribute__((noreturn))
+static void
 ux_handler(void)
 {
     task_t             self = current_task();
@@ -256,7 +255,7 @@ catch_mach_exception_raise(
                       (void *) &thread_port) == MACH_MSG_SUCCESS)) {
         if (IPC_PORT_VALID(thread_port)) {
           th_act = convert_port_to_thread(thread_port);
-          ipc_port_release(thread_port);
+          ipc_port_release_send(thread_port);
        } else {
           th_act = THREAD_NULL;
        }
@@ -334,7 +333,7 @@ catch_mach_exception_raise(
                        ut->uu_exception = exception;
                        //ut->uu_code = code[0]; // filled in by threadsignal
                        ut->uu_subcode = code[1];                       
-                       threadsignal(th_act, ux_signal, code[0]);
+                       threadsignal(th_act, ux_signal, code[0], TRUE);
            }
            if (p != NULL) 
                    proc_rele(p);