X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/de355530ae67247cbd0da700edb3a2a1dae884c2..55e303ae13a4cf49d70f2294092726f2fffb9ef2:/bsd/kern/kern_shutdown.c?ds=sidebyside diff --git a/bsd/kern/kern_shutdown.c b/bsd/kern/kern_shutdown.c index 45697a58d..19f68507d 100644 --- a/bsd/kern/kern_shutdown.c +++ b/bsd/kern/kern_shutdown.c @@ -3,19 +3,22 @@ * * @APPLE_LICENSE_HEADER_START@ * - * The contents of this file constitute Original Code as defined in and - * are subject to the Apple Public Source License Version 1.1 (the - * "License"). You may not use this file except in compliance with the - * License. Please obtain a copy of the License at - * http://www.apple.com/publicsource and read it before using this file. + * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. * - * This Original Code and all software distributed under the License are - * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * 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 + * compliance with the License. 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, * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE 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_LICENSE_HEADER_END@ */ @@ -56,6 +59,7 @@ #include #include #include +#include int waittime = -1; @@ -91,6 +95,8 @@ boot(paniced, howto, command) /* handle live procs (deallocate their root and current directories). */ proc_shutdown(); + audit_shutdown(); + sync(p, (void *)NULL, (int *)NULL); /* Release vnodes from the VM object cache */ @@ -205,6 +211,19 @@ proc_shutdown() if (TERM_catch == 0) break; } + if (TERM_catch) { + /* + * log the names of the unresponsive tasks + */ + + for (p = allproc.lh_first; p; p = p->p_list.le_next) { + if (((p->p_flag&P_SYSTEM) == 0) && (p->p_pptr->p_pid != 0) && (p != self)) { + if (p->p_sigcatch & sigmask(SIGTERM)) + printf("%s[%d]: didn't act on SIGTERM\n", p->p_comm, p->p_pid); + } + } + IOSleep(1000 * 5); + } /* * send a SIGKILL to all the procs still hanging around @@ -248,7 +267,7 @@ proc_shutdown() thread_block(THREAD_CONTINUE_NULL); } else { - p->exit_thread = current_thread(); + p->exit_thread = current_act(); printf("."); exit1(p, 1, (int *)NULL); }