[libdispatch-changes] [98] trunk/src

source_changes at macosforge.org source_changes at macosforge.org
Tue Nov 3 06:35:22 PST 2009


Revision: 98
          http://trac.macosforge.org/projects/libdispatch/changeset/98
Author:   robert at fledge.watson.org
Date:     2009-11-03 06:35:21 -0800 (Tue, 03 Nov 2009)
Log Message:
-----------
Complete implementation of DISPATCH_NO_LEGACY so that legacy.h can be
excluded from non-legacy builds.

Submitted by:	Daniel A. Steffen <dsteffen at apple.com>

Modified Paths:
--------------
    trunk/src/internal.h
    trunk/src/legacy.c
    trunk/src/queue.c
    trunk/src/shims/mach.c
    trunk/src/source.c
    trunk/src/source_internal.h

Modified: trunk/src/internal.h
===================================================================
--- trunk/src/internal.h	2009-11-03 14:33:06 UTC (rev 97)
+++ trunk/src/internal.h	2009-11-03 14:35:21 UTC (rev 98)
@@ -52,7 +52,10 @@
 #include "queue_private.h"
 #include "source_private.h"
 #include "private.h"
+
+#ifndef DISPATCH_NO_LEGACY
 #include "legacy.h"
+#endif
 /* More #includes at EOF (dependent on the contents of internal.h) ... */
 
 /* The "_debug" library build */

Modified: trunk/src/legacy.c
===================================================================
--- trunk/src/legacy.c	2009-11-03 14:33:06 UTC (rev 97)
+++ trunk/src/legacy.c	2009-11-03 14:35:21 UTC (rev 98)
@@ -19,6 +19,8 @@
  */
 
 #include "internal.h"
+
+#ifndef DISPATCH_NO_LEGACY
 #include "legacy.h"
 
 /*
@@ -83,8 +85,6 @@
 }
 #endif /* __BLOCKS__ */
 
-#ifndef DISPATCH_NO_LEGACY
-
 sigset_t
 dispatch_event_get_signals(dispatch_event_t de)
 {

Modified: trunk/src/queue.c
===================================================================
--- trunk/src/queue.c	2009-11-03 14:33:06 UTC (rev 97)
+++ trunk/src/queue.c	2009-11-03 14:35:21 UTC (rev 98)
@@ -130,6 +130,7 @@
 struct dispatch_queue_attr_s {
 	DISPATCH_STRUCT_HEADER(dispatch_queue_attr_s, dispatch_queue_attr_vtable_s);
 
+#ifndef DISPATCH_NO_LEGACY
 	// Public:
 	int qa_priority;
 	void* finalizer_ctxt;
@@ -137,6 +138,7 @@
 
 	// Private:
 	unsigned long qa_flags;
+#endif
 };
 
 static int _dispatch_pthread_sigmask(int how, sigset_t *set, sigset_t *oset);
@@ -951,6 +953,7 @@
 #endif
 }
 
+#ifndef DISPATCH_NO_LEGACY
 dispatch_queue_t
 dispatch_get_concurrent_queue(long pri)
 {
@@ -961,6 +964,7 @@
 	}
 	return _dispatch_get_root_queue(pri, false);
 }
+#endif
 
 static void
 _dispatch_queue_cleanup(void *ctxt)

Modified: trunk/src/shims/mach.c
===================================================================
--- trunk/src/shims/mach.c	2009-11-03 14:33:06 UTC (rev 97)
+++ trunk/src/shims/mach.c	2009-11-03 14:35:21 UTC (rev 98)
@@ -35,6 +35,7 @@
 	return context;
 }
 
+#ifndef DISPATCH_NO_LEGACY
 /*
  * Raw Mach message support
  */
@@ -64,4 +65,5 @@
 
 	return TRUE;
 }
+#endif
 #endif /* HAVE_MACH */

Modified: trunk/src/source.c
===================================================================
--- trunk/src/source.c	2009-11-03 14:33:06 UTC (rev 97)
+++ trunk/src/source.c	2009-11-03 14:35:21 UTC (rev 98)
@@ -27,6 +27,22 @@
 
 #include "kevent_internal.h"
 
+#ifdef DISPATCH_NO_LEGACY
+enum {
+	DISPATCH_TIMER_WALL_CLOCK	= 0x4,
+};
+enum {
+	DISPATCH_TIMER_INTERVAL	= 0x0,
+	DISPATCH_TIMER_ONESHOT	= 0x1,
+	DISPATCH_TIMER_ABSOLUTE	= 0x3,
+};
+enum {
+	DISPATCH_MACHPORT_DEAD = 0x1,
+	DISPATCH_MACHPORT_RECV = 0x2,
+	DISPATCH_MACHPORT_DELETED = 0x4,
+};
+#endif
+
 #define DISPATCH_EVFILT_TIMER	(-EVFILT_SYSCOUNT - 1)
 #define DISPATCH_EVFILT_CUSTOM_ADD	(-EVFILT_SYSCOUNT - 2)
 #define DISPATCH_EVFILT_CUSTOM_OR	(-EVFILT_SYSCOUNT - 3)
@@ -739,7 +755,11 @@
 	}
 	if (dispatch_assume(prev)) {
 		if (ds->ds_handler_func) {
-			ds->ds_handler_func(ds->ds_handler_ctxt, ds);
+#ifndef DISPATCH_NO_LEGACY
+			((dispatch_source_handler_function_t)ds->ds_handler_func)(ds->ds_handler_ctxt, ds);
+#else
+			ds->ds_handler_func(ds->ds_handler_ctxt);
+#endif
 		}
 	}
 }
@@ -1275,7 +1295,7 @@
 
 	ds->ds_is_legacy = true;
 
-	ds->ds_handler_func = handler;
+	ds->ds_handler_func = (dispatch_function_t)handler;
 	ds->ds_handler_ctxt = context;
 		
 	if (attr && attr != DISPATCH_SOURCE_CREATE_SUSPENDED) {
@@ -1303,7 +1323,7 @@
 	}
 
 	// all legacy sources get a cancellation event on the normal event handler.
-	dispatch_source_handler_function_t func = ds->ds_handler_func;
+	dispatch_function_t func = ds->ds_handler_func;
 	dispatch_source_handler_t block = ds->ds_handler_ctxt;
 	void *ctxt = ds->ds_handler_ctxt;
 	bool handler_is_block = ds->ds_handler_is_block;
@@ -1315,7 +1335,7 @@
 		});
 	} else {
 		ds->ds_cancel_handler = _dispatch_Block_copy(^{
-			func(ctxt, ds);
+			((dispatch_source_handler_function_t)func)(ctxt, ds);
 		});
 	}
 #endif

Modified: trunk/src/source_internal.h
===================================================================
--- trunk/src/source_internal.h	2009-11-03 14:33:06 UTC (rev 97)
+++ trunk/src/source_internal.h	2009-11-03 14:35:21 UTC (rev 98)
@@ -67,7 +67,7 @@
 			char dq_label[8];
 			dispatch_kevent_t ds_dkev;
 			
-			dispatch_source_handler_function_t ds_handler_func;
+			dispatch_function_t ds_handler_func;
 			void *ds_handler_ctxt;
 			
 			void *ds_cancel_handler;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/libdispatch-changes/attachments/20091103/5584094b/attachment-0001.html>


More information about the libdispatch-changes mailing list