[launchd-changes] [23432] trunk/launchd/src
source_changes at macosforge.org
source_changes at macosforge.org
Thu Sep 27 10:02:24 PDT 2007
Revision: 23432
http://trac.macosforge.org/projects/launchd/changeset/23432
Author: zarzycki at apple.com
Date: 2007-09-27 10:02:23 -0700 (Thu, 27 Sep 2007)
Log Message:
-----------
A debug function plus some random code comments.
Modified Paths:
--------------
trunk/launchd/src/launchd_runtime.c
trunk/launchd/src/launchd_runtime.h
Modified: trunk/launchd/src/launchd_runtime.c
===================================================================
--- trunk/launchd/src/launchd_runtime.c 2007-09-25 20:37:53 UTC (rev 23431)
+++ trunk/launchd/src/launchd_runtime.c 2007-09-27 17:02:23 UTC (rev 23432)
@@ -37,6 +37,7 @@
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/time.h>
+#include <sys/proc.h>
#include <sys/event.h>
#include <sys/queue.h>
#include <sys/socket.h>
@@ -180,6 +181,70 @@
}
const char *
+proc_flags_to_C_names(unsigned int flags)
+{
+#define MAX_PFLAG_STR "P_ADVLOCK|P_CONTROLT|P_LP64|P_NOCLDSTOP|P_PPWAIT|P_PROFIL|P_SELECT|P_CONTINUED|P_SUGID|P_SYSTEM|P_TIMEOUT|P_TRACED|P_RESV3|P_WEXIT|P_EXEC|P_OWEUPC|P_AFFINITY|P_TRANSLATED|P_RESV5|P_CHECKOPENEVT|P_DEPENDENCY_CAPABLE|P_REBOOT|P_TBE|P_RESV7|P_THCWD|P_RESV9|P_RESV10|P_RESV11|P_NOSHLIB|P_FORCEQUOTA|P_NOCLDWAIT|P_NOREMOTEHANG|0xdeadbeeffeedface"
+
+ static char flags_buf[sizeof(MAX_PFLAG_STR)];
+ char *flags_off = NULL;
+
+ if (!flags) {
+ return "";
+ }
+
+ while (flags) {
+ if (flags_off) {
+ *flags_off = '|';
+ flags_off++;
+ *flags_off = '\0';
+ } else {
+ flags_off = flags_buf;
+ }
+
+#define FLAGIF(f) if (flags & f) { flags_off += sprintf(flags_off, #f); flags &= ~f; }
+
+ FLAGIF(P_ADVLOCK)
+ else FLAGIF(P_CONTROLT)
+ else FLAGIF(P_LP64)
+ else FLAGIF(P_NOCLDSTOP)
+ else FLAGIF(P_PPWAIT)
+ else FLAGIF(P_PROFIL)
+ else FLAGIF(P_SELECT)
+ else FLAGIF(P_CONTINUED)
+ else FLAGIF(P_SUGID)
+ else FLAGIF(P_SYSTEM)
+ else FLAGIF(P_TIMEOUT)
+ else FLAGIF(P_TRACED)
+ else FLAGIF(P_RESV3)
+ else FLAGIF(P_WEXIT)
+ else FLAGIF(P_EXEC)
+ else FLAGIF(P_OWEUPC)
+ else FLAGIF(P_AFFINITY)
+ else FLAGIF(P_TRANSLATED)
+ else FLAGIF(P_RESV5)
+ else FLAGIF(P_CHECKOPENEVT)
+ else FLAGIF(P_DEPENDENCY_CAPABLE)
+ else FLAGIF(P_REBOOT)
+ else FLAGIF(P_TBE)
+ else FLAGIF(P_RESV7)
+ else FLAGIF(P_THCWD)
+ else FLAGIF(P_RESV9)
+ else FLAGIF(P_RESV10)
+ else FLAGIF(P_RESV11)
+ else FLAGIF(P_NOSHLIB)
+ else FLAGIF(P_FORCEQUOTA)
+ else FLAGIF(P_NOCLDWAIT)
+ else FLAGIF(P_NOREMOTEHANG)
+ else {
+ flags_off += sprintf(flags_off, "0x%x", flags);
+ flags = 0;
+ }
+ }
+
+ return flags_buf;
+}
+
+const char *
reboot_flags_to_C_names(unsigned int flags)
{
#define MAX_RB_STR "RB_ASKNAME|RB_SINGLE|RB_NOSYNC|RB_KDB|RB_HALT|RB_INITNAME|RB_DFLTROOT|RB_ALTBOOT|RB_UNIPROC|RB_SAFEBOOT|RB_UPSDELAY|0xdeadbeeffeedface"
@@ -195,8 +260,6 @@
flags_off = flags_buf;
}
-#define FLAGIF(f) if (flags & f) { flags_off += sprintf(flags_off, #f); flags &= ~f; }
-
FLAGIF(RB_ASKNAME)
else FLAGIF(RB_SINGLE)
else FLAGIF(RB_NOSYNC)
@@ -478,6 +541,14 @@
{
fd_set rfds;
+ /*
+ * Yes, at first glance, calling select() on a kqueue seems silly.
+ *
+ * This avoids a race condition between the main thread and this helper
+ * thread by ensuring that we drain kqueue events on the same thread
+ * that manipulates the kqueue.
+ */
+
for (;;) {
FD_ZERO(&rfds);
FD_SET(mainkq, &rfds);
@@ -1356,6 +1427,15 @@
return runtime_log_pack(outval, outvalCnt);
}
+/*
+ * We should break this into two reference counts.
+ *
+ * One for hard references that would prevent exiting.
+ * One for soft references that would only prevent idle exiting.
+ *
+ * In the long run, reference counting should completely automate when a
+ * process can and should exit.
+ */
void
runtime_add_ref(void)
{
Modified: trunk/launchd/src/launchd_runtime.h
===================================================================
--- trunk/launchd/src/launchd_runtime.h 2007-09-25 20:37:53 UTC (rev 23431)
+++ trunk/launchd/src/launchd_runtime.h 2007-09-27 17:02:23 UTC (rev 23432)
@@ -77,6 +77,7 @@
const char *signal_to_C_name(unsigned int sig);
const char *reboot_flags_to_C_names(unsigned int flags);
+const char *proc_flags_to_C_names(unsigned int flags);
int kevent_bulk_mod(struct kevent *kev, size_t kev_cnt);
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20070927/34d53f0a/attachment.html
More information about the launchd-changes
mailing list