[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