[launchd-changes] [23941] trunk

source_changes at macosforge.org source_changes at macosforge.org
Tue Oct 13 14:19:27 PDT 2009


Revision: 23941
          http://trac.macosforge.org/projects/launchd/changeset/23941
Author:   lindak at apple.com
Date:     2009-10-13 14:19:24 -0700 (Tue, 13 Oct 2009)
Log Message:
-----------
<rdar://problem/7178164> launchd API to opt into memory limits

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

Property Changed:
----------------
    trunk/
    trunk/launchd/src/bootstrap.h
    trunk/launchd/src/bootstrap_priv.h
    trunk/launchd/src/launch.h
    trunk/launchd/src/launch_internal.h
    trunk/launchd/src/launch_priv.h
    trunk/launchd/src/protocol_vproc.defs
    trunk/launchd/src/vproc.h
    trunk/launchd/src/vproc_internal.h
    trunk/launchd/src/vproc_priv.h


Property changes on: trunk
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/PR-5092682:23731-23742
/branches/PR-5898404:23681-23700
/branches/PR-5978442:23651-23701
/branches/PR-6132016:23719-23738
/branches/PR-6271234:23818-23822
/branches/PR-6562592:23812-23822
/branches/PR-6564965:23832-23851
/branches/PR-6589133:23810-23822
/branches/PR-6609410:23828
   + /branches/PR-5092682:23731-23742
/branches/PR-5898404:23681-23700
/branches/PR-5978442:23651-23701
/branches/PR-6132016:23719-23738
/branches/PR-6271234:23818-23822
/branches/PR-6562592:23812-23822
/branches/PR-6564965:23832-23851
/branches/PR-6589133:23810-23822
/branches/PR-6609410:23828
/branches/PR-7178164:23935-23940


Property changes on: trunk/launchd/src/bootstrap.h
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/PR-5898404/launchd/src/libbootstrap_public.h:23681-23700
/branches/PR-5978442/launchd/src/libbootstrap_public.h:23651-23701
/branches/PR-6271234/launchd/src/bootstrap.h:23818-23822
/branches/PR-6562592/launchd/src/bootstrap.h:23812-23822
/branches/PR-6564965/launchd/src/bootstrap.h:23832-23851
/branches/PR-6589133/launchd/src/bootstrap.h:23810-23822
/branches/PR-6609410/launchd/src/bootstrap.h:23828
   + /branches/PR-5898404/launchd/src/libbootstrap_public.h:23681-23700
/branches/PR-5978442/launchd/src/libbootstrap_public.h:23651-23701
/branches/PR-6271234/launchd/src/bootstrap.h:23818-23822
/branches/PR-6562592/launchd/src/bootstrap.h:23812-23822
/branches/PR-6564965/launchd/src/bootstrap.h:23832-23851
/branches/PR-6589133/launchd/src/bootstrap.h:23810-23822
/branches/PR-6609410/launchd/src/bootstrap.h:23828
/branches/PR-7178164/launchd/src/bootstrap.h:23935-23940


Property changes on: trunk/launchd/src/bootstrap_priv.h
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/PR-5898404/launchd/src/libbootstrap_private.h:23681-23700
/branches/PR-5978442/launchd/src/libbootstrap_private.h:23651-23701
/branches/PR-6271234/launchd/src/bootstrap_priv.h:23818-23822
/branches/PR-6562592/launchd/src/bootstrap_priv.h:23812-23822
/branches/PR-6564965/launchd/src/bootstrap_priv.h:23832-23851
/branches/PR-6589133/launchd/src/bootstrap_priv.h:23810-23822
/branches/PR-6609410/launchd/src/bootstrap_priv.h:23828
   + /branches/PR-5898404/launchd/src/libbootstrap_private.h:23681-23700
/branches/PR-5978442/launchd/src/libbootstrap_private.h:23651-23701
/branches/PR-6271234/launchd/src/bootstrap_priv.h:23818-23822
/branches/PR-6562592/launchd/src/bootstrap_priv.h:23812-23822
/branches/PR-6564965/launchd/src/bootstrap_priv.h:23832-23851
/branches/PR-6589133/launchd/src/bootstrap_priv.h:23810-23822
/branches/PR-6609410/launchd/src/bootstrap_priv.h:23828
/branches/PR-7178164/launchd/src/bootstrap_priv.h:23935-23940


