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

source_changes at macosforge.org source_changes at macosforge.org
Sat Mar 3 15:09:50 PST 2007


Revision: 23124
          http://trac.macosforge.org/projects/launchd/changeset/23124
Author:   zarzycki at apple.com
Date:     2007-03-03 15:09:49 -0800 (Sat, 03 Mar 2007)

Log Message:
-----------
Transform jobmgr_fork() to runtime_fork(). Someday, I'll create runtime_spawn() that wraps and extends posix_spawn().

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

Modified: trunk/launchd/src/launchd_core_logic.c
===================================================================
--- trunk/launchd/src/launchd_core_logic.c	2007-03-02 23:46:29 UTC (rev 23123)
+++ trunk/launchd/src/launchd_core_logic.c	2007-03-03 23:09:49 UTC (rev 23124)
@@ -221,7 +221,6 @@
 static job_t job_mig_intran2(jobmgr_t jm, mach_port_t p);
 static void job_export_all2(jobmgr_t jm, launch_data_t where);
 static void jobmgr_callback(void *obj, struct kevent *kev);
-static pid_t jobmgr_fork(jobmgr_t jm);
 static void jobmgr_setup_env_from_other_jobs(jobmgr_t jm);
 static struct machservice *jobmgr_lookup_service(jobmgr_t jm, const char *name, bool check_parent, pid_t target_pid);
 static void jobmgr_logv(jobmgr_t jm, int pri, int err, const char *msg, va_list ap) __attribute__((format(printf, 4, 0)));
@@ -1986,7 +1985,7 @@
 
 	time(&j->start_time);
 
-	switch (c = jobmgr_fork(j->mgr)) {
+	switch (c = runtime_fork(j->mgr->jm_port)) {
 	case -1:
 		job_log_error(j, LOG_ERR, "fork() failed, will try again in one second");
 		job_assumes(j, close(execspair[0]) == 0);
@@ -3088,29 +3087,6 @@
 	return false;
 }
 
-pid_t
-jobmgr_fork(jobmgr_t jm)
-{
-	mach_port_t p = jm->jm_port;
-	pid_t r = -1;
-	int saved_errno;
-
-	jobmgr_assumes(jm, launchd_mport_make_send(p) == KERN_SUCCESS);
-	jobmgr_assumes(jm, launchd_set_bport(p) == KERN_SUCCESS);
-	jobmgr_assumes(jm, launchd_mport_deallocate(p) == KERN_SUCCESS);
-
-	r = fork();
-
-	saved_errno = errno;
-
-	if (r != 0) {
-		jobmgr_assumes(jm, launchd_set_bport(MACH_PORT_NULL) == KERN_SUCCESS);
-	}
-
-	errno = saved_errno;
-	return r;
-}
-
 void
 machservice_watch(job_t j, struct machservice *ms)
 {

Modified: trunk/launchd/src/launchd_runtime.c
===================================================================
--- trunk/launchd/src/launchd_runtime.c	2007-03-02 23:46:29 UTC (rev 23123)
+++ trunk/launchd/src/launchd_runtime.c	2007-03-03 23:09:49 UTC (rev 23124)
@@ -553,6 +553,30 @@
 	return errno;
 }
 
+pid_t
+runtime_fork(mach_port_t bsport)
+{
+	pid_t r = -1;
+	int saved_errno;
+
+	launchd_assumes(launchd_mport_make_send(bsport) == KERN_SUCCESS);
+	launchd_assumes(launchd_set_bport(bsport) == KERN_SUCCESS);
+	launchd_assumes(launchd_mport_deallocate(bsport) == KERN_SUCCESS);
+
+	r = fork();
+
+	saved_errno = errno;
+
+	if (r != 0) {
+		launchd_assumes(launchd_set_bport(MACH_PORT_NULL) == KERN_SUCCESS);
+	}
+
+	errno = saved_errno;
+
+	return r;
+}
+
+
 void
 runtime_set_timeout(timeout_callback to_cb, mach_msg_timeout_t to)
 {

Modified: trunk/launchd/src/launchd_runtime.h
===================================================================
--- trunk/launchd/src/launchd_runtime.h	2007-03-02 23:46:29 UTC (rev 23123)
+++ trunk/launchd/src/launchd_runtime.h	2007-03-03 23:09:49 UTC (rev 23124)
@@ -71,6 +71,8 @@
 
 int kevent_mod(uintptr_t ident, short filter, u_short flags, u_int fflags, intptr_t data, void *udata);
 
+pid_t runtime_fork(mach_port_t bsport);
+
 void runtime_openlog(const char *ident, int logopt, int facility);
 void runtime_closelog(void);
 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20070303/5630b0c2/attachment.html


More information about the launchd-changes mailing list