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

source_changes at macosforge.org source_changes at macosforge.org
Thu Apr 16 15:18:10 PDT 2009


Revision: 23898
          http://trac.macosforge.org/projects/launchd/changeset/23898
Author:   dsorresso at apple.com
Date:     2009-04-16 15:18:10 -0700 (Thu, 16 Apr 2009)
Log Message:
-----------
<rdar://problem/6787653> launchd's periodic sync() seems to be bad for shutdown time when it happens during shutdown.

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

Modified: trunk/launchd/src/launchd.c
===================================================================
--- trunk/launchd/src/launchd.c	2009-04-15 21:27:54 UTC (rev 23897)
+++ trunk/launchd/src/launchd.c	2009-04-16 22:18:10 UTC (rev 23898)
@@ -112,7 +112,6 @@
 static bool re_exec_in_single_user_mode;
 static void *crash_addr;
 static pid_t crash_pid;
-static unsigned int g_sync_frequency = 30;
 
 bool shutdown_in_progress;
 bool fake_shutdown_in_progress;
@@ -121,6 +120,7 @@
 char g_my_label[128] = "__Uninitialized__";
 char g_launchd_database_dir[PATH_MAX];
 FILE *g_console = NULL;
+int32_t g_sync_frequency = 30;
 
 int
 main(int argc, char *const *argv)
@@ -263,6 +263,7 @@
 		sleep(g_sync_frequency);
 	}
 	
+	runtime_syslog(LOG_DEBUG, "Update thread exiting.");
 	return NULL;
 }
 

Modified: trunk/launchd/src/launchd_core_logic.c
===================================================================
--- trunk/launchd/src/launchd_core_logic.c	2009-04-15 21:27:54 UTC (rev 23897)
+++ trunk/launchd/src/launchd_core_logic.c	2009-04-16 22:18:10 UTC (rev 23898)
@@ -982,6 +982,10 @@
 	
 	if (jm->parentmgr == NULL && pid1_magic) {
 		jobmgr_assumes(jm, kevent_mod((uintptr_t)jm, EVFILT_TIMER, EV_ADD, NOTE_SECONDS, 5, jm));
+	#if !TARGET_OS_EMBEDDED
+		/* Kill the update thread. */
+		jobmgr_assumes(jm, __sync_sub_and_fetch(&g_sync_frequency, 30) == 0);
+	#endif
 	}
 
 	return jobmgr_do_garbage_collection(jm);

Modified: trunk/launchd/src/launchd_runtime.h
===================================================================
--- trunk/launchd/src/launchd_runtime.h	2009-04-15 21:27:54 UTC (rev 23897)
+++ trunk/launchd/src/launchd_runtime.h	2009-04-16 22:18:10 UTC (rev 23898)
@@ -108,6 +108,7 @@
 extern bool g_log_per_user_shutdown;
 extern bool g_log_strict_usage;
 extern bool g_embedded_shutdown_log;
+extern int32_t g_sync_frequency;
 extern pid_t g_wsp;
 
 mach_port_t runtime_get_kernel_port(void);
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/launchd-changes/attachments/20090416/4501ef51/attachment.html>


More information about the launchd-changes mailing list