Revision: 22873 http://trac.macosforge.org/projects/launchd/changeset/22873 Author: zarzycki@apple.com Date: 2006-09-23 13:17:01 -0700 (Sat, 23 Sep 2006) Log Message: ----------- Structural and semantic reorganization: Give all jobs a dedicated Mach port to represent those objects outside of launchd (a.k.a. "vproc_t"). Modified Paths: -------------- trunk/launchd/src/launchd_core_logic.c Modified: trunk/launchd/src/launchd_core_logic.c =================================================================== --- trunk/launchd/src/launchd_core_logic.c 2006-09-23 20:00:16 UTC (rev 22872) +++ trunk/launchd/src/launchd_core_logic.c 2006-09-23 20:17:01 UTC (rev 22873) @@ -627,9 +627,6 @@ j->legacy_mach_job = true; j->priv_port_has_senders = true; /* the IPC that called us will make-send on this port */ - if (!job_setup_machport(j)) - goto out_bad; - if (!job_assumes(j, launchd_mport_notify_req(j->bs_port, MACH_NOTIFY_NO_SENDERS) == KERN_SUCCESS)) { job_assumes(j, launchd_mport_close_recv(j->bs_port) == KERN_SUCCESS); goto out_bad; @@ -679,11 +676,6 @@ jr->stall_before_exec = w4d; jr->force_ppc = fppc; - if (!job_setup_machport(jr)) { - job_remove(jr); - return NULL; - } - if (workingdir) jr->workingdir = strdup(workingdir); @@ -723,8 +715,9 @@ j = calloc(1, sizeof(struct job_s) + strlen(label) + 1); - if (!job_assumes(p, j != NULL)) - goto out_bad; + if (!job_assumes(p, j != NULL)) { + return NULL; + } strcpy(j->label, label); j->kqjob_callback = job_callback; @@ -735,6 +728,10 @@ j->checkedin = true; j->firstborn = (strcmp(label, FIRSTBORN_LABEL) == 0); + if (!job_setup_machport(j)) { + goto out_bad; + } + if (reqport != MACH_PORT_NULL) { j->req_port = reqport; if (!job_assumes(j, launchd_mport_notify_req(reqport, MACH_NOTIFY_DEAD_NAME) == KERN_SUCCESS)) @@ -783,13 +780,12 @@ return j; out_bad: - if (j) { - if (j->prog) - free(j->prog); - if (j->stdinpath) - free(j->stdinpath); - free(j); - } + if (j->prog) + free(j->prog); + if (j->stdinpath) + free(j->stdinpath); + free(j); + return NULL; } @@ -1079,8 +1075,6 @@ case 'M': if (strcasecmp(key, LAUNCH_JOBKEY_MACHSERVICES) == 0) { launch_data_dict_iterate(value, machservice_setup, j); - if (!SLIST_EMPTY(&j->machservices)) - job_setup_machport(j); } break; default:
participants (1)
-
source_changes@macosforge.org