[launchd-changes] [23108] trunk/launchd/src/launchctl.c

source_changes at macosforge.org source_changes at macosforge.org
Sun Feb 25 15:32:43 PST 2007


Revision: 23108
          http://trac.macosforge.org/projects/launchd/changeset/23108
Author:   zarzycki at apple.com
Date:     2007-02-25 15:32:43 -0800 (Sun, 25 Feb 2007)

Log Message:
-----------
Be a little more greedy about when we stop the BootCache at boot up.
Be a little more defensive against a shutdown or reboot shortly after boot up.

Modified Paths:
--------------
    trunk/launchd/src/launchctl.c

Modified: trunk/launchd/src/launchctl.c
===================================================================
--- trunk/launchd/src/launchctl.c	2007-02-23 22:57:41 UTC (rev 23107)
+++ trunk/launchd/src/launchctl.c	2007-02-25 23:32:43 UTC (rev 23108)
@@ -1237,16 +1237,25 @@
 static void
 very_pid2_specific_bootstrap(bool sflag)
 {
-	struct timeval tvs, tve, tvd;
 	int hnmib[] = { CTL_KERN, KERN_HOSTNAME };
 	struct group *tfp_gr;
+	struct kevent kev;
+	int kq;
 
+
 	do_sysversion_sysctl();
 
 	do_single_user_mode(sflag);
 
-	assumes(gettimeofday(&tvs, NULL) != -1);
+	assumes((kq = kqueue()) != -1);
 
+	EV_SET(&kev, 0, EVFILT_TIMER, EV_ADD|EV_ONESHOT, NOTE_SECONDS, 90, 0);
+	assumes(kevent(kq, &kev, 1, NULL, 0, NULL) != -1);
+	assumes(signal(SIGTERM, SIG_IGN) != SIG_ERR);
+
+	EV_SET(&kev, SIGTERM, EVFILT_SIGNAL, EV_ADD, 0, 0, 0);
+	assumes(kevent(kq, &kev, 1, NULL, 0, NULL) != -1);
+
 	if (assumes((tfp_gr = getgrnam("procview")) != NULL)) {
 		int tfp_r_mib[3] = { CTL_KERN, KERN_TFP, KERN_TFP_READ_GROUP };
 		gid_t tfp_r_gid = tfp_gr->gr_gid;
@@ -1339,20 +1348,14 @@
 
 	_vproc_set_global_on_demand(false);
 
-	assumes(gettimeofday(&tve, NULL) != -1);
-
-	timersub(&tve, &tvs, &tvd);
-
 	if (!path_check("/System/Library/LoginPlugins/BootCache.loginPlugin")) {
-		int remaining_sec = 60 - tvd.tv_sec;
+		assumes(kevent(kq, NULL, 0, &kev, 1, NULL) == 1);
 
-		if (remaining_sec > 0) {
-			sleep(remaining_sec);
-		}	
-
 		const char *bcc_stop_tool[] = { "BootCacheControl", "stop", NULL };
 		assumes(fwexec(bcc_stop_tool, true) != -1);
 	}
+
+	assumes(close(kq) != -1);
 }
 
 int

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20070225/1974af55/attachment.html


More information about the launchd-changes mailing list