Revision: 22960 http://trac.macosforge.org/projects/launchd/changeset/22960 Author: zarzycki@apple.com Date: 2006-11-29 09:40:04 -0800 (Wed, 29 Nov 2006) Log Message: ----------- One less global. Modified Paths: -------------- trunk/launchd/src/launchd.c trunk/launchd/src/launchd_core_logic.c trunk/launchd/src/launchd_core_logic.h trunk/launchd/src/launchd_runtime.c Modified: trunk/launchd/src/launchd.c =================================================================== --- trunk/launchd/src/launchd.c 2006-11-29 00:04:29 UTC (rev 22959) +++ trunk/launchd/src/launchd.c 2006-11-29 17:40:04 UTC (rev 22960) @@ -659,7 +659,7 @@ void launchd_post_kevent(void) { - if (shutdown_in_progress && total_children == 0) { + if (shutdown_in_progress && jobmgr_is_idle(root_jobmgr)) { shutdown_in_progress = false; if (getpid() != 1) { Modified: trunk/launchd/src/launchd_core_logic.c =================================================================== --- trunk/launchd/src/launchd_core_logic.c 2006-11-29 00:04:29 UTC (rev 22959) +++ trunk/launchd/src/launchd_core_logic.c 2006-11-29 17:40:04 UTC (rev 22960) @@ -339,7 +339,6 @@ static char **mach_cmd2argv(const char *string); jobmgr_t root_jobmgr; jobmgr_t gc_this_jobmgr; -size_t total_children; void simple_zombie_reaper(void *obj __attribute__((unused)), struct kevent *kev) @@ -598,7 +597,6 @@ job_reap(j); } else { /* we've attached the simple zombie reaper, we're going to delete the job before it is dead */ - total_children--; job_stop(j); } } @@ -1619,7 +1617,6 @@ } } - total_children--; j->last_exit_status = status; j->p = 0; } @@ -1807,7 +1804,6 @@ break; default: j->p = c; - total_children++; job_assumes(j, close(execspair[1]) == 0); j->execfd = _fd(execspair[0]); if (sipc) { @@ -3000,6 +2996,20 @@ } } +bool +jobmgr_is_idle(jobmgr_t jm) +{ + job_t ji; + + SLIST_FOREACH(ji, &jm->jobs, sle) { + if (ji->p) { + return false; + } + } + + return true; +} + char * jobmgr_get_stdout(jobmgr_t jm) { Modified: trunk/launchd/src/launchd_core_logic.h =================================================================== --- trunk/launchd/src/launchd_core_logic.h 2006-11-29 00:04:29 UTC (rev 22959) +++ trunk/launchd/src/launchd_core_logic.h 2006-11-29 17:40:04 UTC (rev 22960) @@ -28,8 +28,8 @@ extern jobmgr_t root_jobmgr; extern jobmgr_t gc_this_jobmgr; -extern size_t total_children; +bool jobmgr_is_idle(jobmgr_t jm); void jobmgr_remove_all_inactive(jobmgr_t jm); void jobmgr_dispatch_all_other_semaphores(jobmgr_t jm, job_t nj); job_t jobmgr_find(jobmgr_t jm, const char *label); Modified: trunk/launchd/src/launchd_runtime.c =================================================================== --- trunk/launchd/src/launchd_runtime.c 2006-11-29 00:04:29 UTC (rev 22959) +++ trunk/launchd/src/launchd_runtime.c 2006-11-29 17:40:04 UTC (rev 22960) @@ -74,6 +74,7 @@ static void async_callback(void); static kq_callback kqasync_callback = (kq_callback)async_callback; +static void record_caller_creds(mach_msg_header_t *mh); static void launchd_runtime2(mach_msg_size_t msg_size, mig_reply_error_t *bufRequest, mig_reply_error_t *bufReply); static mach_msg_size_t max_msg_size; static mig_callback *mig_cb_table; @@ -477,7 +478,7 @@ return KERN_SUCCESS; } -static void +void record_caller_creds(mach_msg_header_t *mh) { mach_msg_max_trailer_t *tp;
participants (1)
-
source_changes@macosforge.org