Property changes on: trunk/launchd/src/launch.h
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/PR-5898404/launchd/src/liblaunch_public.h:23681-23700
/branches/PR-5978442/launchd/src/liblaunch_public.h:23651-23701
/branches/PR-6271234/launchd/src/launch.h:23818-23822
/branches/PR-6562592/launchd/src/launch.h:23812-23822
/branches/PR-6564965/launchd/src/launch.h:23832-23851
/branches/PR-6589133/launchd/src/launch.h:23810-23822
/branches/PR-6609410/launchd/src/launch.h:23828
   + /branches/PR-5898404/launchd/src/liblaunch_public.h:23681-23700
/branches/PR-5978442/launchd/src/liblaunch_public.h:23651-23701
/branches/PR-6271234/launchd/src/launch.h:23818-23822
/branches/PR-6562592/launchd/src/launch.h:23812-23822
/branches/PR-6564965/launchd/src/launch.h:23832-23851
/branches/PR-6589133/launchd/src/launch.h:23810-23822
/branches/PR-6609410/launchd/src/launch.h:23828
/branches/PR-7178164/launchd/src/launch.h:23935-23940


Property changes on: trunk/launchd/src/launch_internal.h
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/PR-5898404/launchd/src/liblaunch_internal.h:23681-23700
/branches/PR-5978442/launchd/src/liblaunch_internal.h:23651-23701
/branches/PR-6271234/launchd/src/launch_internal.h:23818-23822
/branches/PR-6562592/launchd/src/launch_internal.h:23812-23822
/branches/PR-6564965/launchd/src/launch_internal.h:23832-23851
/branches/PR-6589133/launchd/src/launch_internal.h:23810-23822
/branches/PR-6609410/launchd/src/launch_internal.h:23828
   + /branches/PR-5898404/launchd/src/liblaunch_internal.h:23681-23700
/branches/PR-5978442/launchd/src/liblaunch_internal.h:23651-23701
/branches/PR-6271234/launchd/src/launch_internal.h:23818-23822
/branches/PR-6562592/launchd/src/launch_internal.h:23812-23822
/branches/PR-6564965/launchd/src/launch_internal.h:23832-23851
/branches/PR-6589133/launchd/src/launch_internal.h:23810-23822
/branches/PR-6609410/launchd/src/launch_internal.h:23828
/branches/PR-7178164/launchd/src/launch_internal.h:23935-23940

Modified: trunk/launchd/src/launch_priv.h
===================================================================
--- trunk/launchd/src/launch_priv.h	2009-10-12 22:24:11 UTC (rev 23940)
+++ trunk/launchd/src/launch_priv.h	2009-10-13 21:19:24 UTC (rev 23941)
@@ -49,18 +49,21 @@
 #define LAUNCH_KEY_BATCHQUERY							"BatchQuery"
 #define LAUNCHD_DO_APPLE_INTERNAL_LOGGING				"__DoAppleInternalLogging__"
 
-#define LAUNCH_KEY_JETSAMLABEL							"JetsamLabel"
-#define LAUNCH_KEY_JETSAMFRONTMOST						"JetsamFrontmost"
-#define LAUNCH_KEY_JETSAMPRIORITY						"JetsamPriority"
-
 #define LAUNCH_JOBKEY_TRANSACTIONCOUNT					"TransactionCount"
 #define LAUNCH_JOBKEY_QUARANTINEDATA					"QuarantineData"
 #define LAUNCH_JOBKEY_SANDBOXPROFILE					"SandboxProfile"
 #define LAUNCH_JOBKEY_SANDBOXFLAGS						"SandboxFlags"
 #define LAUNCH_JOBKEY_SANDBOX_NAMED						"Named"
+#define LAUNCH_JOBKEY_JETSAMPROPERTIES					"JetsamProperties"
 #define LAUNCH_JOBKEY_JETSAMPRIORITY					"JetsamPriority"
+#define LAUNCH_JOBKEY_JETSAMMEMORYLIMIT					"JetsamMemoryLimit"
 #define LAUNCH_JOBKEY_SECURITYSESSIONUUID				"SecuritySessionUUID"
 
