X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/1c79356b52d46aa6b508fb032f5ae709b1f2897b..5eebf7385fedb1517b66b53c28e5aa6bb0a2be50:/bsd/uxkern/ux_exception.c?ds=sidebyside diff --git a/bsd/uxkern/ux_exception.c b/bsd/uxkern/ux_exception.c index 7a4e53e45..655634a46 100644 --- a/bsd/uxkern/ux_exception.c +++ b/bsd/uxkern/ux_exception.c @@ -42,6 +42,7 @@ #include #include #include +#include #include #include @@ -153,20 +154,14 @@ ux_handler(void) void ux_handler_init(void) { - task_t handler_task; - simple_lock_init(&ux_handler_init_lock); ux_exception_port = MACH_PORT_NULL; - if (kernel_task_create(kernel_task, - 0, 0, &handler_task) != MACH_MSG_SUCCESS) { - panic("Failed to created ux handler task\n"); - } - (void) kernel_thread(handler_task, ux_handler); + (void) kernel_thread(kernel_task, ux_handler); simple_lock(&ux_handler_init_lock); if (ux_exception_port == MACH_PORT_NULL) { simple_unlock(&ux_handler_init_lock); assert_wait(&ux_exception_port, THREAD_UNINT); - thread_block((void (*)(void)) 0); + thread_block(THREAD_CONTINUE_NULL); } else simple_unlock(&ux_handler_init_lock); @@ -198,7 +193,7 @@ catch_exception_raise( (ipc_object_copyin(get_task_ipcspace(self), thread_name, MACH_MSG_TYPE_PORT_SEND, (void *) &thread_port) == MACH_MSG_SUCCESS)) { - if (IPC_OBJECT_VALID(thread_port)) { + if (IPC_PORT_VALID(thread_port)) { th_act = (thread_act_t)convert_port_to_act(thread_port); ipc_port_release(thread_port); } else { @@ -306,6 +301,9 @@ void ux_exception( case EXC_UNIX_ABORT: *ux_signal = SIGABRT; break; + case EXC_SOFT_SIGNAL: + *ux_signal = SIGKILL; + break; } break;