[launchd-changes] [23483] trunk/launchd/src/launchd_runtime.c
source_changes at macosforge.org
source_changes at macosforge.org
Mon Jan 14 16:51:22 PST 2008
Revision: 23483
http://trac.macosforge.org/projects/launchd/changeset/23483
Author: zarzycki at apple.com
Date: 2008-01-14 16:51:21 -0800 (Mon, 14 Jan 2008)
Log Message:
-----------
More misc changes.
Modified Paths:
--------------
trunk/launchd/src/launchd_runtime.c
Modified: trunk/launchd/src/launchd_runtime.c
===================================================================
--- trunk/launchd/src/launchd_runtime.c 2008-01-14 17:44:45 UTC (rev 23482)
+++ trunk/launchd/src/launchd_runtime.c 2008-01-15 00:51:21 UTC (rev 23483)
@@ -1021,13 +1021,16 @@
tmp_options = options;
- if (unlikely(mr == MACH_SEND_INVALID_DEST || mr == MACH_SEND_TIMED_OUT)) {
+ /* It looks like the compiler doesn't optimize switch(unlikely(...)) */
+ if (unlikely(mr)) switch (mr) {
+ case MACH_SEND_INVALID_DEST:
+ case MACH_SEND_TIMED_OUT:
/* We need to clean up and start over. */
if (bufReply->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX) {
mach_msg_destroy(&bufReply->Head);
}
continue;
- } else if (unlikely(mr == MACH_RCV_TIMED_OUT)) {
+ case MACH_RCV_TIMED_OUT:
if (to != MACH_MSG_TIMEOUT_NONE) {
if (runtime_busy_cnt == 0) {
launchd_shutdown();
@@ -1036,7 +1039,8 @@
}
}
continue;
- } else if (!launchd_assumes(mr == MACH_MSG_SUCCESS)) {
+ default:
+ launchd_assumes(mr == MACH_MSG_SUCCESS);
continue;
}
@@ -1076,25 +1080,28 @@
if (the_demux(&bufRequest->Head, &bufReply->Head) == FALSE) {
/* XXX - also gross */
- if (bufRequest->Head.msgh_id == MACH_NOTIFY_NO_SENDERS) {
+ if (likely(bufRequest->Head.msgh_id == MACH_NOTIFY_NO_SENDERS)) {
notify_server(&bufRequest->Head, &bufReply->Head);
}
}
+ /* bufReply is a union. If MACH_MSGH_BITS_COMPLEX is set, then bufReply->RetCode is assumed to be zero. */
if (!(bufReply->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX)) {
- if (bufReply->RetCode == MIG_NO_REPLY) {
- bufReply->Head.msgh_remote_port = MACH_PORT_NULL;
- } else if ((bufReply->RetCode != KERN_SUCCESS) && (bufRequest->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX)) {
- /* destroy the request - but not the reply port */
- bufRequest->Head.msgh_remote_port = MACH_PORT_NULL;
- mach_msg_destroy(&bufRequest->Head);
+ if (unlikely(bufReply->RetCode != KERN_SUCCESS)) {
+ if (likely(bufReply->RetCode == MIG_NO_REPLY)) {
+ bufReply->Head.msgh_remote_port = MACH_PORT_NULL;
+ } else if (bufRequest->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX) {
+ /* destroy the request - but not the reply port */
+ bufRequest->Head.msgh_remote_port = MACH_PORT_NULL;
+ mach_msg_destroy(&bufRequest->Head);
+ }
}
}
- if (bufReply->Head.msgh_remote_port != MACH_PORT_NULL) {
+ if (likely(bufReply->Head.msgh_remote_port != MACH_PORT_NULL)) {
tmp_options |= MACH_SEND_MSG;
- if (MACH_MSGH_BITS_REMOTE(bufReply->Head.msgh_bits) != MACH_MSG_TYPE_MOVE_SEND_ONCE) {
+ if (unlikely(MACH_MSGH_BITS_REMOTE(bufReply->Head.msgh_bits) != MACH_MSG_TYPE_MOVE_SEND_ONCE)) {
tmp_options |= MACH_SEND_TIMEOUT;
}
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20080114/37a799fd/attachment.html
More information about the launchd-changes
mailing list