+#define LAUNCH_KEY_JETSAMLABEL							"JetsamLabel"
+#define LAUNCH_KEY_JETSAMFRONTMOST						"JetsamFrontmost"
+#define LAUNCH_KEY_JETSAMPRIORITY						LAUNCH_JOBKEY_JETSAMPRIORITY
+#define LAUNCH_KEY_JETSAMMEMORYLIMIT					LAUNCH_JOBKEY_JETSAMMEMORYLIMIT
+
 #define LAUNCH_JOBKEY_EMBEDDEDPRIVILEGEDISPENSATION		"EmbeddedPrivilegeDispensation"
 #define LAUNCH_JOBKEY_EMBEDDEDMAINTHREADPRIORITY		"EmbeddedMainThreadPriority"
 


Property changes on: trunk/launchd/src/launch_priv.h
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/PR-5898404/launchd/src/liblaunch_private.h:23681-23700
/branches/PR-5978442/launchd/src/liblaunch_private.h:23651-23701
/branches/PR-6271234/launchd/src/launch_priv.h:23818-23822
/branches/PR-6562592/launchd/src/launch_priv.h:23812-23822
/branches/PR-6564965/launchd/src/launch_priv.h:23832-23851
/branches/PR-6589133/launchd/src/launch_priv.h:23810-23822
/branches/PR-6609410/launchd/src/launch_priv.h:23828
   + /branches/PR-5898404/launchd/src/liblaunch_private.h:23681-23700
/branches/PR-5978442/launchd/src/liblaunch_private.h:23651-23701
/branches/PR-6271234/launchd/src/launch_priv.h:23818-23822
/branches/PR-6562592/launchd/src/launch_priv.h:23812-23822
/branches/PR-6564965/launchd/src/launch_priv.h:23832-23851
/branches/PR-6589133/launchd/src/launch_priv.h:23810-23822
/branches/PR-6609410/launchd/src/launch_priv.h:23828
/branches/PR-7178164/launchd/src/launch_priv.h:23935-23940

