[launchd-changes] [23053] trunk/launchd/src

source_changes at macosforge.org source_changes at macosforge.org
Fri Feb 9 14:51:16 PST 2007


Revision: 23053
          http://trac.macosforge.org/projects/launchd/changeset/23053
Author:   zarzycki at apple.com
Date:     2007-02-09 14:51:16 -0800 (Fri, 09 Feb 2007)

Log Message:
-----------
Move call to exit() and reboot() to jobmgr_remove(root_jobmgr).

Modified Paths:
--------------
    trunk/launchd/src/launchd.c
    trunk/launchd/src/launchd_core_logic.c
    trunk/launchd/src/launchd_core_logic.h

Modified: trunk/launchd/src/launchd.c
===================================================================
--- trunk/launchd/src/launchd.c	2007-02-09 22:31:36 UTC (rev 23052)
+++ trunk/launchd/src/launchd.c	2007-02-09 22:51:16 UTC (rev 23053)
@@ -417,7 +417,7 @@
 
 	rlcj = NULL;
 
-	root_jobmgr = jobmgr_shutdown(root_jobmgr);
+	launchd_assert(jobmgr_shutdown(root_jobmgr) != NULL);
 }
 
 void
@@ -624,7 +624,8 @@
 void
 launchd_post_kevent(void)
 {
-	if (shutdown_in_progress && (!root_jobmgr || jobmgr_is_idle(root_jobmgr))) {
+#if 0
+	if (shutdown_in_progress && jobmgr_is_idle(root_jobmgr)) {
 		shutdown_in_progress = false;
 
 		if (getpid() == 1) {
@@ -632,11 +633,9 @@
 				kill(-1, SIGKILL); /* One last time, just to clear the room */
 				launchd_assumes(execl("/sbin/launchd", "/sbin/launchd", "-s", NULL) != -1);
 			}
-			launchd_assumes(reboot(RB_HALT) != -1);
-		} else {
-			exit(EXIT_SUCCESS);
 		}
 	}
+#endif
 	if (getpid() == 1) {
 		if (rlcj && job_active(rlcj)) {
 			return;

Modified: trunk/launchd/src/launchd_core_logic.c
===================================================================
--- trunk/launchd/src/launchd_core_logic.c	2007-02-09 22:31:36 UTC (rev 23052)
+++ trunk/launchd/src/launchd_core_logic.c	2007-02-09 22:51:16 UTC (rev 23053)
@@ -40,6 +40,7 @@
 #include <sys/ucred.h>
 #include <sys/fcntl.h>
 #include <sys/un.h>
+#include <sys/reboot.h>
 #include <sys/wait.h>
 #include <sys/sysctl.h>
 #include <sys/sockio.h>
@@ -211,6 +212,7 @@
 static jobmgr_t jobmgr_new(jobmgr_t jm, mach_port_t requestorport, mach_port_t checkin_port);
 static jobmgr_t jobmgr_parent(jobmgr_t jm);
 static jobmgr_t jobmgr_tickle(jobmgr_t jm);
+static bool jobmgr_is_idle(jobmgr_t jm);
 static void jobmgr_log_stray_children(jobmgr_t jm);
 static void jobmgr_remove(jobmgr_t jm);
 static void jobmgr_dispatch_all(jobmgr_t jm);
@@ -576,6 +578,10 @@
 	if (jm->parentmgr) {
 		SLIST_REMOVE(&jm->parentmgr->submgrs, jm, jobmgr_s, sle);
 		jobmgr_tickle(jm->parentmgr);
+	} else if (getpid() == 1) {
+		jobmgr_assumes(jm,  reboot(RB_HALT) != -1);
+	} else {
+		exit(EXIT_SUCCESS);
 	}
 	
 	free(jm);

Modified: trunk/launchd/src/launchd_core_logic.h
===================================================================
--- trunk/launchd/src/launchd_core_logic.h	2007-02-09 22:31:36 UTC (rev 23052)
+++ trunk/launchd/src/launchd_core_logic.h	2007-02-09 22:51:16 UTC (rev 23053)
@@ -31,7 +31,6 @@
 
 void jobmgr_set_stdout(jobmgr_t jm, const char *what);
 void jobmgr_set_stderr(jobmgr_t jm, const char *what);
-bool jobmgr_is_idle(jobmgr_t jm);
 jobmgr_t jobmgr_shutdown(jobmgr_t jm);
 void jobmgr_dispatch_all_semaphores(jobmgr_t jm);
 job_t jobmgr_find(jobmgr_t jm, const char *label);

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20070209/626554a0/attachment.html


More information about the launchd-changes mailing list