Modified: trunk/launchd/src/launchd_core_logic.c
===================================================================
--- trunk/launchd/src/launchd_core_logic.c	2009-10-12 22:24:11 UTC (rev 23940)
+++ trunk/launchd/src/launchd_core_logic.c	2009-10-13 21:19:24 UTC (rev 23941)
@@ -91,8 +91,12 @@
 #else
 /* To make my life easier. */
 typedef struct jetsam_priority_entry {
-    pid_t pid;
-    uint32_t flags;
+	pid_t pid;
+	uint32_t flags;
+	int32_t hiwat_pages;
+	int32_t hiwat_reserved1;
+	int32_t hiwat_reserved2;
+	int32_t hiwat_reserved3;
 } jetsam_priority_entry_t;
 
 enum {
@@ -133,7 +137,6 @@
 #define LAUNCHD_DEFAULT_EXIT_TIMEOUT	20
 #define LAUNCHD_SIGKILL_TIMER			5
 #define LAUNCHD_CLEAN_KILL_TIMER		1
-#define LAUNCHD_JETSAM_PRIORITY_UNSET	0xdead1eebabell
 
 #define SHUTDOWN_LOG_DIR "/var/log/shutdown"
 
@@ -276,6 +279,8 @@
 static void seatbelt_setup_flags(launch_data_t obj, const char *key, void *context);
 #endif
 
+static void jetsam_property_setup(launch_data_t obj, const char *key, job_t j);
+
 typedef enum {
 	NETWORK_UP = 1,
 	NETWORK_DOWN,
@@ -465,8 +470,9 @@
 	int log_redirect_fd;
 	int nice;
 	int stdout_err_fd;
-	long long jetsam_priority;
-	long long main_thread_priority;
+	int32_t jetsam_priority;
+	int32_t jetsam_memlimit;
+	int32_t main_thread_priority;
 	uint32_t timeout;
 	uint32_t exit_timeout;
 	uint64_t sent_signal_time;
@@ -541,7 +547,8 @@
 			clean_exit_timer_expired	:1, /* The job was clean, received SIGKILL and failed to exit after LAUNCHD_CLEAN_KILL_TIMER seconds. */
 			embedded_special_privileges	:1, /* The job runs as a non-root user on embedded but has select privileges of the root user. */
 			did_exec					:1, /* The job exec(2)ed successfully. */
-			migratory					:1; /* The (anonymous) job called vprocmgr_switch_to_session(). */
+			migratory					:1, /* The (anonymous) job called vprocmgr_switch_to_session(). */
+			jetsam_properties			:1; /* The job has Jetsam limits in place. */
 	mode_t mask;
 	pid_t tracing_pid;
 	mach_port_t audit_session;
@@ -637,11 +644,6 @@
 
 void eliminate_double_reboot(void);
 
-/* For Jetsam. */
-static void jetsam_priority_from_job(job_t j, bool front, jetsam_priority_entry_t *jp);
-static int job_cmp(const job_t *lhs, const job_t *rhs);
-int launchd_set_jetsam_priorities(launch_data_t priorities);
-
 /* file local globals */
 static size_t total_children;
 static size_t total_anon_children;
@@ -1199,7 +1201,7 @@
 		/* Not a big deal if this fails. It means that the timer's already been freed. */
 		kevent_mod((uintptr_t)&j->exit_timeout, EVFILT_TIMER, EV_DELETE, 0, 0, NULL);
 	}
-	if( j->jetsam_priority != LAUNCHD_JETSAM_PRIORITY_UNSET ) {
+	if( j->jetsam_properties ) {
 		LIST_REMOVE(j, jetsam_sle);
 		j->mgr->jetsam_jobs_cnt--;
 	}
@@ -1531,7 +1533,8 @@
 	j->currently_ignored = true;
 	j->ondemand = true;
 	j->checkedin = true;
-	j->jetsam_priority = LAUNCHD_JETSAM_PRIORITY_UNSET;
+	j->jetsam_priority = -1;
+	j->jetsam_memlimit = -1;
 	uuid_clear(j->expected_audit_uuid);
 	
 	if (prog) {
@@ -1897,12 +1900,14 @@
 	case 'j':
 	case 'J':
 		if( strcasecmp(key, LAUNCH_JOBKEY_JETSAMPRIORITY) == 0 ) {
-			job_log(j, LOG_DEBUG, "Importing job with priority: %lld", value);
-			j->jetsam_priority = (typeof(j->jetsam_priority))value;
-			LIST_INSERT_HEAD(&j->mgr->jetsam_jobs, j, jetsam_sle);
-			j->mgr->jetsam_jobs_cnt++;
+			job_log(j, LOG_WARNING | LOG_CONSOLE, "Please change the JetsamPriority key to be in a dictionary named JetsamProperties.");
+			
+			launch_data_t pri = launch_data_new_integer(value);
+			if( job_assumes(j, pri != NULL) ) {
+				jetsam_property_setup(pri, LAUNCH_JOBKEY_JETSAMPRIORITY, j);
+				launch_data_free(pri);
+			}
 		}
-		break;
 	case 'n':
 	case 'N':
 		if (strcasecmp(key, LAUNCH_JOBKEY_NICE) == 0) {
@@ -2051,6 +2056,11 @@
 			}
 		}
 		break;
+	case 'j':
+	case 'J':
+		if( strcasecmp(key, LAUNCH_JOBKEY_JETSAMPROPERTIES) == 0 ) {
+			launch_data_dict_iterate(value, (void (*)(launch_data_t, const char *, void *))jetsam_property_setup, j);
+		}
 	case 'e':
 	case 'E':
 		if (strcasecmp(key, LAUNCH_JOBKEY_ENVIRONMENTVARIABLES) == 0) {
@@ -4181,7 +4191,7 @@
 	}
 
 #if !TARGET_OS_EMBEDDED	
-	if( j->jetsam_priority != LAUNCHD_JETSAM_PRIORITY_UNSET ) {
+	if( j->jetsam_properties ) {
 		job_assumes(j, proc_setpcontrol(PROC_SETPC_TERMINATE) == 0);
 	}
 #endif
@@ -8913,26 +8923,33 @@
 	}
 }
 
-static void
-jetsam_priority_from_job(job_t j, bool front, jetsam_priority_entry_t *jp)
+void
+jetsam_property_setup(launch_data_t obj, const char *key, job_t j)
 {
-	jp->pid = j->p;
-	jp->flags |= front ? kJetsamFlagsFrontmost : 0;
-}
-
-static int
-job_cmp(const job_t *lhs, const job_t *rhs)
-{
-	job_t _lhs = *lhs;
-	job_t _rhs = *rhs;
-	/* Sort in descending order. (Priority correlates to the soonishness with which you will be killed.) */
-	if( _lhs->jetsam_priority > _rhs->jetsam_priority ) {
-		return -1;
-	} else if( _lhs->jetsam_priority < _rhs->jetsam_priority ) {
-		return 1;
+	job_log(j, LOG_DEBUG, "Setting Jetsam properties for job...");
+	if( strcasecmp(key, LAUNCH_JOBKEY_JETSAMPRIORITY) == 0 && launch_data_get_type(obj) == LAUNCH_DATA_INTEGER ) {
+		j->jetsam_priority = (typeof(j->jetsam_priority))launch_data_get_integer(obj);
+		job_log(j, LOG_DEBUG, "Priority: %d", j->jetsam_priority);
+	} else if( strcasecmp(key, LAUNCH_JOBKEY_JETSAMMEMORYLIMIT) == 0 && launch_data_get_type(obj) == LAUNCH_DATA_INTEGER ) {
+		j->jetsam_memlimit = (typeof(j->jetsam_memlimit))launch_data_get_integer(obj);
+		job_log(j, LOG_DEBUG, "Memory limit: %d", j->jetsam_memlimit);
+	} else if( strcasecmp(key, LAUNCH_KEY_JETSAMFRONTMOST) == 0 ) {
+		/* Ignore. We only recognize this key so we don't complain when we get SpringBoard's request. 
+		 * You can't set this in a plist.
+		 */
+	} else if( strcasecmp(key, LAUNCH_KEY_JETSAMLABEL) == 0 ) {
+		/* Ignore. This key is present in SpringBoard's request dictionary, so we don't want to
+		 * complain about it.
+		 */
+	} else {
+		job_log(j, LOG_ERR, "Unknown Jetsam key: %s", key);
 	}
 	
-	return 0;
+	if( unlikely(!j->jetsam_properties) ) {
+		j->jetsam_properties = true;
+		LIST_INSERT_HEAD(&j->mgr->jetsam_jobs, j, jetsam_sle);
+		j->mgr->jetsam_jobs_cnt++;
+	}
 }
 
 int
@@ -8941,7 +8958,7 @@
 	if( !launchd_assumes(launch_data_get_type(priorities) == LAUNCH_DATA_ARRAY) ) {
 		return EINVAL;
 	}
-	
+
 	jobmgr_t jm = NULL;
 #if !TARGET_OS_EMBEDDED
 	/* For testing. */
@@ -8978,58 +8995,66 @@
 		if( !launchd_assumes(ji != NULL) ) {
 			continue;
 		}
-		
-		launch_data_t pri;
-		long long _pri = 0;
-		if( !launchd_assumes(pri = launch_data_dict_lookup(ldi, LAUNCH_KEY_JETSAMPRIORITY)) ) {
-			continue;
-		}
-		_pri = launch_data_get_integer(pri);
-		
-		if( ji->jetsam_priority == LAUNCHD_JETSAM_PRIORITY_UNSET ) {
-			LIST_INSERT_HEAD(&ji->mgr->jetsam_jobs, ji, jetsam_sle);
-			ji->mgr->jetsam_jobs_cnt++;
-		}
-		ji->jetsam_priority = _pri;
-		
+
+		launch_data_dict_iterate(ldi, (void (*)(launch_data_t, const char *, void *))jetsam_property_setup, ji);
+
 		launch_data_t frontmost = NULL;
-		if( !(frontmost = launch_data_dict_lookup(ldi, LAUNCH_KEY_JETSAMFRONTMOST)) ) {
-			ji->jetsam_frontmost = false;
-			continue;
+		if( (frontmost = launch_data_dict_lookup(ldi, LAUNCH_KEY_JETSAMFRONTMOST)) && launch_data_get_type(frontmost) == LAUNCH_DATA_BOOL ) {
+			ji->jetsam_frontmost = launch_data_get_bool(frontmost);
 		}
-		ji->jetsam_frontmost = launch_data_get_bool(frontmost);
 	}
 	
 	i = 0;
 	job_t *jobs = (job_t *)calloc(jm->jetsam_jobs_cnt, sizeof(job_t));
-	LIST_FOREACH( ji, &jm->jetsam_jobs, jetsam_sle ) {
-		if( ji->p ) {
-			jobs[i] = ji;
-			i++;
+	if( launchd_assumes(jobs != NULL) ) {
+		LIST_FOREACH( ji, &jm->jetsam_jobs, jetsam_sle ) {
+			if( ji->p ) {
+				jobs[i] = ji;
+				i++;
+			}
 		}
 	}
+	
 	size_t totalpris = i;
 	
 	int result = EINVAL;
-	if( launchd_assumes(totalpris > 0) ) {
-		qsort((void *)jobs, totalpris, sizeof(job_t), (int (*)(const void *, const void *))job_cmp);
+	
+	/* It is conceivable that there could be no Jetsam jobs running. */
+	if( totalpris > 0 ) {
+		/* Yay blocks! */
+		qsort_b((void *)jobs, totalpris, sizeof(job_t), ^ int (const void *lhs, const void *rhs) {
+			job_t _lhs = *(job_t *)lhs;
+			job_t _rhs = *(job_t *)rhs;
+			/* Sort in descending order. (Priority correlates to the soonishness with which you will be killed.) */
+			if( _lhs->jetsam_priority > _rhs->jetsam_priority ) {
+				return -1;
+			} else if( _lhs->jetsam_priority < _rhs->jetsam_priority ) {
+				return 1;
+			}
+			
+			return 0;
+		});
 		
 		jetsam_priority_entry_t *jpris = (jetsam_priority_entry_t *)calloc(totalpris, sizeof(jetsam_priority_entry_t));
 		if( !launchd_assumes(jpris != NULL) ) {
 			result = ENOMEM;
 		} else {
 			for( i = 0; i < totalpris; i++ ) {
-				jetsam_priority_from_job(jobs[i], jobs[i]->jetsam_frontmost, &jpris[i]);
+				jpris[i].pid = jobs[i]->p; /* Subject to time-of-use vs. time-of-check, obviously. */
+				jpris[i].flags |= jobs[i]->jetsam_frontmost ? kJetsamFlagsFrontmost : 0;
+				jpris[i].hiwat_pages = jobs[i]->jetsam_memlimit;
 			}
 			
-			int _result = 0;
-			launchd_assumes((_result = sysctlbyname("kern.memorystatus_priority_list", NULL, NULL, &jpris[0], totalpris * sizeof(jetsam_priority_entry_t))) != -1);
-			result = _result != 0 ? errno : 0;
+			launchd_assumes((result = sysctlbyname("kern.memorystatus_priority_list", NULL, NULL, &jpris[0], totalpris * sizeof(jetsam_priority_entry_t))) != -1);
+			result = result != 0 ? errno : 0;
 			
 			free(jpris);
 		}
 	}
-	free(jobs);
 	
+	if( jobs ) {
+		free(jobs);
+	}
+	
 	return result;
 }


Property changes on: trunk/launchd/src/protocol_vproc.defs
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/PR-5092682/launchd/src/protocol_job.defs:23731-23742
/branches/PR-5898404/launchd/src/protocol_job.defs:23681-23700
/branches/PR-5978442/launchd/src/protocol_job.defs:23651-23701
/branches/PR-6132016/launchd/src/protocol_job.defs:23719-23738
/branches/PR-6271234/launchd/src/protocol_vproc.defs:23818-23822
/branches/PR-6562592/launchd/src/protocol_vproc.defs:23812-23822
/branches/PR-6564965/launchd/src/protocol_vproc.defs:23832-23851
/branches/PR-6589133/launchd/src/protocol_vproc.defs:23810-23822
/branches/PR-6609410/launchd/src/protocol_vproc.defs:23828
   + /branches/PR-5092682/launchd/src/protocol_job.defs:23731-23742
/branches/PR-5898404/launchd/src/protocol_job.defs:23681-23700
/branches/PR-5978442/launchd/src/protocol_job.defs:23651-23701
/branches/PR-6132016/launchd/src/protocol_job.defs:23719-23738
/branches/PR-6271234/launchd/src/protocol_vproc.defs:23818-23822
/branches/PR-6562592/launchd/src/protocol_vproc.defs:23812-23822
/branches/PR-6564965/launchd/src/protocol_vproc.defs:23832-23851
/branches/PR-6589133/launchd/src/protocol_vproc.defs:23810-23822
/branches/PR-6609410/launchd/src/protocol_vproc.defs:23828
/branches/PR-7178164/launchd/src/protocol_vproc.defs:23935-23940


Property changes on: trunk/launchd/src/vproc.h
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/PR-5092682/launchd/src/libvproc_public.h:23731-23742
/branches/PR-5898404/launchd/src/libvproc_public.h:23681-23700
/branches/PR-5978442/launchd/src/libvproc_public.h:23651-23701
/branches/PR-6132016/launchd/src/libvproc_public.h:23719-23738
/branches/PR-6271234/launchd/src/vproc.h:23818-23822
/branches/PR-6562592/launchd/src/vproc.h:23812-23822
/branches/PR-6564965/launchd/src/vproc.h:23832-23851
/branches/PR-6589133/launchd/src/vproc.h:23810-23822
/branches/PR-6609410/launchd/src/vproc.h:23828
   + /branches/PR-5092682/launchd/src/libvproc_public.h:23731-23742
/branches/PR-5898404/launchd/src/libvproc_public.h:23681-23700
/branches/PR-5978442/launchd/src/libvproc_public.h:23651-23701
/branches/PR-6132016/launchd/src/libvproc_public.h:23719-23738
/branches/PR-6271234/launchd/src/vproc.h:23818-23822
/branches/PR-6562592/launchd/src/vproc.h:23812-23822
/branches/PR-6564965/launchd/src/vproc.h:23832-23851
/branches/PR-6589133/launchd/src/vproc.h:23810-23822
/branches/PR-6609410/launchd/src/vproc.h:23828
/branches/PR-7178164/launchd/src/vproc.h:23935-23940


Property changes on: trunk/launchd/src/vproc_internal.h
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/PR-5898404/launchd/src/libvproc_internal.h:23681-23700
/branches/PR-5978442/launchd/src/libvproc_internal.h:23651-23701
/branches/PR-6271234/launchd/src/vproc_internal.h:23818-23822
/branches/PR-6562592/launchd/src/vproc_internal.h:23812-23822
/branches/PR-6564965/launchd/src/vproc_internal.h:23832-23851
/branches/PR-6589133/launchd/src/vproc_internal.h:23810-23822
/branches/PR-6609410/launchd/src/vproc_internal.h:23828
   + /branches/PR-5898404/launchd/src/libvproc_internal.h:23681-23700
/branches/PR-5978442/launchd/src/libvproc_internal.h:23651-23701
/branches/PR-6271234/launchd/src/vproc_internal.h:23818-23822
/branches/PR-6562592/launchd/src/vproc_internal.h:23812-23822
/branches/PR-6564965/launchd/src/vproc_internal.h:23832-23851
/branches/PR-6589133/launchd/src/vproc_internal.h:23810-23822
/branches/PR-6609410/launchd/src/vproc_internal.h:23828
/branches/PR-7178164/launchd/src/vproc_internal.h:23935-23940


Property changes on: trunk/launchd/src/vproc_priv.h
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/PR-5092682/launchd/src/libvproc_private.h:23731-23742
/branches/PR-5898404/launchd/src/libvproc_private.h:23681-23700
/branches/PR-5978442/launchd/src/libvproc_private.h:23651-23701
/branches/PR-6132016/launchd/src/libvproc_private.h:23719-23738
/branches/PR-6271234/launchd/src/vproc_priv.h:23818-23822
/branches/PR-6562592/launchd/src/vproc_priv.h:23812-23822
/branches/PR-6564965/launchd/src/vproc_priv.h:23832-23851
/branches/PR-6589133/launchd/src/vproc_priv.h:23810-23822
/branches/PR-6609410/launchd/src/vproc_priv.h:23828
   + /branches/PR-5092682/launchd/src/libvproc_private.h:23731-23742
/branches/PR-5898404/launchd/src/libvproc_private.h:23681-23700
/branches/PR-5978442/launchd/src/libvproc_private.h:23651-23701
/branches/PR-6132016/launchd/src/libvproc_private.h:23719-23738
/branches/PR-6271234/launchd/src/vproc_priv.h:23818-23822
/branches/PR-6562592/launchd/src/vproc_priv.h:23812-23822
/branches/PR-6564965/launchd/src/vproc_priv.h:23832-23851
/branches/PR-6589133/launchd/src/vproc_priv.h:23810-23822
/branches/PR-6609410/launchd/src/vproc_priv.h:23828
/branches/PR-7178164/launchd/src/vproc_priv.h:23935-23940
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/launchd-changes/attachments/20091013/1017c3cd/attachment-0001.html>


More information about the launchd-changes mailing list