[libdispatch-changes] [201] branches/Lion

source_changes at macosforge.org source_changes at macosforge.org
Thu Aug 18 13:37:45 PDT 2011


Revision: 201
          http://trac.macosforge.org/projects/libdispatch/changeset/201
Author:   dsteffen at apple.com
Date:     2011-08-18 13:37:45 -0700 (Thu, 18 Aug 2011)
Log Message:
-----------
rearrange files to match Lion source drop

Added Paths:
-----------
    branches/Lion/private/
    branches/Lion/private/benchmark.h
    branches/Lion/private/private.h
    branches/Lion/private/queue_private.h
    branches/Lion/private/source_private.h
    branches/Lion/src/shims/atomic.h
    branches/Lion/src/shims.h

Removed Paths:
-------------
    branches/Lion/compat/
    branches/Lion/dispatch/benchmark.h
    branches/Lion/m4/private-extern.m4
    branches/Lion/src/hw_shims.h
    branches/Lion/src/kevent_internal.h
    branches/Lion/src/legacy.c
    branches/Lion/src/legacy.h
    branches/Lion/src/os_shims.h
    branches/Lion/src/private.h
    branches/Lion/src/queue_kevent.c
    branches/Lion/src/queue_private.h
    branches/Lion/src/shims/mach.c
    branches/Lion/src/shims/time.c
    branches/Lion/src/shims/tsd.c
    branches/Lion/src/source_kevent.c
    branches/Lion/src/source_private.h

Deleted: branches/Lion/dispatch/benchmark.h
===================================================================
--- branches/Lion/dispatch/benchmark.h	2011-08-18 20:21:48 UTC (rev 200)
+++ branches/Lion/dispatch/benchmark.h	2011-08-18 20:37:45 UTC (rev 201)
@@ -1,83 +0,0 @@
-/*
- * Copyright (c) 2008-2009 Apple Inc. All rights reserved.
- *
- * @APPLE_APACHE_LICENSE_HEADER_START@
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * 
- * @APPLE_APACHE_LICENSE_HEADER_END@
- */
-
-/*
- * IMPORTANT: This header file describes INTERNAL interfaces to libdispatch
- * which are subject to change in future releases of Mac OS X. Any applications
- * relying on these interfaces WILL break.
- */
-
-#ifndef __DISPATCH_BENCHMARK__
-#define __DISPATCH_BENCHMARK__
-
-#ifndef __DISPATCH_INDIRECT__
-#error "Please #include <dispatch/dispatch.h> instead of this file directly."
-#include <dispatch/base.h> // for HeaderDoc
-#endif
-
-__DISPATCH_BEGIN_DECLS
-
-/*!
- * @function dispatch_benchmark
- *
- * @abstract
- * Count the average number of cycles a given block takes to execute.
- *
- * @param count
- * The number of times to serially execute the given block.
- *
- * @param block
- * The block to execute.
- *
- * @result
- * The approximate number of cycles the block takes to execute.
- *
- * @discussion
- * This function is for debugging and performance analysis work. For the best
- * results, pass a high count value to dispatch_benchmark(). When benchmarking
- * concurrent code, please compare the serial version of the code against the
- * concurrent version, and compare the concurrent version on different classes
- * of hardware. Please look for inflection points with various data sets and
- * keep the following facts in mind:
- *
- * 1) Code bound by computational bandwidth may be inferred by proportional
- *    changes in performance as concurrency is increased.
- * 2) Code bound by memory bandwidth may be inferred by negligible changes in
- *    performance as concurrency is increased.
- * 3) Code bound by critical sections may be inferred by retrograde changes in
- *    performance as concurrency is increased.
- * 3a) Intentional: locks, mutexes, and condition variables.
- * 3b) Accidental: unrelated and frequently modified data on the same cache-line.
- */
-#ifdef __BLOCKS__
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
-DISPATCH_EXPORT DISPATCH_NONNULL2 DISPATCH_NOTHROW
-uint64_t
-dispatch_benchmark(size_t count, void (^block)(void));
-#endif
-
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
-DISPATCH_EXPORT DISPATCH_NONNULL3 DISPATCH_NOTHROW
-uint64_t
-dispatch_benchmark_f(size_t count, void *ctxt, void (*func)(void *));
-
-__DISPATCH_END_DECLS
-
-#endif

Deleted: branches/Lion/m4/private-extern.m4
===================================================================
--- branches/Lion/m4/private-extern.m4	2011-08-18 20:21:48 UTC (rev 200)
+++ branches/Lion/m4/private-extern.m4	2011-08-18 20:37:45 UTC (rev 201)
@@ -1,41 +0,0 @@
-#
-# Does the platform support __private_extern__?  There is surely a better way
-# to check this.
-#
-AC_DEFUN([DISPATCH_C_PRIVATE_EXTERN], [
-
-AC_LANG_WERROR
-
-AC_CACHE_CHECK([for __attribute__((visibility("hidden")))],
-    dispatch_cv_hidden_visibility_attribute, [
-	AC_TRY_LINK([int foo; extern __attribute__ ((visibility ("hidden"))) int foo;], 
-		[foo = 0;],
-                    [dispatch_cv_hidden_visibility_attribute=yes],
-                    [dispatch_cv_hidden_visibility_attribute=no])])
-
-AC_CACHE_CHECK([for __private_extern__],
-    dispatch_cv_private_extern, [
-        AC_TRY_LINK([], [__private_extern__ int foo;],
-                    [dispatch_cv_private_extern=yes],
-                    [dispatch_cv_private_extern=no])])
-
-if test $host_os = "linux-gnu" ; then
-  #
-  # WORKAROUND: Building with clang and the GNU linker causes this error:
-  #
-  # /usr/bin/ld: .libs/libdispatch_la-apply.o: relocation R_X86_64_PC32 against symbol `_dispatch_hw_config' can not be used when making a shared object; recompile with -fPIC
-  #
-  AC_DEFINE([__private_extern__], [extern],
-	    [Define to a replacement for __private_extern])
-elif test $dispatch_cv_private_extern = yes; then
-  AC_DEFINE(HAVE_PRIVATE_EXTERN, 1, Define if __private_extern__ present)
-elif test $dispatch_cv_hidden_visibility_attribute = yes; then
-  AC_DEFINE(HAVE_PRIVATE_EXTERN, 1, Define if __private_extern__ present)
-  AC_DEFINE([__private_extern__], [extern __attribute__ ((visibility ("hidden")))],
-	    [Define to a replacement for __private_extern])
-else
-  AC_DEFINE([__private_extern__], [extern],
-	    [Define to a replacement for __private_extern])
-fi
-
-])

Copied: branches/Lion/private/benchmark.h (from rev 200, branches/Lion/dispatch/benchmark.h)
===================================================================
--- branches/Lion/private/benchmark.h	                        (rev 0)
+++ branches/Lion/private/benchmark.h	2011-08-18 20:37:45 UTC (rev 201)
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 2008-2009 Apple Inc. All rights reserved.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_START@
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * 
+ * @APPLE_APACHE_LICENSE_HEADER_END@
+ */
+
+/*
+ * IMPORTANT: This header file describes INTERNAL interfaces to libdispatch
+ * which are subject to change in future releases of Mac OS X. Any applications
+ * relying on these interfaces WILL break.
+ */
+
+#ifndef __DISPATCH_BENCHMARK__
+#define __DISPATCH_BENCHMARK__
+
+#ifndef __DISPATCH_INDIRECT__
+#error "Please #include <dispatch/dispatch.h> instead of this file directly."
+#include <dispatch/base.h> // for HeaderDoc
+#endif
+
+__DISPATCH_BEGIN_DECLS
+
+/*!
+ * @function dispatch_benchmark
+ *
+ * @abstract
+ * Count the average number of cycles a given block takes to execute.
+ *
+ * @param count
+ * The number of times to serially execute the given block.
+ *
+ * @param block
+ * The block to execute.
+ *
+ * @result
+ * The approximate number of cycles the block takes to execute.
+ *
+ * @discussion
+ * This function is for debugging and performance analysis work. For the best
+ * results, pass a high count value to dispatch_benchmark(). When benchmarking
+ * concurrent code, please compare the serial version of the code against the
+ * concurrent version, and compare the concurrent version on different classes
+ * of hardware. Please look for inflection points with various data sets and
+ * keep the following facts in mind:
+ *
+ * 1) Code bound by computational bandwidth may be inferred by proportional
+ *    changes in performance as concurrency is increased.
+ * 2) Code bound by memory bandwidth may be inferred by negligible changes in
+ *    performance as concurrency is increased.
+ * 3) Code bound by critical sections may be inferred by retrograde changes in
+ *    performance as concurrency is increased.
+ * 3a) Intentional: locks, mutexes, and condition variables.
+ * 3b) Accidental: unrelated and frequently modified data on the same cache-line.
+ */
+#ifdef __BLOCKS__
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
+DISPATCH_EXPORT DISPATCH_NONNULL2 DISPATCH_NOTHROW
+uint64_t
+dispatch_benchmark(size_t count, void (^block)(void));
+#endif
+
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
+DISPATCH_EXPORT DISPATCH_NONNULL3 DISPATCH_NOTHROW
+uint64_t
+dispatch_benchmark_f(size_t count, void *ctxt, void (*func)(void *));
+
+__DISPATCH_END_DECLS
+
+#endif

Copied: branches/Lion/private/private.h (from rev 200, branches/Lion/src/private.h)
===================================================================
--- branches/Lion/private/private.h	                        (rev 0)
+++ branches/Lion/private/private.h	2011-08-18 20:37:45 UTC (rev 201)
@@ -0,0 +1,140 @@
+/*
+ * Copyright (c) 2008-2009 Apple Inc. All rights reserved.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_START@
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * 
+ * @APPLE_APACHE_LICENSE_HEADER_END@
+ */
+
+/*
+ * IMPORTANT: This header file describes INTERNAL interfaces to libdispatch
+ * which are subject to change in future releases of Mac OS X. Any applications
+ * relying on these interfaces WILL break.
+ */
+
+#ifndef __DISPATCH_PRIVATE__
+#define __DISPATCH_PRIVATE__
+
+#ifdef __APPLE__
+#include <TargetConditionals.h>
+#endif
+
+#if HAVE_MACH
+#include <mach/boolean.h>
+#include <mach/mach.h>
+#include <mach/message.h>
+#endif
+#if HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#if HAVE_SYS_CDEFS_H
+#include <sys/cdefs.h>
+#endif
+#include <pthread.h>
+
+#ifdef __IPHONE_OS_VERSION_MIN_REQUIRED
+/* iPhone OS does not make any legacy definitions visible */
+#define DISPATCH_NO_LEGACY
+#endif
+
+#ifndef __DISPATCH_BUILDING_DISPATCH__
+#include_next <dispatch/dispatch.h>
+
+// Workaround <rdar://problem/6597365/>
+#ifndef __DISPATCH_PUBLIC__
+#include "/usr/include/dispatch/dispatch.h"
+#endif
+
+#ifndef __DISPATCH_INDIRECT__
+#define __DISPATCH_INDIRECT__
+#endif
+
+#include <dispatch/benchmark.h>
+#include <dispatch/queue_private.h>
+#include <dispatch/source_private.h>
+
+#ifndef DISPATCH_NO_LEGACY
+#include <dispatch/legacy.h>
+#endif
+
+#undef __DISPATCH_INDIRECT__
+
+#endif /* !__DISPATCH_BUILDING_DISPATCH__ */
+
+/* LEGACY: Use DISPATCH_API_VERSION */
+#define LIBDISPATCH_VERSION DISPATCH_API_VERSION
+
+__DISPATCH_BEGIN_DECLS
+
+DISPATCH_EXPORT DISPATCH_NOTHROW
+void
+#if USE_LIBDISPATCH_INIT_CONSTRUCTOR
+libdispatch_init(void) __attribute__ ((constructor));
+#else
+libdispatch_init(void);
+#endif
+
+#if HAVE_MACH
+#define DISPATCH_COCOA_COMPAT 1
+#if DISPATCH_COCOA_COMPAT
+
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
+DISPATCH_EXPORT DISPATCH_NOTHROW
+mach_port_t
+_dispatch_get_main_queue_port_4CF(void);
+
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
+DISPATCH_EXPORT DISPATCH_NOTHROW
+void
+_dispatch_main_queue_callback_4CF(mach_msg_header_t *msg);
+
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
+DISPATCH_EXPORT
+void (*dispatch_begin_thread_4GC)(void);
+
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
+DISPATCH_EXPORT
+void (*dispatch_end_thread_4GC)(void);
+
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
+DISPATCH_EXPORT
+void *(*_dispatch_begin_NSAutoReleasePool)(void);
+
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
+DISPATCH_EXPORT
+void (*_dispatch_end_NSAutoReleasePool)(void *);
+
+#endif
+#endif /* HAVE_MACH */
+
+/* pthreads magic */
+
+DISPATCH_NOTHROW void dispatch_atfork_prepare(void);
+DISPATCH_NOTHROW void dispatch_atfork_parent(void);
+DISPATCH_NOTHROW void dispatch_atfork_child(void);
+DISPATCH_NOTHROW void dispatch_init_pthread(pthread_t);
+
+#if HAVE_MACH
+/*
+ * Extract the context pointer from a mach message trailer.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
+void *
+dispatch_mach_msg_get_context(mach_msg_header_t *msg);
+#endif
+
+__DISPATCH_END_DECLS
+
+#endif

Copied: branches/Lion/private/queue_private.h (from rev 200, branches/Lion/src/queue_private.h)
===================================================================
--- branches/Lion/private/queue_private.h	                        (rev 0)
+++ branches/Lion/private/queue_private.h	2011-08-18 20:37:45 UTC (rev 201)
@@ -0,0 +1,122 @@
+/*
+ * Copyright (c) 2008-2009 Apple Inc. All rights reserved.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_START@
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * 
+ * @APPLE_APACHE_LICENSE_HEADER_END@
+ */
+
+/*
+ * IMPORTANT: This header file describes INTERNAL interfaces to libdispatch
+ * which are subject to change in future releases of Mac OS X. Any applications
+ * relying on these interfaces WILL break.
+ */
+
+#ifndef __DISPATCH_QUEUE_PRIVATE__
+#define __DISPATCH_QUEUE_PRIVATE__
+
+#ifndef __DISPATCH_INDIRECT__
+#error "Please #include <dispatch/dispatch.h> instead of this file directly."
+#include <dispatch/base.h> // for HeaderDoc
+#endif
+
+__DISPATCH_BEGIN_DECLS
+
+
+/*!
+ * @enum dispatch_queue_flags_t
+ *
+ * @constant DISPATCH_QUEUE_OVERCOMMIT
+ * The queue will create a new thread for invoking blocks, regardless of how
+ * busy the computer is.
+ */
+enum {
+	DISPATCH_QUEUE_OVERCOMMIT = 0x2ull,
+};
+
+#define DISPATCH_QUEUE_FLAGS_MASK	(DISPATCH_QUEUE_OVERCOMMIT)
+
+#ifdef __BLOCKS__
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
+DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
+void
+dispatch_barrier_sync(dispatch_queue_t queue, dispatch_block_t block);
+#endif
+
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
+DISPATCH_EXPORT DISPATCH_NONNULL1 DISPATCH_NONNULL3 DISPATCH_NOTHROW
+void
+dispatch_barrier_sync_f(dispatch_queue_t dq, void *context, dispatch_function_t work);
+
+#ifdef __BLOCKS__
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
+DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
+void
+dispatch_barrier_async(dispatch_queue_t queue, dispatch_block_t block);
+#endif
+
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
+DISPATCH_EXPORT DISPATCH_NONNULL1 DISPATCH_NONNULL3 DISPATCH_NOTHROW
+void
+dispatch_barrier_async_f(dispatch_queue_t dq, void *context, dispatch_function_t work);
+
+/*!
+ * @function dispatch_queue_set_width
+ *
+ * @abstract
+ * Set the width of concurrency for a given queue. The default width of a
+ * privately allocated queue is one.
+ *
+ * @param queue
+ * The queue to adjust. Passing the main queue, a default concurrent queue or
+ * any other default queue will be ignored.
+ *
+ * @param width
+ * The new maximum width of concurrency depending on available resources.
+ * If zero is passed, then the value is promoted to one.
+ * Negative values are magic values that map to automatic width values.
+ * Unknown negative values default to DISPATCH_QUEUE_WIDTH_MAX_LOGICAL_CPUS.
+ */
+#define DISPATCH_QUEUE_WIDTH_ACTIVE_CPUS	-1
+#define DISPATCH_QUEUE_WIDTH_MAX_PHYSICAL_CPUS	-2
+#define DISPATCH_QUEUE_WIDTH_MAX_LOGICAL_CPUS	-3
+
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
+DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
+void
+dispatch_queue_set_width(dispatch_queue_t dq, long width);
+
+
+
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
+extern const struct dispatch_queue_offsets_s {
+	// always add new fields at the end
+	const uint16_t dqo_version;
+	const uint16_t dqo_label;
+	const uint16_t dqo_label_size;
+	const uint16_t dqo_flags;
+	const uint16_t dqo_flags_size;
+	const uint16_t dqo_serialnum;
+	const uint16_t dqo_serialnum_size;
+	const uint16_t dqo_width;
+	const uint16_t dqo_width_size;
+	const uint16_t dqo_running;
+	const uint16_t dqo_running_size;
+} dispatch_queue_offsets;
+
+
+__DISPATCH_END_DECLS
+
+#endif

Copied: branches/Lion/private/source_private.h (from rev 200, branches/Lion/src/source_private.h)
===================================================================
--- branches/Lion/private/source_private.h	                        (rev 0)
+++ branches/Lion/private/source_private.h	2011-08-18 20:37:45 UTC (rev 201)
@@ -0,0 +1,131 @@
+/*
+ * Copyright (c) 2008-2009 Apple Inc. All rights reserved.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_START@
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * 
+ * @APPLE_APACHE_LICENSE_HEADER_END@
+ */
+
+/*
+ * IMPORTANT: This header file describes INTERNAL interfaces to libdispatch
+ * which are subject to change in future releases of Mac OS X. Any applications
+ * relying on these interfaces WILL break.
+ */
+
+#ifndef __DISPATCH_SOURCE_PRIVATE__
+#define __DISPATCH_SOURCE_PRIVATE__
+
+#ifndef __DISPATCH_INDIRECT__
+#error "Please #include <dispatch/dispatch.h> instead of this file directly."
+#include <dispatch/base.h> // for HeaderDoc
+#endif
+
+/*!
+ * @const DISPATCH_SOURCE_TYPE_VFS
+ * @discussion Apple-internal dispatch source that monitors for vfs events
+ * defined by dispatch_vfs_flags_t.
+ * The handle is a process identifier (pid_t).
+ */
+#define DISPATCH_SOURCE_TYPE_VFS (&_dispatch_source_type_vfs)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
+extern const struct dispatch_source_type_s _dispatch_source_type_vfs;
+
+/*!
+ * @enum dispatch_source_vfs_flags_t
+ *
+ * @constant DISPATCH_VFS_NOTRESP
+ * Server down.
+ *
+ * @constant DISPATCH_VFS_NEEDAUTH
+ * Server bad auth.
+ *
+ * @constant DISPATCH_VFS_LOWDISK
+ * We're low on space.
+ *
+ * @constant DISPATCH_VFS_MOUNT
+ * New filesystem arrived.
+ *
+ * @constant DISPATCH_VFS_UNMOUNT
+ * Filesystem has left.
+ *
+ * @constant DISPATCH_VFS_DEAD
+ * Filesystem is dead, needs force unmount.
+ *
+ * @constant DISPATCH_VFS_ASSIST
+ * Filesystem needs assistance from external program.
+ *
+ * @constant DISPATCH_VFS_NOTRESPLOCK
+ * Server lockd down.
+ *
+ * @constant DISPATCH_VFS_UPDATE
+ * Filesystem information has changed.
+ *
+ * @constant DISPATCH_VFS_VERYLOWDISK
+ * File system has *very* little disk space left.
+ */
+enum {
+	DISPATCH_VFS_NOTRESP = 0x0001,
+	DISPATCH_VFS_NEEDAUTH = 0x0002,
+	DISPATCH_VFS_LOWDISK = 0x0004,
+	DISPATCH_VFS_MOUNT = 0x0008,
+	DISPATCH_VFS_UNMOUNT = 0x0010,
+	DISPATCH_VFS_DEAD = 0x0020,
+	DISPATCH_VFS_ASSIST = 0x0040,
+	DISPATCH_VFS_NOTRESPLOCK = 0x0080,
+	DISPATCH_VFS_UPDATE = 0x0100,
+	DISPATCH_VFS_VERYLOWDISK = 0x0200,
+};
+
+/*!
+ * @enum dispatch_source_mach_send_flags_t
+ *
+ * @constant DISPATCH_MACH_SEND_DELETED
+ * The receive right corresponding to the given send right was destroyed.
+ */
+enum {
+	DISPATCH_MACH_SEND_DELETED = 0x2,
+};
+
+/*!
+ * @enum dispatch_source_proc_flags_t
+ *
+ * @constant DISPATCH_PROC_REAP
+ * The process has been reaped by the parent process via
+ * wait*().
+ */
+enum {
+	DISPATCH_PROC_REAP = 0x10000000,
+};
+
+__DISPATCH_BEGIN_DECLS
+
+#if HAVE_MACH
+/*!
+ * @typedef dispatch_mig_callback_t
+ *
+ * @abstract
+ * The signature of a function that handles Mach message delivery and response.
+ */
+typedef boolean_t (*dispatch_mig_callback_t)(mach_msg_header_t *message, mach_msg_header_t *reply);
+
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
+DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
+mach_msg_return_t
+dispatch_mig_server(dispatch_source_t ds, size_t maxmsgsz, dispatch_mig_callback_t callback);
+#endif
+
+__DISPATCH_END_DECLS
+
+#endif

Deleted: branches/Lion/src/hw_shims.h
===================================================================
--- branches/Lion/src/hw_shims.h	2011-08-18 20:21:48 UTC (rev 200)
+++ branches/Lion/src/hw_shims.h	2011-08-18 20:37:45 UTC (rev 201)
@@ -1,72 +0,0 @@
-/*
- * Copyright (c) 2008-2009 Apple Inc. All rights reserved.
- *
- * @APPLE_APACHE_LICENSE_HEADER_START@
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * 
- * @APPLE_APACHE_LICENSE_HEADER_END@
- */
-
-/*
- * IMPORTANT: This header file describes INTERNAL interfaces to libdispatch
- * which are subject to change in future releases of Mac OS X. Any applications
- * relying on these interfaces WILL break.
- */
-
-#ifndef __DISPATCH_HW_SHIMS__
-#define __DISPATCH_HW_SHIMS__
-
-/* x86 has a 64 byte cacheline */
-#define DISPATCH_CACHELINE_SIZE	64
-#define ROUND_UP_TO_CACHELINE_SIZE(x)	(((x) + (DISPATCH_CACHELINE_SIZE - 1)) & ~(DISPATCH_CACHELINE_SIZE - 1))
-#define ROUND_UP_TO_VECTOR_SIZE(x)	(((x) + 15) & ~15)
-
-#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2)
-// GCC generates suboptimal register pressure
-// LLVM does better, but doesn't support tail calls
-// 6248590 __sync_*() intrinsics force a gratuitous "lea" instruction, with resulting register pressure
-#if 0 && defined(__i386__) || defined(__x86_64__)
-#define dispatch_atomic_xchg(p, n)	({ typeof(*(p)) _r; asm("xchg %0, %1" : "=r" (_r) : "m" (*(p)), "0" (n)); _r; })
-#else
-#define dispatch_atomic_xchg(p, n)	((typeof(*(p)))__sync_lock_test_and_set((p), (n)))
-#endif
-#define dispatch_atomic_cmpxchg(p, o, n)	__sync_bool_compare_and_swap((p), (o), (n))
-#define dispatch_atomic_inc(p)	__sync_add_and_fetch((p), 1)
-#define dispatch_atomic_dec(p)	__sync_sub_and_fetch((p), 1)
-#define dispatch_atomic_add(p, v)	__sync_add_and_fetch((p), (v))
-#define dispatch_atomic_sub(p, v)	__sync_sub_and_fetch((p), (v))
-#define dispatch_atomic_or(p, v)	__sync_fetch_and_or((p), (v))
-#define dispatch_atomic_and(p, v)	__sync_fetch_and_and((p), (v))
-#if defined(__i386__) || defined(__x86_64__)
-/* GCC emits nothing for __sync_synchronize() on i386/x86_64. */
-#define dispatch_atomic_barrier()	__asm__ __volatile__("mfence")
-#else
-#define dispatch_atomic_barrier()	__sync_synchronize()
-#endif
-#else
-#error "Please upgrade to GCC 4.2 or newer."
-#endif
-
-#if defined(__i386__) || defined(__x86_64__)
-#define _dispatch_hardware_pause() asm("pause")
-#define _dispatch_debugger() asm("int3")
-#else
-#define _dispatch_hardware_pause() asm("")
-#define _dispatch_debugger() asm("trap")
-#endif
-// really just a low level abort()
-#define _dispatch_hardware_crash() __builtin_trap()
-
-
-#endif

Deleted: branches/Lion/src/kevent_internal.h
===================================================================
--- branches/Lion/src/kevent_internal.h	2011-08-18 20:21:48 UTC (rev 200)
+++ branches/Lion/src/kevent_internal.h	2011-08-18 20:37:45 UTC (rev 201)
@@ -1,51 +0,0 @@
-/*
- * Copyright (c) 2008-2009 Apple Inc. All rights reserved.
- *
- * @APPLE_APACHE_LICENSE_HEADER_START@
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * 
- * @APPLE_APACHE_LICENSE_HEADER_END@
- */
-
-/*
- * IMPORTANT: This header file describes INTERNAL interfaces to libdispatch
- * which are subject to change in future releases of Mac OS X. Any applications
- * relying on these interfaces WILL break.
- */
-
-#ifndef __DISPATCH_KEVENT_INTERNAL__
-#define __DISPATCH_KEVENT_INTERNAL__
-
-#include <internal.h>
-#include <sys/event.h>
-
-struct dispatch_kevent_s {
-	TAILQ_ENTRY(dispatch_kevent_s) dk_list;
-	TAILQ_HEAD(, dispatch_source_s) dk_sources;
-	struct kevent dk_kevent;
-};
-
-extern const struct dispatch_source_vtable_s _dispatch_source_kevent_vtable;
-
-#if DISPATCH_DEBUG
-void dispatch_debug_kevents(struct kevent* kev, size_t count, const char* str);
-#else
-#define dispatch_debug_kevents(x, y, z)
-#endif
-
-void _dispatch_source_drain_kevent(struct kevent *);
-void _dispatch_update_kq(const struct kevent *);
-
-
-#endif /* __DISPATCH_KEVENT_INTERNAL__ */

Deleted: branches/Lion/src/legacy.c
===================================================================
--- branches/Lion/src/legacy.c	2011-08-18 20:21:48 UTC (rev 200)
+++ branches/Lion/src/legacy.c	2011-08-18 20:37:45 UTC (rev 201)
@@ -1,452 +0,0 @@
-/*
- * Copyright (c) 2008-2009 Apple Inc. All rights reserved.
- *
- * @APPLE_APACHE_LICENSE_HEADER_START@
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * 
- * @APPLE_APACHE_LICENSE_HEADER_END@
- */
-
-#include "internal.h"
-
-#ifndef DISPATCH_NO_LEGACY
-#include "legacy.h"
-
-/*
- * LEGACY: This header file describles LEGACY interfaces to libdispatch from an
- * earlier revision of the API. These interfaces WILL be removed in the future.
- */
-
-#ifdef __BLOCKS__
-DISPATCH_PUBLIC_API DISPATCH_NONNULL1 DISPATCH_NONNULL2
-dispatch_item_t
-LEGACY_dispatch_call(dispatch_queue_t, dispatch_legacy_block_t work, dispatch_legacy_block_t completion)
-__asm__("_dispatch_call2");
-#endif
-
-DISPATCH_PUBLIC_API DISPATCH_PURE DISPATCH_WARN_RESULT
-dispatch_queue_t
-LEGACY_dispatch_queue_get_current(void)
-__asm__("_dispatch_queue_get_current");
-
-/////////////////////////////////////////////////////////////////////////////
-
-dispatch_queue_t
-LEGACY_dispatch_queue_get_current(void)
-{
-	return _dispatch_queue_get_current();
-}
-
-#ifdef __BLOCKS__
-dispatch_item_t
-LEGACY_dispatch_call(dispatch_queue_t dq,
-	dispatch_legacy_block_t dispatch_block,
-	dispatch_legacy_block_t callback_block)
-{
-	dispatch_queue_t lq = _dispatch_queue_get_current() ?: dispatch_get_main_queue();
-	dispatch_item_t di;
-
-	di = dispatch_block ? calloc(1, ROUND_UP_TO_CACHELINE_SIZE(sizeof(*di))) : NULL;
-
-	if (!di) {
-		return di;
-	}
-
-	if (callback_block) {
-		dispatch_retain(lq);
-	}
-
-	dispatch_async(dq, ^{
-		dispatch_block(di);
-
-		if (callback_block) {
-			dispatch_async(lq, ^{
-				callback_block(di);
-				free(di);
-				dispatch_release(lq);
-			});
-		} else {
-			free(di);
-		}
-	});
-
-	return di;
-}
-#endif /* __BLOCKS__ */
-
-sigset_t
-dispatch_event_get_signals(dispatch_event_t de)
-{
-	sigset_t ret;
-	sigemptyset(&ret);
-	sigaddset(&ret, (int)dispatch_event_get_signal(de));
-	return ret;
-}
-
-void dispatch_cancel(dispatch_source_t ds) { dispatch_source_cancel(ds); }
-long dispatch_testcancel(dispatch_source_t ds) { return dispatch_source_testcancel(ds); }
-
-void dispatch_queue_resume(dispatch_queue_t dq) { dispatch_resume(dq); }
-void dispatch_queue_retain(dispatch_queue_t dq) { dispatch_retain(dq); }
-void dispatch_queue_release(dispatch_queue_t dq) { dispatch_release(dq); }
-
-void dispatch_source_suspend(dispatch_source_t ds) { dispatch_suspend(ds); }
-void dispatch_source_resume(dispatch_source_t ds) { dispatch_resume(ds); }
-void dispatch_source_release(dispatch_source_t ds) { dispatch_release(ds); }
-
-void dispatch_source_attr_release(dispatch_source_attr_t attr) { dispatch_release(attr); }
-void dispatch_queue_attr_release(dispatch_queue_attr_t attr) { dispatch_release(attr); }
-
-void *dispatch_queue_get_context(dispatch_queue_t dq) { return dispatch_get_context(dq); }
-void  dispatch_queue_set_context(dispatch_queue_t dq, void *context) { dispatch_set_context(dq, context); }
-
-void *dispatch_source_get_context(dispatch_source_t ds) { return dispatch_get_context(ds); }
-void  dispatch_source_set_context(dispatch_source_t ds, void *context) { dispatch_set_context(ds, context); }
-
-void dispatch_source_custom_trigger(dispatch_source_t ds) { dispatch_source_merge_data(ds, 1); }
-
-void
-dispatch_source_trigger(dispatch_source_t ds, unsigned long val)
-{
-	dispatch_source_merge_data(ds, val);
-}
-
-int dispatch_source_get_descriptor(dispatch_source_t ds) { return (int)dispatch_source_get_handle(ds); }
-
-pid_t dispatch_source_get_pid(dispatch_source_t ds) { return (pid_t)dispatch_source_get_handle(ds); }
-
-mach_port_t dispatch_source_get_machport(dispatch_source_t ds) { return (mach_port_t)dispatch_source_get_handle(ds); }
-
-uint64_t dispatch_source_get_flags(dispatch_source_t ds) { return dispatch_source_get_mask(ds); }
-
-dispatch_source_t dispatch_event_get_source(dispatch_event_t event) { return event; }
-
-long dispatch_event_get_error(dispatch_event_t event, long* error) { return dispatch_source_get_error(event, error); }
-
-uint64_t dispatch_event_get_flags(dispatch_event_t event)  { return dispatch_source_get_data(event); }
-
-size_t dispatch_event_get_bytes_available(dispatch_event_t event) { return (size_t)dispatch_source_get_data(event); }
-
-unsigned long dispatch_event_get_count(dispatch_event_t event) { return (unsigned long)dispatch_source_get_data(event); }
-
-long dispatch_event_get_signal(dispatch_event_t event) { return (long)dispatch_source_get_handle(event); }
-
-dispatch_source_t
-dispatch_source_custom_create(
-							  unsigned long behavior,
-							  dispatch_source_attr_t attr,
-							  dispatch_queue_t queue,
-							  dispatch_event_handler_t handler) {
-	return dispatch_source_data_create(behavior, attr, queue, handler);
-}
-
-dispatch_source_t
-dispatch_source_custom_create_f(
-								unsigned long behavior,
-								dispatch_source_attr_t attr,
-								dispatch_queue_t queue,
-								void *h_context,
-								dispatch_event_handler_function_t handler) {
-	return dispatch_source_data_create_f(behavior, attr, queue, h_context, handler);
-}
-
-#define _dispatch_source_call_block ((void *)-1)
-
-
-
-#ifdef __BLOCKS__
-dispatch_source_t
-dispatch_source_timer_create(uint64_t flags,
-	uint64_t nanoseconds,
-	uint64_t leeway,
-	dispatch_source_attr_t attr,
-	dispatch_queue_t q,
-	dispatch_source_handler_t callback)
-{
-	return dispatch_source_timer_create_f(flags, nanoseconds, leeway,
-		attr, q, callback, _dispatch_source_call_block);
-}
-#endif
-
-dispatch_source_t
-dispatch_source_timer_create_f(uint64_t timer_flags,
-	uint64_t nanoseconds,
-	uint64_t leeway,
-	dispatch_source_attr_t attr,
-	dispatch_queue_t q,
-	void *context, 
-	dispatch_source_handler_function_t callback)
-{
-	dispatch_source_t ds;
-	dispatch_time_t start;
-
-	// 6866347 - make sure nanoseconds won't overflow
-	if ((int64_t)nanoseconds < 0) {
-		nanoseconds = INT64_MAX;
-	}
-
-	if (timer_flags & DISPATCH_TIMER_ONESHOT) {
-		timer_flags |= DISPATCH_TIMER_WALL_CLOCK;
-	}
-	if (timer_flags == (DISPATCH_TIMER_ABSOLUTE|DISPATCH_TIMER_WALL_CLOCK)) {
-		static const struct timespec t0;
-		start = dispatch_walltime(&t0, nanoseconds);
-	} else if (timer_flags & DISPATCH_TIMER_WALL_CLOCK) {
-		start = dispatch_walltime(DISPATCH_TIME_NOW, nanoseconds);
-	} else {
-		start = dispatch_time(DISPATCH_TIME_NOW, nanoseconds);
-	}
-	if (timer_flags & DISPATCH_TIMER_ONESHOT) {
-		// 6866347 - make sure nanoseconds won't overflow
-		nanoseconds = INT64_MAX; // non-repeating (~292 years)
-	}
-
-	ds = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, (unsigned long)timer_flags, q);
-	if (!ds) {
-		return NULL;
-	}
-	ds = _dispatch_source_create2(ds, attr, context, callback);
-	if (!ds) {
-		return NULL;
-	}
-	dispatch_source_set_timer(ds, start, nanoseconds, leeway);
-
-	return ds;
-}
-
-#ifdef __BLOCKS__
-dispatch_source_t
-dispatch_source_read_create(int descriptor,
-	dispatch_source_attr_t attr,
-	dispatch_queue_t q,
-	dispatch_source_handler_t callback)
-{
-	return dispatch_source_read_create_f(descriptor,
-		attr, q, callback, _dispatch_source_call_block);
-}
-#endif
-
-dispatch_source_t
-dispatch_source_read_create_f(int fd,
-	dispatch_source_attr_t attr,
-	dispatch_queue_t q,
-	void *context,
-	dispatch_source_handler_function_t callback)
-{
-	dispatch_source_t ds;
-	ds = dispatch_source_create(DISPATCH_SOURCE_TYPE_READ, fd, 0, q);
-	return _dispatch_source_create2(ds, attr, context, callback);
-}
-
-#ifdef __BLOCKS__
-dispatch_source_t
-dispatch_source_write_create(int descriptor,
-	dispatch_source_attr_t attr,
-	dispatch_queue_t q,
-	dispatch_source_handler_t callback)
-{
-	return dispatch_source_write_create_f(descriptor,
-		attr, q, callback, _dispatch_source_call_block);
-}
-#endif
-
-dispatch_source_t
-dispatch_source_write_create_f(int fd,
-	dispatch_source_attr_t attr,
-	dispatch_queue_t q,
-	void *context,
-	dispatch_source_handler_function_t callback)
-{
-	dispatch_source_t ds;
-	ds = dispatch_source_create(DISPATCH_SOURCE_TYPE_WRITE, fd, 0, q);
-	return _dispatch_source_create2(ds, attr, context, callback);
-}
-
-#ifdef __BLOCKS__
-dispatch_source_t
-dispatch_source_vnode_create(int descriptor,
-	uint64_t flags,
-	dispatch_source_attr_t attr,
-	dispatch_queue_t q,
-	dispatch_source_handler_t callback)
-{
-	return dispatch_source_vnode_create_f(descriptor,
-		flags, attr, q, callback, _dispatch_source_call_block);
-}
-#endif
-
-dispatch_source_t
-dispatch_source_vnode_create_f(int fd,
-	uint64_t event_mask,
-	dispatch_source_attr_t attr,
-	dispatch_queue_t q,
-	void *context,
-	dispatch_source_handler_function_t callback)
-{
-	dispatch_source_t ds;
-	ds = dispatch_source_create(DISPATCH_SOURCE_TYPE_VNODE, fd, (unsigned long)event_mask, q);
-	return _dispatch_source_create2(ds, attr, context, callback);
-}
-
-#ifdef __BLOCKS__
-dispatch_source_t
-dispatch_source_signal_create(unsigned long sig,
-	dispatch_source_attr_t attr,
-	dispatch_queue_t q,
-	dispatch_source_handler_t callback)
-{
-	return dispatch_source_signal_create_f(sig,
-		attr, q, callback, _dispatch_source_call_block);
-}
-#endif
-
-dispatch_source_t
-dispatch_source_signal_create_f(unsigned long signo,
-	dispatch_source_attr_t attr,
-	dispatch_queue_t q,
-	void *context,
-	dispatch_source_handler_function_t callback)
-{
-	dispatch_source_t ds;
-	ds = dispatch_source_create(DISPATCH_SOURCE_TYPE_SIGNAL, signo, 0, q);
-	return _dispatch_source_create2(ds, attr, context, callback);
-}
-
-#ifdef __BLOCKS__
-dispatch_source_t
-dispatch_source_proc_create(pid_t pid,
-	uint64_t flags,
-	dispatch_source_attr_t attr,
-	dispatch_queue_t q,
-	dispatch_source_handler_t callback)
-{
-	return dispatch_source_proc_create_f(pid,
-		flags, attr, q, callback, _dispatch_source_call_block);
-}
-#endif
-
-dispatch_source_t
-dispatch_source_proc_create_f(pid_t pid,
-	uint64_t event_mask,
-	dispatch_source_attr_t attr,
-	dispatch_queue_t q,
-	void *context,
-	dispatch_source_handler_function_t callback)
-{
-	dispatch_source_t ds;
-	ds = dispatch_source_create(DISPATCH_SOURCE_TYPE_PROC, pid, (unsigned long)event_mask, q);
-	return _dispatch_source_create2(ds, attr, context, callback);
-}
-
-#ifdef __BLOCKS__
-dispatch_source_t
-dispatch_source_vfs_create(uint64_t flags,
-	dispatch_source_attr_t attr,
-	dispatch_queue_t q,
-	dispatch_source_handler_t callback)
-{
-	return dispatch_source_vfs_create_f(flags,
-		attr, q, callback, _dispatch_source_call_block);
-}
-#endif
-
-dispatch_source_t
-dispatch_source_vfs_create_f(uint64_t event_mask,
-	dispatch_source_attr_t attr,
-	dispatch_queue_t q,
-	void *context,
-	dispatch_source_handler_function_t callback)
-{
-	dispatch_source_t ds;
-	ds = dispatch_source_create(DISPATCH_SOURCE_TYPE_VFS, 0, (unsigned long)event_mask, q);
-	return _dispatch_source_create2(ds, attr, context, callback);
-}
-
-#ifdef __BLOCKS__
-dispatch_source_t
-dispatch_source_data_create(unsigned long behavior,
-	dispatch_source_attr_t attr,
-	dispatch_queue_t q,
-	dispatch_source_handler_t callback)
-{
-	return dispatch_source_data_create_f(behavior,
-		attr, q, callback, _dispatch_source_call_block);
-}
-#endif
-
-#ifdef __BLOCKS__
-dispatch_source_t
-dispatch_source_machport_create(mach_port_t mport,
-	uint64_t flags,
-	dispatch_source_attr_t attr,
-	dispatch_queue_t dq,
-	dispatch_source_handler_t callback)
-{
-	return dispatch_source_machport_create_f(mport, flags,
-		attr, dq, callback, _dispatch_source_call_block);
-}
-#endif
-
-dispatch_source_t
-dispatch_source_data_create_f(unsigned long behavior,
-	dispatch_source_attr_t attr,
-	dispatch_queue_t q,
-	void *context,
-	dispatch_source_handler_function_t callback)
-{
-	dispatch_source_t ds;
-	dispatch_source_type_t type;
-	switch (behavior) {
-		case DISPATCH_SOURCE_CUSTOM_ADD:
-			type = DISPATCH_SOURCE_TYPE_DATA_ADD;
-			break;
-		case DISPATCH_SOURCE_CUSTOM_OR:
-			type = DISPATCH_SOURCE_TYPE_DATA_OR;
-			break;
-		default:
-			return NULL;
-	}
-	ds = dispatch_source_create(type, 0, 0, q);
-	return _dispatch_source_create2(ds, attr, context, callback);
-}
-
-dispatch_source_t
-dispatch_source_machport_create_f(mach_port_t mport,
-	uint64_t flags,
-	dispatch_source_attr_t attr,
-	dispatch_queue_t dq,
-	void *ctxt,
-	dispatch_source_handler_function_t func)
-{
-	dispatch_source_t ds;
-	dispatch_source_type_t type;
-	unsigned long newflags = 0;
-
-	if (flags & ~(DISPATCH_MACHPORT_DEAD|DISPATCH_MACHPORT_RECV)) {
-		return NULL;
-	}
-	// XXX DELETED
-	if (flags & DISPATCH_MACHPORT_DEAD) {
-		type = DISPATCH_SOURCE_TYPE_MACH_SEND;
-		newflags |= DISPATCH_MACH_SEND_DEAD;
-	} else {
-		type = DISPATCH_SOURCE_TYPE_MACH_RECV;
-	}
-
-	ds = dispatch_source_create(type, mport, newflags, dq);
-	return _dispatch_source_create2(ds, attr, ctxt, func);
-}
-
-#endif /* DISPATCH_NO_LEGACY */
-

Deleted: branches/Lion/src/legacy.h
===================================================================
--- branches/Lion/src/legacy.h	2011-08-18 20:21:48 UTC (rev 200)
+++ branches/Lion/src/legacy.h	2011-08-18 20:37:45 UTC (rev 201)
@@ -1,766 +0,0 @@
-/*
- * Copyright (c) 2008-2009 Apple Inc. All rights reserved.
- *
- * @APPLE_APACHE_LICENSE_HEADER_START@
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * 
- * @APPLE_APACHE_LICENSE_HEADER_END@
- */
-
-/*
- * IMPORTANT: This header file describes INTERNAL interfaces to libdispatch
- * which are subject to change in future releases of Mac OS X. Any applications
- * relying on these interfaces WILL break.
- */
-
-/*
- * LEGACY: This header file describles LEGACY interfaces to libdispatch from an
- * earlier revision of the API. These interfaces WILL be removed in the future.
- */
- 
-#ifndef __DISPATCH_LEGACY__
-#define __DISPATCH_LEGACY__
-
-#ifndef __DISPATCH_INDIRECT__
-#error "Please #include <dispatch/dispatch.h> instead of this file directly."
-#include <dispatch/base.h> // for HeaderDoc
-#endif
-
-#if HAVE_MACH
-#include <mach/mach_types.h>
-#endif
-
-#define DISPATCH_DEPRECATED __attribute__((deprecated))
-#define DISPATCH_PUBLIC_API __attribute__((visibility("default")))
-
-typedef struct dispatch_item_s *dispatch_item_t;
-
-struct dispatch_item_s {
-	void *                                        di_objc_isa;    /* FIXME -- someday... */
-	struct dispatch_item_s *volatile        di_next;
-	dispatch_queue_t                        di_cback_q;
-	uint32_t                                di_flags;
-#if USE_MACH_SEM
-	semaphore_t                             di_semaphore;
-#endif
-#if USE_POSIX_SEM
-	/* Legacy API not supported except with Mach semaphores. */
-#endif
-	void *					di_work_func;
-	void *                                  di_work_ctxt;
-	void *					di_cback_func;
-	void *                                  di_cback_ctxt;
-	void *                                  di_ctxt;
-};
-
-// Use: dispatch_source_t
-typedef struct dispatch_source_s *dispatch_event_t;
-
-// Obsolete
-#ifdef __BLOCKS__
-typedef void (^dispatch_legacy_block_t)(dispatch_item_t);
-typedef void (^dispatch_queue_deletion_block_t)(dispatch_queue_t queue);
-typedef void (^dispatch_source_deletion_t)(dispatch_source_t source);
-typedef void (^dispatch_event_callback_t)(dispatch_event_t event);
-typedef void (^dispatch_source_handler_t)(dispatch_source_t source);
-typedef dispatch_source_handler_t dispatch_event_handler_t;
-typedef void (^dispatch_source_finalizer_t)(dispatch_source_t source);
-#endif /* __BLOCKS__ */
-
-// Obsolete
-typedef void (*dispatch_source_handler_function_t)(void *, dispatch_source_t);
-typedef void (*dispatch_source_finalizer_function_t)(void *, dispatch_source_t);
-typedef dispatch_source_handler_function_t dispatch_event_handler_function_t;
-
-DISPATCH_DECL(dispatch_source_attr);
-
-#define DISPATCH_SOURCE_CREATE_SUSPENDED	((dispatch_source_attr_t)~0ul)
-
-#ifdef __BLOCKS__
-typedef void (^dispatch_queue_finalizer_t)(dispatch_queue_t queue);
-#endif
-
-typedef void (*dispatch_queue_finalizer_function_t)(void *, dispatch_queue_t);
-
-__DISPATCH_BEGIN_DECLS
-
-/*!
- * @function dispatch_queue_attr_create
- *
- * @abstract
- * Creates a new dispatch queue attribute structure. These attributes may be
- * provided at creation time to modify the default behavior of the queue.
- *
- * @discussion
- * The values present in this structure are copied to newly created queues.
- * The same attribute structure may be provided to multiple calls to
- * dispatch_queue_create() but only the values in the structure at the time the
- * call is made will be used.
- *
- * @result
- * The new dispatch queue attribute structure, initialized to default values.
- */
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_MALLOC DISPATCH_WARN_RESULT DISPATCH_NOTHROW DISPATCH_DEPRECATED
-dispatch_queue_attr_t
-dispatch_queue_attr_create(void);
-
-/*!
- * @function dispatch_queue_attr_set_priority
- *
- * @abstract
- * Set the priority level for a dispatch queue.
- *
- * @discussion
- * Priority levels may be:
- * - DISPATCH_QUEUE_PRIORITY_HIGH
- * - DISPATCH_QUEUE_PRIORITY_DEFAULT
- * - DISPATCH_QUEUE_PRIORITY_LOW
- * Queues set to high priority will be processed
- * before queues set to default priority or low priority.
- * Queues set to low priority will be processed only if all
- * high priority and default priority queues are empty.
- */
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_NONNULL1 DISPATCH_NOTHROW DISPATCH_DEPRECATED
-void
-dispatch_queue_attr_set_priority(dispatch_queue_attr_t attr, int priority);
-
-#ifdef __BLOCKS__
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_NONNULL1 DISPATCH_NOTHROW DISPATCH_DEPRECATED
-long
-dispatch_queue_attr_set_finalizer(
-								  dispatch_queue_attr_t attr,
-								  dispatch_queue_finalizer_t finalizer);
-#endif
-
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_NONNULL1 DISPATCH_NOTHROW DISPATCH_DEPRECATED
-void
-dispatch_queue_attr_set_finalizer_f(dispatch_queue_attr_t attr, void *context, dispatch_queue_finalizer_function_t finalizer);
-
-/*!
- * @function dispatch_get_concurrent_queue
- *
- * @abstract
- * Returns a well-known global concurrent queue of a given priority level.
- *
- * @discussion
- * Blocks submitted to the returned queue may be invoked concurrently with
- * respect to each other.
- *
- * These queues are useful for performing one-shot asynchronous operations,
- * e.g. dispatch_async() to an "anonymous" queue; or for performing parallel
- * loops concurrently on multiple processors, e.g. dispatch_apply().
- *
- * The dispatch queues returned by this function are managed by the system for
- * the lifetime of the application, and need not be retained or released
- * directly by the application. Furthermore, dispatch_suspend() and
- * dispatch_queue_resume() are not supported on these global queues, and will
- * be ignored.
- *
- * @param priority
- * The requested priority level for the queue (default is zero):
- * - DISPATCH_QUEUE_PRIORITY_HIGH
- * - DISPATCH_QUEUE_PRIORITY_DEFAULT
- * - DISPATCH_QUEUE_PRIORITY_LOW
- *
- * @result
- * Returns a concurrent dispatch queue for use with dispatch_async(),
- * dispatch_apply(), et al.
- */
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_PURE DISPATCH_WARN_RESULT DISPATCH_NOTHROW DISPATCH_DEPRECATED
-dispatch_queue_t
-dispatch_get_concurrent_queue(long priority);
-
-DISPATCH_PUBLIC_API DISPATCH_DEPRECATED
-void
-dispatch_queue_attr_set_flags(dispatch_queue_attr_t attr, uint64_t flags);
-
-#ifdef __BLOCKS__
-DISPATCH_PUBLIC_API DISPATCH_NONNULL1 DISPATCH_NONNULL2 DISPATCH_DEPRECATED
-dispatch_item_t
-dispatch_call(dispatch_queue_t, dispatch_legacy_block_t work, dispatch_legacy_block_t completion)
-__asm__("_dispatch_call2");
-#endif /* __BLOCKS__ */
-
-DISPATCH_PUBLIC_API DISPATCH_PURE DISPATCH_WARN_RESULT DISPATCH_DEPRECATED
-dispatch_queue_t
-dispatch_queue_get_current(void);
-
-// Use: dispatch_retain
-DISPATCH_PUBLIC_API DISPATCH_NONNULL_ALL DISPATCH_DEPRECATED
-void
-dispatch_queue_retain(dispatch_queue_t);
-
-// Use: dispatch_release
-DISPATCH_PUBLIC_API DISPATCH_NONNULL_ALL DISPATCH_DEPRECATED
-void
-dispatch_queue_release(dispatch_queue_t);
-
-// Use: dispatch_resume
-DISPATCH_PUBLIC_API DISPATCH_NONNULL_ALL DISPATCH_DEPRECATED
-void
-dispatch_queue_resume(dispatch_queue_t);
-
-// Use: dispatch_release
-DISPATCH_PUBLIC_API DISPATCH_NONNULL_ALL DISPATCH_DEPRECATED
-void
-dispatch_source_release(dispatch_source_t);
-
-// Use: dispatch_suspend
-DISPATCH_PUBLIC_API DISPATCH_NONNULL_ALL DISPATCH_DEPRECATED
-void
-dispatch_source_suspend(dispatch_source_t);
-
-// Use: dispatch_resume
-DISPATCH_PUBLIC_API DISPATCH_NONNULL_ALL DISPATCH_DEPRECATED
-void
-dispatch_source_resume(dispatch_source_t);
-
-// Use: dispatch_release
-DISPATCH_PUBLIC_API DISPATCH_NONNULL_ALL DISPATCH_DEPRECATED
-void
-dispatch_queue_attr_release(dispatch_queue_attr_t);
-
-// Use: dispatch_release
-DISPATCH_PUBLIC_API DISPATCH_NONNULL_ALL DISPATCH_DEPRECATED
-void
-dispatch_source_attr_release(dispatch_source_attr_t);
-
-// Use: dispatch_source_get_handle
-DISPATCH_PUBLIC_API DISPATCH_NONNULL_ALL DISPATCH_WARN_RESULT DISPATCH_DEPRECATED
-sigset_t
-dispatch_event_get_signals(dispatch_event_t event);
-
-// Use: dispatch_get_context
-DISPATCH_PUBLIC_API DISPATCH_NONNULL_ALL DISPATCH_DEPRECATED
-void *
-dispatch_queue_get_context(dispatch_queue_t queue);
-  
-// Use: dispatch_set_context
-DISPATCH_PUBLIC_API DISPATCH_NONNULL1 DISPATCH_DEPRECATED
-void
-dispatch_queue_set_context(dispatch_queue_t queue, void *context);
-
-// Use: dispatch_get_context
-DISPATCH_PUBLIC_API DISPATCH_NONNULL_ALL DISPATCH_DEPRECATED
-void *
-dispatch_source_get_context(dispatch_source_t source);
-
-// Use: dispatch_set_context
-DISPATCH_PUBLIC_API DISPATCH_NONNULL1 DISPATCH_DEPRECATED
-void
-dispatch_source_set_context(dispatch_source_t source, void * context);
-
-// Use: dispatch_source_merge_data
-DISPATCH_PUBLIC_API DISPATCH_NONNULL_ALL DISPATCH_DEPRECATED
-void
-dispatch_source_custom_trigger(dispatch_source_t ds);
-
-// Use: dispatch_source_cancel
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_NONNULL_ALL DISPATCH_NOTHROW DISPATCH_DEPRECATED
-void
-dispatch_cancel(dispatch_source_t);
-
-// Use: dispatch_source_testcancel
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_NONNULL_ALL DISPATCH_NOTHROW DISPATCH_DEPRECATED
-long
-dispatch_testcancel(dispatch_source_t);
-
-// Use: dispatch_source_set_timer
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_NONNULL1 DISPATCH_NOTHROW DISPATCH_DEPRECATED
-long
-dispatch_source_timer_set_time(dispatch_source_t ds,
-							   uint64_t nanoseconds,
-							   uint64_t leeway);
-
-// Use: dispatch_source_merge_data
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_NONNULL_ALL DISPATCH_NOTHROW DISPATCH_DEPRECATED
-void
-dispatch_source_trigger(dispatch_source_t source, unsigned long value);
-
-enum {
-	DISPATCH_ERROR_DOMAIN_NO_ERROR = 0,
-	DISPATCH_ERROR_DOMAIN_POSIX = 1,
-	DISPATCH_ERROR_DOMAIN_MACH = 2,
-};
-
-// Obsolete
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_NONNULL1 DISPATCH_WARN_RESULT DISPATCH_NOTHROW DISPATCH_DEPRECATED
-long
-dispatch_source_get_error(dispatch_source_t source, long* error);
-
-#if HAVE_MACH
-// Use: dispatch_source_get_handle
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_NONNULL_ALL DISPATCH_WARN_RESULT DISPATCH_NOTHROW DISPATCH_DEPRECATED
-mach_port_t
-dispatch_source_get_machport(dispatch_source_t source);
-#endif
-
-// Use: dispatch_source_get_handle
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_NONNULL_ALL DISPATCH_WARN_RESULT DISPATCH_NOTHROW DISPATCH_DEPRECATED
-pid_t
-dispatch_source_get_descriptor(dispatch_source_t source);
-
-// Use: dispatch_source_get_handle
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_NONNULL_ALL DISPATCH_WARN_RESULT DISPATCH_NOTHROW DISPATCH_DEPRECATED
-pid_t
-dispatch_source_get_pid(dispatch_source_t source);
-
-// Use: dispatch_source_get_mask
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_NONNULL_ALL DISPATCH_WARN_RESULT DISPATCH_NOTHROW DISPATCH_DEPRECATED
-uint64_t
-dispatch_source_get_flags(dispatch_source_t source);
-
-// LEGACY: dispatch_event_t == dispatch_source_t
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_NONNULL_ALL DISPATCH_WARN_RESULT DISPATCH_NOTHROW DISPATCH_DEPRECATED
-dispatch_source_t
-dispatch_event_get_source(dispatch_event_t event);
-
-// Use: dispatch_source_get_error
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_NONNULL1 DISPATCH_WARN_RESULT DISPATCH_NOTHROW DISPATCH_DEPRECATED
-long
-dispatch_event_get_error(dispatch_event_t event, long* error);
-
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_NONNULL_ALL DISPATCH_WARN_RESULT DISPATCH_NOTHROW DISPATCH_DEPRECATED
-uint64_t
-dispatch_event_get_nanoseconds(dispatch_event_t event);
-
-// Use: dispatch_source_get_handle
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_NONNULL_ALL DISPATCH_WARN_RESULT DISPATCH_NOTHROW DISPATCH_DEPRECATED
-long
-dispatch_event_get_signal(dispatch_event_t event);
-
-// Use: dispatch_source_get_data
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_NONNULL_ALL DISPATCH_WARN_RESULT DISPATCH_NOTHROW DISPATCH_DEPRECATED
-uint64_t
-dispatch_event_get_flags(dispatch_event_t event);
-
-// Use: dispatch_source_get_data
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_NONNULL_ALL DISPATCH_WARN_RESULT DISPATCH_NOTHROW DISPATCH_DEPRECATED
-size_t
-dispatch_event_get_bytes_available(dispatch_event_t event);
-
-// Use: dispatch_source_get_data
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_NONNULL_ALL DISPATCH_NOTHROW DISPATCH_DEPRECATED
-unsigned long
-dispatch_event_get_count(dispatch_event_t event);
-
-// Obsolete
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_MALLOC DISPATCH_WARN_RESULT DISPATCH_NOTHROW DISPATCH_DEPRECATED
-dispatch_source_attr_t
-dispatch_source_attr_create(void);
-
-// Obsolete
-#if defined(__BLOCKS__)
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_NOTHROW DISPATCH_DEPRECATED
-dispatch_source_finalizer_t
-dispatch_source_attr_get_finalizer(dispatch_source_attr_t attr);
-#endif /* __BLOCKS__ */
-
-// Obsolete
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_MALLOC DISPATCH_WARN_RESULT DISPATCH_NOTHROW DISPATCH_DEPRECATED
-dispatch_source_attr_t
-dispatch_source_attr_copy(dispatch_source_attr_t proto);
-
-// Obsolete
-#ifdef __BLOCKS__
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_NONNULL1 DISPATCH_NOTHROW DISPATCH_DEPRECATED
-long
-dispatch_source_attr_set_finalizer(
-	dispatch_source_attr_t attr,
-	dispatch_source_finalizer_t finalizer);
-#endif /* __BLOCKS__ */
-
-// Obsolete
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_NONNULL1 DISPATCH_NOTHROW DISPATCH_DEPRECATED
-void
-dispatch_source_attr_set_finalizer_f(
-	dispatch_source_attr_t attr,
-	void *context,
-	dispatch_source_finalizer_function_t finalizer);
-
-// Obsolete
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_NONNULL1 DISPATCH_NOTHROW DISPATCH_DEPRECATED
-void
-dispatch_source_attr_set_context(
-	dispatch_source_attr_t attr,
-	void *context);
-
-#if HAVE_MACH
-// Use: dispatch_source_create(DISPATCH_SOURCE_TYPE_MACH_RECV, ...)
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_MALLOC DISPATCH_NONNULL4 DISPATCH_NONNULL5 DISPATCH_NOTHROW DISPATCH_DEPRECATED
-dispatch_source_t
-dispatch_source_mig_create(
-	mach_port_t mport, 
-	size_t max_size,
-	dispatch_source_attr_t attr,
-	dispatch_queue_t queue,
-	dispatch_mig_callback_t mig_callback);
-#endif
-
-enum {
-	DISPATCH_TIMER_WALL_CLOCK	= 0x4,
-};
-
-enum {
-	DISPATCH_TIMER_INTERVAL	= 0x0,
-	DISPATCH_TIMER_ONESHOT	= 0x1,
-	DISPATCH_TIMER_ABSOLUTE	= 0x3,
-};
-
-// Use: dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, ...)
-#ifdef __BLOCKS__
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_MALLOC DISPATCH_NONNULL5 DISPATCH_NONNULL6 DISPATCH_NOTHROW DISPATCH_DEPRECATED
-dispatch_source_t
-dispatch_source_timer_create(
-	uint64_t flags,
-	uint64_t nanoseconds,
-	uint64_t leeway,
-	dispatch_source_attr_t attr,
-	dispatch_queue_t queue,
-	dispatch_source_handler_t handler);
-#endif /* __BLOCKS__ */
-
-// Use: dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, ...)
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_MALLOC DISPATCH_NONNULL5 DISPATCH_NONNULL7 DISPATCH_NOTHROW DISPATCH_DEPRECATED
-dispatch_source_t
-dispatch_source_timer_create_f(
-	uint64_t flags,
-	uint64_t nanoseconds,
-	uint64_t leeway,
-	dispatch_source_attr_t attr,
-	dispatch_queue_t queue,
-	void *h_context,
-	dispatch_source_handler_function_t handler);
-
-// Use: dispatch_source_create(DISPATCH_SOURCE_TYPE_SIGNAL, ...)
-#ifdef __BLOCKS__
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_MALLOC DISPATCH_NOTHROW DISPATCH_DEPRECATED
-dispatch_source_t
-dispatch_source_signal_create(
-	unsigned long signo,
-	dispatch_source_attr_t attr,
-	dispatch_queue_t queue,
-	dispatch_source_handler_t handler);
-#endif /* __BLOCKS__ */
-
-// Use: dispatch_source_create(DISPATCH_SOURCE_TYPE_SIGNAL, ...)
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_MALLOC DISPATCH_NONNULL3 DISPATCH_NONNULL5 DISPATCH_NOTHROW DISPATCH_DEPRECATED
-dispatch_source_t
-dispatch_source_signal_create_f(
-	unsigned long sig,
-	dispatch_source_attr_t attr,
-	dispatch_queue_t queue,
-	void *h_context,
-	dispatch_source_handler_function_t handler);
-
-// Use: dispatch_source_create(DISPATCH_SOURCE_TYPE_READ, ...)
-#ifdef __BLOCKS__
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_MALLOC DISPATCH_NONNULL3 DISPATCH_NONNULL4 DISPATCH_NOTHROW DISPATCH_DEPRECATED
-dispatch_source_t
-dispatch_source_read_create(
-	int descriptor,
-	dispatch_source_attr_t attr,
-	dispatch_queue_t queue,
-	dispatch_source_handler_t handler);
-#endif /* __BLOCKS__ */
-
-// Use: dispatch_source_create(DISPATCH_SOURCE_TYPE_READ, ...)
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_MALLOC DISPATCH_NONNULL3 DISPATCH_NONNULL5 DISPATCH_NOTHROW DISPATCH_DEPRECATED
-dispatch_source_t
-dispatch_source_read_create_f(
-	int descriptor,
-	dispatch_source_attr_t attr,
-	dispatch_queue_t queue,
-	void *h_context,
-	dispatch_source_handler_function_t handler);
-
-// Use: dispatch_source_create(DISPATCH_SOURCE_TYPE_WRITE, ...)
-#ifdef __BLOCKS__
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_MALLOC DISPATCH_NONNULL3 DISPATCH_NONNULL4 DISPATCH_NOTHROW DISPATCH_DEPRECATED
-dispatch_source_t
-dispatch_source_write_create(
-	int descriptor, 
-	dispatch_source_attr_t attr,
-	dispatch_queue_t queue,
-	dispatch_source_handler_t handler);
-#endif /* __BLOCKS__ */
-
-// Use: dispatch_source_create(DISPATCH_SOURCE_TYPE_WRITE, ...)
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_MALLOC DISPATCH_NONNULL3 DISPATCH_NONNULL5 DISPATCH_NOTHROW DISPATCH_DEPRECATED
-dispatch_source_t
-dispatch_source_write_create_f(
-	int descriptor, 
-	dispatch_source_attr_t attr,
-	dispatch_queue_t queue,
-	void *h_context,
-	dispatch_source_handler_function_t handler);
-
-// Use: dispatch_source_create(DISPATCH_SOURCE_TYPE_VNODE, ...)
-#ifdef __BLOCKS__
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_MALLOC DISPATCH_NONNULL4 DISPATCH_NONNULL5 DISPATCH_NOTHROW DISPATCH_DEPRECATED
-dispatch_source_t
-dispatch_source_vnode_create(
-	int descriptor,
-	uint64_t flags,
-	dispatch_source_attr_t attr,
-	dispatch_queue_t queue,
-	dispatch_source_handler_t handler);
-#endif /* __BLOCKS__ */
-
-// Use: dispatch_source_create(DISPATCH_SOURCE_TYPE_VNODE, ...)
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_MALLOC DISPATCH_NONNULL4 DISPATCH_NONNULL6 DISPATCH_NOTHROW DISPATCH_DEPRECATED
-dispatch_source_t
-dispatch_source_vnode_create_f(
-	int descriptor,
-	uint64_t flags,
-	dispatch_source_attr_t attr,
-	dispatch_queue_t queue,
-	void *h_context,
-	dispatch_source_handler_function_t handler);
-
-// Use: dispatch_source_create(DISPATCH_SOURCE_TYPE_PROC, ...)
-#ifdef __BLOCKS__
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_MALLOC DISPATCH_NONNULL4 DISPATCH_NONNULL5 DISPATCH_NOTHROW DISPATCH_DEPRECATED
-dispatch_source_t
-dispatch_source_proc_create(
-	pid_t pid,
-	uint64_t flags,
-	dispatch_source_attr_t attr,
-	dispatch_queue_t queue,
-	dispatch_source_handler_t handler);
-#endif /* __BLOCKS__ */
-
-// Use: dispatch_source_create(DISPATCH_SOURCE_TYPE_PROC, ...)
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_MALLOC DISPATCH_NONNULL4 DISPATCH_NONNULL6 DISPATCH_NOTHROW DISPATCH_DEPRECATED
-dispatch_source_t
-dispatch_source_proc_create_f(
-	pid_t pid,
-	uint64_t flags, 
-	dispatch_source_attr_t attr,
-	dispatch_queue_t queue,
-	void *h_context,
-	dispatch_source_handler_function_t handler);
-
-enum {
-	DISPATCH_MACHPORT_DEAD = 0x1,
-	DISPATCH_MACHPORT_RECV = 0x2,
-	DISPATCH_MACHPORT_DELETED = 0x4,
-};
-
-// Use: dispatch_source_create(DISPATCH_SOURCE_TYPE_MACH_RECV, ...)
-#if HAVE_MACH
-#ifdef __BLOCKS__
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_MALLOC DISPATCH_NOTHROW DISPATCH_DEPRECATED
-dispatch_source_t
-dispatch_source_machport_create(
-	mach_port_t mport,
-	uint64_t flags, 
-	dispatch_source_attr_t attr,
-	dispatch_queue_t queue,
-	dispatch_source_handler_t handler);
-#endif /* __BLOCKS__ */
-
-// Use: dispatch_source_create(DISPATCH_SOURCE_TYPE_MACH_RECV, ...)
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_MALLOC DISPATCH_NOTHROW DISPATCH_DEPRECATED
-dispatch_source_t
-dispatch_source_machport_create_f(
-	mach_port_t mport,
-	uint64_t flags, 
-	dispatch_source_attr_t attr,
-	dispatch_queue_t queue,
-	void *h_context,
-	dispatch_source_handler_function_t handler);
-#endif /* HAVE_MACH */
-
-enum {
-	DISPATCH_SOURCE_DATA_ADD = 1,
-	DISPATCH_SOURCE_DATA_OR,
-};
-
-// Use: dispatch_source_create(DISPATCH_SOURCE_TYPE_DATA..., ...)
-#ifdef __BLOCKS__
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_MALLOC DISPATCH_NONNULL3 DISPATCH_NONNULL4 DISPATCH_NOTHROW DISPATCH_DEPRECATED
-dispatch_source_t
-dispatch_source_data_create(
-	unsigned long behavior,
-	dispatch_source_attr_t attr,
-	dispatch_queue_t queue,
-	dispatch_source_handler_t handler);
-#endif /* __BLOCKS__ */
-
-// Use: dispatch_source_create(DISPATCH_SOURCE_TYPE_DATA..., ...)
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_MALLOC DISPATCH_NONNULL3 DISPATCH_NONNULL5 DISPATCH_NOTHROW DISPATCH_DEPRECATED
-dispatch_source_t
-dispatch_source_data_create_f(
-	unsigned long behavior,
-	dispatch_source_attr_t attr,
-	dispatch_queue_t queue,
-	void *h_context,
-	dispatch_source_handler_function_t handler);
-
-enum {
-	DISPATCH_SOURCE_CUSTOM_ADD = DISPATCH_SOURCE_DATA_ADD,
-	DISPATCH_SOURCE_CUSTOM_OR = DISPATCH_SOURCE_DATA_OR,
-};
-
-// Use: dispatch_source_create(DISPATCH_SOURCE_TYPE_DATA..., ...)
-#ifdef __BLOCKS__
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_MALLOC DISPATCH_NONNULL2 DISPATCH_NONNULL3 DISPATCH_NOTHROW DISPATCH_DEPRECATED
-dispatch_source_t
-dispatch_source_custom_create(
-							  unsigned long behavior,
-							  dispatch_source_attr_t attr,
-							  dispatch_queue_t queue,
-							  dispatch_event_handler_t handler);
-#endif /* __BLOCKS__ */
-
-// Use: dispatch_source_create(DISPATCH_SOURCE_TYPE_DATA..., ...)
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_MALLOC DISPATCH_NONNULL2 DISPATCH_NONNULL4 DISPATCH_NOTHROW DISPATCH_DEPRECATED
-dispatch_source_t
-dispatch_source_custom_create_f(
-								unsigned long behavior,
-								dispatch_source_attr_t attr,
-								dispatch_queue_t queue,
-								void *h_context,
-								dispatch_event_handler_function_t handler);
-
-// Use: dispatch_source_create(DISPATCH_SOURCE_TYPE_VFS, ...)
-#if defined(__BLOCKS__)
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_MALLOC DISPATCH_NONNULL3 DISPATCH_NONNULL4 DISPATCH_DEPRECATED
-dispatch_source_t
-dispatch_source_vfs_create(
-						   uint64_t flags,
-						   dispatch_source_attr_t attr,
-						   dispatch_queue_t queue,
-						   dispatch_source_handler_t handler);
-#endif /* __BLOCKS__ */
-
-// Use: dispatch_source_create(DISPATCH_SOURCE_TYPE_VFS, ...)
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_MALLOC DISPATCH_NONNULL3 DISPATCH_NONNULL5 DISPATCH_DEPRECATED
-dispatch_source_t
-dispatch_source_vfs_create_f(
-							 uint64_t flags,
-							 dispatch_source_attr_t attr,
-							 dispatch_queue_t queue,
-							 void *h_context,
-							 dispatch_source_handler_function_t handler);
-
-#if HAVE_MACH
-/*
- * Raw Mach message support from MIG source.
- *
- * It is possible to use the following callback style with the MIG source to
- * obtain the raw mach message (and send no reply) similar to CFMachPort.
- * (For more specific CFMachPort compatibility, see below).
- *
- * void handle_mach_msg(mach_msg_header *msg) { ... }
- * ...
- * DISPATCH_MACHPORT_CALLBACK_DECL(mig_compat_callback, handle_mach_msg);
- * ...
- * mig = dispatch_source_mig_create(mp, MY_MAX_MSG_SIZE, NULL,
- *         queue, mig_compat_callback);
- */
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_DEPRECATED
-boolean_t
-_dispatch_machport_callback(mach_msg_header_t *msg, mach_msg_header_t *reply, void (*callback)(mach_msg_header_t *));
-
-#define DISPATCH_MACHPORT_CALLBACK_DECL(new_callback, existing_callback) \
-__private_extern__ boolean_t \
-new_callback(mach_msg_header_t *msg, mach_msg_header_t *reply) \
-{ return _dispatch_machport_callback(msg, reply, existing_callback); }
-
-/*
- * CFMachPort compatibility.
- *
- * It is possible to use existing CFMachPort callbacks with dispatch mig sources
- * by delcaring the following shim and using the shim as the mig server callback
- * to dispatch_source_mig_create().
- * The CFMachPortRef "port" parameter of the CFMachPortCallBack will be NULL. 
- * If mach_port_set_context() is used, that value will be passed into the "info"
- * parameter of the CFMachPortCallBack.
- *
- * DISPATCH_CFMACHPORT_CALLBACK_DECL(mig_callback, MyCFMachPortCallBack);
- *
- * ...
- * {
- * kr = mach_port_set_context(mach_task_self(), mp, (mach_vm_address_t)context);
- * mig = dispatch_source_mig_create(mp, MY_MAX_MSG_SIZE, NULL,
- *         queue, mig_callback);
- */
-struct __CFMachPort;
-
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_DEPRECATED
-boolean_t
-_dispatch_CFMachPortCallBack(mach_msg_header_t *msg, mach_msg_header_t *reply, void (*callback)(struct __CFMachPort *, void *msg, signed long size, void *));
-
-#define DISPATCH_CFMACHPORT_CALLBACK_DECL(new_callback, existing_callback) \
-__private_extern__ boolean_t \
-new_callback(mach_msg_header_t *msg, mach_msg_header_t *reply) \
-{ return _dispatch_CFMachPortCallBack(msg, reply, existing_callback); }
-
-#endif /* HAVE_MACH */
-
-__DISPATCH_END_DECLS
-
-#endif

Deleted: branches/Lion/src/os_shims.h
===================================================================
--- branches/Lion/src/os_shims.h	2011-08-18 20:21:48 UTC (rev 200)
+++ branches/Lion/src/os_shims.h	2011-08-18 20:37:45 UTC (rev 201)
@@ -1,70 +0,0 @@
-/*
- * Copyright (c) 2008-2009 Apple Inc. All rights reserved.
- *
- * @APPLE_APACHE_LICENSE_HEADER_START@
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * 
- * @APPLE_APACHE_LICENSE_HEADER_END@
- */
-
-/*
- * IMPORTANT: This header file describes INTERNAL interfaces to libdispatch
- * which are subject to change in future releases of Mac OS X. Any applications
- * relying on these interfaces WILL break.
- */
-
-#ifndef __DISPATCH_OS_SHIMS__
-#define __DISPATCH_OS_SHIMS__
-
-#include <pthread.h>
-#if HAVE_PTHREAD_MACHDEP_H
-#include <pthread_machdep.h>
-#endif
-#if HAVE_PTHREAD_WORKQUEUES
-#include <pthread_workqueue.h>
-#endif
-#if HAVE_PTHREAD_NP_H
-#include <pthread_np.h>
-#endif
-
-#if USE_APPLE_CRASHREPORTER_INFO
-__private_extern__ const char *__crashreporter_info__;
-#endif
-
-#if !HAVE_DECL_FD_COPY
-#define	FD_COPY(f, t)	(void)(*(t) = *(f))
-#endif
-
-#if TARGET_OS_WIN32
-#define bzero(ptr,len) memset((ptr), 0, (len))
-#define snprintf _snprintf
-
-inline size_t strlcpy(char *dst, const char *src, size_t size) {
-       int res = strlen(dst) + strlen(src) + 1;
-       if (size > 0) {
-               size_t n = size - 1;
-               strncpy(dst, src, n);
-               dst[n] = 0;
-       }
-       return res;
-}
-#endif
-
-#include "shims/getprogname.h"
-#include "shims/malloc_zone.h"
-#include "shims/tsd.h"
-#include "shims/perfmon.h"
-#include "shims/time.h"
-
-#endif

Deleted: branches/Lion/src/private.h
===================================================================
--- branches/Lion/src/private.h	2011-08-18 20:21:48 UTC (rev 200)
+++ branches/Lion/src/private.h	2011-08-18 20:37:45 UTC (rev 201)
@@ -1,140 +0,0 @@
-/*
- * Copyright (c) 2008-2009 Apple Inc. All rights reserved.
- *
- * @APPLE_APACHE_LICENSE_HEADER_START@
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * 
- * @APPLE_APACHE_LICENSE_HEADER_END@
- */
-
-/*
- * IMPORTANT: This header file describes INTERNAL interfaces to libdispatch
- * which are subject to change in future releases of Mac OS X. Any applications
- * relying on these interfaces WILL break.
- */
-
-#ifndef __DISPATCH_PRIVATE__
-#define __DISPATCH_PRIVATE__
-
-#ifdef __APPLE__
-#include <TargetConditionals.h>
-#endif
-
-#if HAVE_MACH
-#include <mach/boolean.h>
-#include <mach/mach.h>
-#include <mach/message.h>
-#endif
-#if HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#if HAVE_SYS_CDEFS_H
-#include <sys/cdefs.h>
-#endif
-#include <pthread.h>
-
-#ifdef __IPHONE_OS_VERSION_MIN_REQUIRED
-/* iPhone OS does not make any legacy definitions visible */
-#define DISPATCH_NO_LEGACY
-#endif
-
-#ifndef __DISPATCH_BUILDING_DISPATCH__
-#include_next <dispatch/dispatch.h>
-
-// Workaround <rdar://problem/6597365/>
-#ifndef __DISPATCH_PUBLIC__
-#include "/usr/include/dispatch/dispatch.h"
-#endif
-
-#ifndef __DISPATCH_INDIRECT__
-#define __DISPATCH_INDIRECT__
-#endif
-
-#include <dispatch/benchmark.h>
-#include <dispatch/queue_private.h>
-#include <dispatch/source_private.h>
-
-#ifndef DISPATCH_NO_LEGACY
-#include <dispatch/legacy.h>
-#endif
-
-#undef __DISPATCH_INDIRECT__
-
-#endif /* !__DISPATCH_BUILDING_DISPATCH__ */
-
-/* LEGACY: Use DISPATCH_API_VERSION */
-#define LIBDISPATCH_VERSION DISPATCH_API_VERSION
-
-__DISPATCH_BEGIN_DECLS
-
-DISPATCH_EXPORT DISPATCH_NOTHROW
-void
-#if USE_LIBDISPATCH_INIT_CONSTRUCTOR
-libdispatch_init(void) __attribute__ ((constructor));
-#else
-libdispatch_init(void);
-#endif
-
-#if HAVE_MACH
-#define DISPATCH_COCOA_COMPAT 1
-#if DISPATCH_COCOA_COMPAT
-
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
-DISPATCH_EXPORT DISPATCH_NOTHROW
-mach_port_t
-_dispatch_get_main_queue_port_4CF(void);
-
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
-DISPATCH_EXPORT DISPATCH_NOTHROW
-void
-_dispatch_main_queue_callback_4CF(mach_msg_header_t *msg);
-
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
-DISPATCH_EXPORT
-void (*dispatch_begin_thread_4GC)(void);
-
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
-DISPATCH_EXPORT
-void (*dispatch_end_thread_4GC)(void);
-
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
-DISPATCH_EXPORT
-void *(*_dispatch_begin_NSAutoReleasePool)(void);
-
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
-DISPATCH_EXPORT
-void (*_dispatch_end_NSAutoReleasePool)(void *);
-
-#endif
-#endif /* HAVE_MACH */
-
-/* pthreads magic */
-
-DISPATCH_NOTHROW void dispatch_atfork_prepare(void);
-DISPATCH_NOTHROW void dispatch_atfork_parent(void);
-DISPATCH_NOTHROW void dispatch_atfork_child(void);
-DISPATCH_NOTHROW void dispatch_init_pthread(pthread_t);
-
-#if HAVE_MACH
-/*
- * Extract the context pointer from a mach message trailer.
- */
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
-void *
-dispatch_mach_msg_get_context(mach_msg_header_t *msg);
-#endif
-
-__DISPATCH_END_DECLS
-
-#endif

Deleted: branches/Lion/src/queue_kevent.c
===================================================================
--- branches/Lion/src/queue_kevent.c	2011-08-18 20:21:48 UTC (rev 200)
+++ branches/Lion/src/queue_kevent.c	2011-08-18 20:37:45 UTC (rev 201)
@@ -1,289 +0,0 @@
-/*
- * Copyright (c) 2008-2009 Apple Inc. All rights reserved.
- *
- * @APPLE_APACHE_LICENSE_HEADER_START@
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * 
- * @APPLE_APACHE_LICENSE_HEADER_END@
- */
-
-#include "internal.h"
-#include "kevent_internal.h"
-
-
-static bool _dispatch_select_workaround;
-static fd_set _dispatch_rfds;
-static fd_set _dispatch_wfds;
-static void *_dispatch_rfd_ptrs[FD_SETSIZE];
-static void *_dispatch_wfd_ptrs[FD_SETSIZE];
-
-static int _dispatch_kq;
-
-static void
-_dispatch_get_kq_init(void *context __attribute__((unused)))
-{
-	static const struct kevent kev = {
-		.ident = 1,
-		.filter = EVFILT_USER,
-		.flags = EV_ADD|EV_CLEAR,
-	};
-
-	_dispatch_kq = kqueue();
-	_dispatch_safe_fork = false;
-	// in case we fall back to select()
-	FD_SET(_dispatch_kq, &_dispatch_rfds);
-
-	if (_dispatch_kq == -1) {
-		dispatch_assert_zero(errno);
-	}
-
-	(void)dispatch_assume_zero(kevent(_dispatch_kq, &kev, 1, NULL, 0,
-	    NULL)); 
-
-	_dispatch_queue_push(_dispatch_mgr_q.do_targetq, &_dispatch_mgr_q);
-}
-
-static int
-_dispatch_get_kq(void)
-{
-	static dispatch_once_t pred;
-
-	dispatch_once_f(&pred, NULL, _dispatch_get_kq_init);
-
-	return _dispatch_kq;
-}
-
-static void
-_dispatch_mgr_thread2(struct kevent *kev, size_t cnt)
-{
-	size_t i;
-
-	for (i = 0; i < cnt; i++) {
-		// EVFILT_USER isn't used by sources
-		if (kev[i].filter == EVFILT_USER) {
-			// If _dispatch_mgr_thread2() ever is changed to return to the
-			// caller, then this should become _dispatch_queue_drain()
-			_dispatch_queue_serial_drain_till_empty(&_dispatch_mgr_q);
-		} else {
-			_dispatch_source_drain_kevent(&kev[i]);
-		}
-    }
-}
-
-static dispatch_queue_t
-_dispatch_mgr_invoke(dispatch_queue_t dq)
-{
-	static const struct timespec timeout_immediately = { 0, 0 };
-	struct timespec timeout;
-	const struct timespec *timeoutp;
-	struct timeval sel_timeout, *sel_timeoutp;
-	fd_set tmp_rfds, tmp_wfds;
-	struct kevent kev[1];
-	int k_cnt, k_err, i, r;
-
-	_dispatch_thread_setspecific(dispatch_queue_key, dq);
-
-	for (;;) {
-		_dispatch_run_timers();
-
-		timeoutp = _dispatch_get_next_timer_fire(&timeout);
-		
-		if (_dispatch_select_workaround) {
-			FD_COPY(&_dispatch_rfds, &tmp_rfds);
-			FD_COPY(&_dispatch_wfds, &tmp_wfds);
-			if (timeoutp) {
-				sel_timeout.tv_sec = timeoutp->tv_sec;
-				sel_timeout.tv_usec = (typeof(sel_timeout.tv_usec))(timeoutp->tv_nsec / 1000u);
-				sel_timeoutp = &sel_timeout;
-			} else {
-				sel_timeoutp = NULL;
-			}
-			
-			r = select(FD_SETSIZE, &tmp_rfds, &tmp_wfds, NULL, sel_timeoutp);
-			if (r == -1) {
-				if (errno != EBADF) {
-					(void)dispatch_assume_zero(errno);
-					continue;
-				}
-				for (i = 0; i < FD_SETSIZE; i++) {
-					if (i == _dispatch_kq) {
-						continue;
-					}
-					if (!FD_ISSET(i, &_dispatch_rfds) && !FD_ISSET(i, &_dispatch_wfds)) {
-						continue;
-					}
-					r = dup(i);
-					if (r != -1) {
-						close(r);
-					} else {
-						FD_CLR(i, &_dispatch_rfds);
-						FD_CLR(i, &_dispatch_wfds);
-						_dispatch_rfd_ptrs[i] = 0;
-						_dispatch_wfd_ptrs[i] = 0;
-					}
-				}
-				continue;
-			}
-			
-			if (r > 0) {
-				for (i = 0; i < FD_SETSIZE; i++) {
-					if (i == _dispatch_kq) {
-						continue;
-					}
-					if (FD_ISSET(i, &tmp_rfds)) {
-						FD_CLR(i, &_dispatch_rfds);	// emulate EV_DISABLE
-						EV_SET(&kev[0], i, EVFILT_READ, EV_ADD|EV_ENABLE|EV_DISPATCH, 0, 1, _dispatch_rfd_ptrs[i]);
-						_dispatch_rfd_ptrs[i] = 0;
-						_dispatch_mgr_thread2(kev, 1);
-					}
-					if (FD_ISSET(i, &tmp_wfds)) {
-						FD_CLR(i, &_dispatch_wfds);	// emulate EV_DISABLE
-						EV_SET(&kev[0], i, EVFILT_WRITE, EV_ADD|EV_ENABLE|EV_DISPATCH, 0, 1, _dispatch_wfd_ptrs[i]);
-						_dispatch_wfd_ptrs[i] = 0;
-						_dispatch_mgr_thread2(kev, 1);
-					}
-				}
-			}
-			
-			timeoutp = &timeout_immediately;
-		}
-		
-		k_cnt = kevent(_dispatch_kq, NULL, 0, kev, sizeof(kev) / sizeof(kev[0]), timeoutp);
-		k_err = errno;
-
-		switch (k_cnt) {
-		case -1:
-			if (k_err == EBADF) {
-				DISPATCH_CLIENT_CRASH("Do not close random Unix descriptors");
-			}
-			(void)dispatch_assume_zero(k_err);
-			continue;
-		default:
-			_dispatch_mgr_thread2(kev, (size_t)k_cnt);
-			// fall through
-		case 0:
-			_dispatch_force_cache_cleanup();
-			continue;
-		}
-	}
-
-	return NULL;
-}
-
-static bool
-_dispatch_mgr_wakeup(dispatch_queue_t dq)
-{
-	static const struct kevent kev = {
-		.ident = 1,
-		.filter = EVFILT_USER,
-		.fflags = NOTE_TRIGGER,
-	};
-
-	_dispatch_debug("waking up the _dispatch_mgr_q: %p", dq);
-
-	_dispatch_update_kq(&kev);
-
-	return false;
-}
-
-void
-_dispatch_update_kq(const struct kevent *kev)
-{
-	struct kevent kev_copy = *kev;
-	kev_copy.flags |= EV_RECEIPT;
-
-	if (kev_copy.flags & EV_DELETE) {
-		switch (kev_copy.filter) {
-		case EVFILT_READ:
-			if (FD_ISSET((int)kev_copy.ident, &_dispatch_rfds)) {
-				FD_CLR((int)kev_copy.ident, &_dispatch_rfds);
-				_dispatch_rfd_ptrs[kev_copy.ident] = 0;
-				return;
-			}
-		case EVFILT_WRITE:
-			if (FD_ISSET((int)kev_copy.ident, &_dispatch_wfds)) {
-				FD_CLR((int)kev_copy.ident, &_dispatch_wfds);
-				_dispatch_wfd_ptrs[kev_copy.ident] = 0;
-				return;
-			}
-		default:
-			break;
-		}
-	}
-	
-	int rval = kevent(_dispatch_get_kq(), &kev_copy, 1, &kev_copy, 1, NULL);
-	if (rval == -1) { 
-		// If we fail to register with kevents, for other reasons aside from
-		// changelist elements.
-		(void)dispatch_assume_zero(errno);
-		//kev_copy.flags |= EV_ERROR;
-		//kev_copy.data = error;
-		return;
-	}
-
-	// The following select workaround only applies to adding kevents
-	if (!(kev->flags & EV_ADD)) {
-		return;
-	}
-
-	switch (kev_copy.data) {
-	case 0:
-		return;
-	case EBADF:
-		break;
-	default:
-		// If an error occurred while registering with kevent, and it was 
-		// because of a kevent changelist processing && the kevent involved
-		// either doing a read or write, it would indicate we were trying
-		// to register a /dev/* port; fall back to select
-		switch (kev_copy.filter) {
-		case EVFILT_READ:
-			_dispatch_select_workaround = true;
-			FD_SET((int)kev_copy.ident, &_dispatch_rfds);
-			_dispatch_rfd_ptrs[kev_copy.ident] = kev_copy.udata;
-			break;
-		case EVFILT_WRITE:
-			_dispatch_select_workaround = true;
-			FD_SET((int)kev_copy.ident, &_dispatch_wfds);
-			_dispatch_wfd_ptrs[kev_copy.ident] = kev_copy.udata;
-			break;
-		default:
-			_dispatch_source_drain_kevent(&kev_copy); 
-			break;
-		}
-		break;
-	}
-}
-
-static const struct dispatch_queue_vtable_s _dispatch_queue_mgr_vtable = {
-	.do_type = DISPATCH_QUEUE_MGR_TYPE,
-	.do_kind = "mgr-queue",
-	.do_invoke = _dispatch_mgr_invoke,
-	.do_debug = dispatch_queue_debug,
-	.do_probe = _dispatch_mgr_wakeup,
-};
-
-// 6618342 Contact the team that owns the Instrument DTrace probe before renaming this symbol
-struct dispatch_queue_s _dispatch_mgr_q = {
-	.do_vtable = &_dispatch_queue_mgr_vtable,
-	.do_ref_cnt = DISPATCH_OBJECT_GLOBAL_REFCNT,
-	.do_xref_cnt = DISPATCH_OBJECT_GLOBAL_REFCNT,
-	.do_suspend_cnt = DISPATCH_OBJECT_SUSPEND_LOCK,
-	.do_targetq = &_dispatch_root_queues[DISPATCH_ROOT_QUEUE_COUNT - 1],
-
-	.dq_label = "com.apple.libdispatch-manager",
-	.dq_width = 1,
-	.dq_serialnum = 2,
-};
-

Deleted: branches/Lion/src/queue_private.h
===================================================================
--- branches/Lion/src/queue_private.h	2011-08-18 20:21:48 UTC (rev 200)
+++ branches/Lion/src/queue_private.h	2011-08-18 20:37:45 UTC (rev 201)
@@ -1,122 +0,0 @@
-/*
- * Copyright (c) 2008-2009 Apple Inc. All rights reserved.
- *
- * @APPLE_APACHE_LICENSE_HEADER_START@
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * 
- * @APPLE_APACHE_LICENSE_HEADER_END@
- */
-
-/*
- * IMPORTANT: This header file describes INTERNAL interfaces to libdispatch
- * which are subject to change in future releases of Mac OS X. Any applications
- * relying on these interfaces WILL break.
- */
-
-#ifndef __DISPATCH_QUEUE_PRIVATE__
-#define __DISPATCH_QUEUE_PRIVATE__
-
-#ifndef __DISPATCH_INDIRECT__
-#error "Please #include <dispatch/dispatch.h> instead of this file directly."
-#include <dispatch/base.h> // for HeaderDoc
-#endif
-
-__DISPATCH_BEGIN_DECLS
-
-
-/*!
- * @enum dispatch_queue_flags_t
- *
- * @constant DISPATCH_QUEUE_OVERCOMMIT
- * The queue will create a new thread for invoking blocks, regardless of how
- * busy the computer is.
- */
-enum {
-	DISPATCH_QUEUE_OVERCOMMIT = 0x2ull,
-};
-
-#define DISPATCH_QUEUE_FLAGS_MASK	(DISPATCH_QUEUE_OVERCOMMIT)
-
-#ifdef __BLOCKS__
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
-DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
-void
-dispatch_barrier_sync(dispatch_queue_t queue, dispatch_block_t block);
-#endif
-
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
-DISPATCH_EXPORT DISPATCH_NONNULL1 DISPATCH_NONNULL3 DISPATCH_NOTHROW
-void
-dispatch_barrier_sync_f(dispatch_queue_t dq, void *context, dispatch_function_t work);
-
-#ifdef __BLOCKS__
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
-DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
-void
-dispatch_barrier_async(dispatch_queue_t queue, dispatch_block_t block);
-#endif
-
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
-DISPATCH_EXPORT DISPATCH_NONNULL1 DISPATCH_NONNULL3 DISPATCH_NOTHROW
-void
-dispatch_barrier_async_f(dispatch_queue_t dq, void *context, dispatch_function_t work);
-
-/*!
- * @function dispatch_queue_set_width
- *
- * @abstract
- * Set the width of concurrency for a given queue. The default width of a
- * privately allocated queue is one.
- *
- * @param queue
- * The queue to adjust. Passing the main queue, a default concurrent queue or
- * any other default queue will be ignored.
- *
- * @param width
- * The new maximum width of concurrency depending on available resources.
- * If zero is passed, then the value is promoted to one.
- * Negative values are magic values that map to automatic width values.
- * Unknown negative values default to DISPATCH_QUEUE_WIDTH_MAX_LOGICAL_CPUS.
- */
-#define DISPATCH_QUEUE_WIDTH_ACTIVE_CPUS	-1
-#define DISPATCH_QUEUE_WIDTH_MAX_PHYSICAL_CPUS	-2
-#define DISPATCH_QUEUE_WIDTH_MAX_LOGICAL_CPUS	-3
-
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
-DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
-void
-dispatch_queue_set_width(dispatch_queue_t dq, long width);
-
-
-
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
-extern const struct dispatch_queue_offsets_s {
-	// always add new fields at the end
-	const uint16_t dqo_version;
-	const uint16_t dqo_label;
-	const uint16_t dqo_label_size;
-	const uint16_t dqo_flags;
-	const uint16_t dqo_flags_size;
-	const uint16_t dqo_serialnum;
-	const uint16_t dqo_serialnum_size;
-	const uint16_t dqo_width;
-	const uint16_t dqo_width_size;
-	const uint16_t dqo_running;
-	const uint16_t dqo_running_size;
-} dispatch_queue_offsets;
-
-
-__DISPATCH_END_DECLS
-
-#endif

Copied: branches/Lion/src/shims/atomic.h (from rev 200, branches/Lion/src/hw_shims.h)
===================================================================
--- branches/Lion/src/shims/atomic.h	                        (rev 0)
+++ branches/Lion/src/shims/atomic.h	2011-08-18 20:37:45 UTC (rev 201)
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2008-2009 Apple Inc. All rights reserved.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_START@
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * 
+ * @APPLE_APACHE_LICENSE_HEADER_END@
+ */
+
+/*
+ * IMPORTANT: This header file describes INTERNAL interfaces to libdispatch
+ * which are subject to change in future releases of Mac OS X. Any applications
+ * relying on these interfaces WILL break.
+ */
+
+#ifndef __DISPATCH_HW_SHIMS__
+#define __DISPATCH_HW_SHIMS__
+
+/* x86 has a 64 byte cacheline */
+#define DISPATCH_CACHELINE_SIZE	64
+#define ROUND_UP_TO_CACHELINE_SIZE(x)	(((x) + (DISPATCH_CACHELINE_SIZE - 1)) & ~(DISPATCH_CACHELINE_SIZE - 1))
+#define ROUND_UP_TO_VECTOR_SIZE(x)	(((x) + 15) & ~15)
+
+#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2)
+// GCC generates suboptimal register pressure
+// LLVM does better, but doesn't support tail calls
+// 6248590 __sync_*() intrinsics force a gratuitous "lea" instruction, with resulting register pressure
+#if 0 && defined(__i386__) || defined(__x86_64__)
+#define dispatch_atomic_xchg(p, n)	({ typeof(*(p)) _r; asm("xchg %0, %1" : "=r" (_r) : "m" (*(p)), "0" (n)); _r; })
+#else
+#define dispatch_atomic_xchg(p, n)	((typeof(*(p)))__sync_lock_test_and_set((p), (n)))
+#endif
+#define dispatch_atomic_cmpxchg(p, o, n)	__sync_bool_compare_and_swap((p), (o), (n))
+#define dispatch_atomic_inc(p)	__sync_add_and_fetch((p), 1)
+#define dispatch_atomic_dec(p)	__sync_sub_and_fetch((p), 1)
+#define dispatch_atomic_add(p, v)	__sync_add_and_fetch((p), (v))
+#define dispatch_atomic_sub(p, v)	__sync_sub_and_fetch((p), (v))
+#define dispatch_atomic_or(p, v)	__sync_fetch_and_or((p), (v))
+#define dispatch_atomic_and(p, v)	__sync_fetch_and_and((p), (v))
+#if defined(__i386__) || defined(__x86_64__)
+/* GCC emits nothing for __sync_synchronize() on i386/x86_64. */
+#define dispatch_atomic_barrier()	__asm__ __volatile__("mfence")
+#else
+#define dispatch_atomic_barrier()	__sync_synchronize()
+#endif
+#else
+#error "Please upgrade to GCC 4.2 or newer."
+#endif
+
+#if defined(__i386__) || defined(__x86_64__)
+#define _dispatch_hardware_pause() asm("pause")
+#define _dispatch_debugger() asm("int3")
+#else
+#define _dispatch_hardware_pause() asm("")
+#define _dispatch_debugger() asm("trap")
+#endif
+// really just a low level abort()
+#define _dispatch_hardware_crash() __builtin_trap()
+
+
+#endif

Deleted: branches/Lion/src/shims/mach.c
===================================================================
--- branches/Lion/src/shims/mach.c	2011-08-18 20:21:48 UTC (rev 200)
+++ branches/Lion/src/shims/mach.c	2011-08-18 20:37:45 UTC (rev 201)
@@ -1,69 +0,0 @@
-/*
- * Copyright (c) 2008-2009 Apple Inc. All rights reserved.
- *
- * @APPLE_APACHE_LICENSE_HEADER_START@
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * 
- * @APPLE_APACHE_LICENSE_HEADER_END@
- */
-
-#include "internal.h"
-
-#if HAVE_MACH
-void *
-dispatch_mach_msg_get_context(mach_msg_header_t *msg)
-{
-	mach_msg_context_trailer_t *tp;
-	void *context = NULL;
-	
-	tp = (mach_msg_context_trailer_t *)((uint8_t *)msg + round_msg(msg->msgh_size));
-	if (tp->msgh_trailer_size >= (mach_msg_size_t)sizeof(mach_msg_context_trailer_t)) {
-		context = (void *)(uintptr_t)tp->msgh_context;
-	}
-	
-	return context;
-}
-
-#ifndef DISPATCH_NO_LEGACY
-/*
- * Raw Mach message support
- */
-boolean_t
-_dispatch_machport_callback(mach_msg_header_t *msg, mach_msg_header_t *reply,
-  void (*callback)(mach_msg_header_t *))
-{
-	mig_reply_setup(msg, reply);
-	((mig_reply_error_t*)reply)->RetCode = MIG_NO_REPLY;
-
-	callback(msg);
-
-	return TRUE;
-}
-
-/*
- * CFMachPort compatibility
- */
-boolean_t
-_dispatch_CFMachPortCallBack(mach_msg_header_t *msg, mach_msg_header_t *reply,
-  void (*callback)(struct __CFMachPort *, void *msg, signed long size, void *))
-{
-	mig_reply_setup(msg, reply);
-	((mig_reply_error_t*)reply)->RetCode = MIG_NO_REPLY;
-	
-	callback(NULL, msg, msg->msgh_size, dispatch_mach_msg_get_context(msg));
-
-	return TRUE;
-}
-#endif
-#endif /* HAVE_MACH */

Deleted: branches/Lion/src/shims/time.c
===================================================================
--- branches/Lion/src/shims/time.c	2011-08-18 20:21:48 UTC (rev 200)
+++ branches/Lion/src/shims/time.c	2011-08-18 20:37:45 UTC (rev 201)
@@ -1,46 +0,0 @@
-/*
- * Copyright (c) 2008-2009 Apple Inc. All rights reserved.
- *
- * @APPLE_APACHE_LICENSE_HEADER_START@
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * 
- * @APPLE_APACHE_LICENSE_HEADER_END@
- */
-
-#include "internal.h"
-
-#if !(defined(__i386__) || defined(__x86_64__)) || !HAVE_MACH_ABSOLUTE_TIME
-_dispatch_host_time_data_s _dispatch_host_time_data;
-
-void
-_dispatch_get_host_time_init(void *context __attribute__((unused)))
-{
-#if HAVE_MACH_ABSOLUTE_TIME
-	mach_timebase_info_data_t tbi;
-	(void)dispatch_assume_zero(mach_timebase_info(&tbi));
-	_dispatch_host_time_data.frac = tbi.numer;
-	_dispatch_host_time_data.frac /= tbi.denom;
-	_dispatch_host_time_data.ratio_1_to_1 = (tbi.numer == tbi.denom);
-#elif TARGET_OS_WIN32
-	LARGE_INTEGER freq;
-	dispatch_assume(QueryPerformanceFrequency(&freq));
-	_dispatch_host_time_data.frac = (long double)NSEC_PER_SEC / (long double)freq.QuadPart;
-	_dispatch_host_time_data.ratio_1_to_1 = (freq.QuadPart == 1);
-#else // TARGET_OS_WIN32 
-	_dispatch_host_time_data.frac = 1.0;
-	_dispatch_host_time_data.ratio_1_to_1 = 1;
-#endif
-}
-
-#endif

Deleted: branches/Lion/src/shims/tsd.c
===================================================================
--- branches/Lion/src/shims/tsd.c	2011-08-18 20:21:48 UTC (rev 200)
+++ branches/Lion/src/shims/tsd.c	2011-08-18 20:37:45 UTC (rev 201)
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2010 Apple Inc. All rights reserved.
- *
- * @APPLE_APACHE_LICENSE_HEADER_START@
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * 
- * @APPLE_APACHE_LICENSE_HEADER_END@
- */
-
-#include "internal.h"
-
-#if !HAVE_PTHREAD_KEY_INIT_NP
-pthread_key_t dispatch_queue_key;
-pthread_key_t dispatch_sema4_key;
-pthread_key_t dispatch_cache_key;
-pthread_key_t dispatch_bcounter_key;
-#endif

Copied: branches/Lion/src/shims.h (from rev 200, branches/Lion/src/os_shims.h)
===================================================================
--- branches/Lion/src/shims.h	                        (rev 0)
+++ branches/Lion/src/shims.h	2011-08-18 20:37:45 UTC (rev 201)
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2008-2009 Apple Inc. All rights reserved.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_START@
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * 
+ * @APPLE_APACHE_LICENSE_HEADER_END@
+ */
+
+/*
+ * IMPORTANT: This header file describes INTERNAL interfaces to libdispatch
+ * which are subject to change in future releases of Mac OS X. Any applications
+ * relying on these interfaces WILL break.
+ */
+
+#ifndef __DISPATCH_OS_SHIMS__
+#define __DISPATCH_OS_SHIMS__
+
+#include <pthread.h>
+#if HAVE_PTHREAD_MACHDEP_H
+#include <pthread_machdep.h>
+#endif
+#if HAVE_PTHREAD_WORKQUEUES
+#include <pthread_workqueue.h>
+#endif
+#if HAVE_PTHREAD_NP_H
+#include <pthread_np.h>
+#endif
+
+#if USE_APPLE_CRASHREPORTER_INFO
+__private_extern__ const char *__crashreporter_info__;
+#endif
+
+#if !HAVE_DECL_FD_COPY
+#define	FD_COPY(f, t)	(void)(*(t) = *(f))
+#endif
+
+#if TARGET_OS_WIN32
+#define bzero(ptr,len) memset((ptr), 0, (len))
+#define snprintf _snprintf
+
+inline size_t strlcpy(char *dst, const char *src, size_t size) {
+       int res = strlen(dst) + strlen(src) + 1;
+       if (size > 0) {
+               size_t n = size - 1;
+               strncpy(dst, src, n);
+               dst[n] = 0;
+       }
+       return res;
+}
+#endif
+
+#include "shims/getprogname.h"
+#include "shims/malloc_zone.h"
+#include "shims/tsd.h"
+#include "shims/perfmon.h"
+#include "shims/time.h"
+
+#endif

Deleted: branches/Lion/src/source_kevent.c
===================================================================
--- branches/Lion/src/source_kevent.c	2011-08-18 20:21:48 UTC (rev 200)
+++ branches/Lion/src/source_kevent.c	2011-08-18 20:37:45 UTC (rev 201)
@@ -1,1380 +0,0 @@
-/*
- * Copyright (c) 2008-2009 Apple Inc. All rights reserved.
- *
- * @APPLE_APACHE_LICENSE_HEADER_START@
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * 
- * @APPLE_APACHE_LICENSE_HEADER_END@
- */
-
-#include "internal.h"
-#include "kevent_internal.h"
-#if HAVE_MACH
-#include "protocol.h"
-#include "protocolServer.h"
-#endif
-#include <sys/mount.h>
-
-#define DISPATCH_EVFILT_TIMER	(-EVFILT_SYSCOUNT - 1)
-#define DISPATCH_EVFILT_CUSTOM_ADD	(-EVFILT_SYSCOUNT - 2)
-#define DISPATCH_EVFILT_CUSTOM_OR	(-EVFILT_SYSCOUNT - 3)
-#define DISPATCH_EVFILT_SYSCOUNT	(EVFILT_SYSCOUNT + 3)
-
-static struct dispatch_kevent_s _dispatch_kevent_timer[] = {
-	{
-		.dk_kevent = {
-			.ident = DISPATCH_TIMER_INDEX_WALL,
-			.filter = DISPATCH_EVFILT_TIMER,
-			.udata = &_dispatch_kevent_timer[0],
-		},
-		.dk_sources = TAILQ_HEAD_INITIALIZER(_dispatch_kevent_timer[0].dk_sources),
-	},
-	{
-		.dk_kevent = {
-			.ident = DISPATCH_TIMER_INDEX_MACH,
-			.filter = DISPATCH_EVFILT_TIMER,
-			.udata = &_dispatch_kevent_timer[1],
-		},
-		.dk_sources = TAILQ_HEAD_INITIALIZER(_dispatch_kevent_timer[1].dk_sources),
-	},
-};
-#define DISPATCH_TIMER_COUNT (sizeof _dispatch_kevent_timer / sizeof _dispatch_kevent_timer[0])
-
-static struct dispatch_kevent_s _dispatch_kevent_data_or = {
-	.dk_kevent = {
-		.filter = DISPATCH_EVFILT_CUSTOM_OR,
-		.flags = EV_CLEAR,
-		.udata = &_dispatch_kevent_data_or,
-	},
-	.dk_sources = TAILQ_HEAD_INITIALIZER(_dispatch_kevent_data_or.dk_sources),
-};
-static struct dispatch_kevent_s _dispatch_kevent_data_add = {
-	.dk_kevent = {
-		.filter = DISPATCH_EVFILT_CUSTOM_ADD,
-		.udata = &_dispatch_kevent_data_add,
-	},
-	.dk_sources = TAILQ_HEAD_INITIALIZER(_dispatch_kevent_data_add.dk_sources),
-};
-
-static void _dispatch_source_merge_kevent(dispatch_source_t ds, const struct kevent *ke);
-static void _dispatch_kevent_resume(dispatch_kevent_t dk, uint32_t new_flags, uint32_t del_flags);
-#if HAVE_MACH
-static void _dispatch_kevent_machport_resume(dispatch_kevent_t dk, uint32_t new_flags, uint32_t del_flags);
-static void _dispatch_kevent_machport_enable(dispatch_kevent_t dk);
-static void _dispatch_kevent_machport_disable(dispatch_kevent_t dk);
-
-static void _dispatch_drain_mach_messages(struct kevent *ke);
-static void
-#endif
-#if HAVE_MACH
-_dispatch_mach_notify_source_init(void *context __attribute__((unused)));
-#endif
-
-static const char *
-_evfiltstr(short filt)
-{
-	switch (filt) {
-#define _evfilt2(f) case (f): return #f
-	_evfilt2(EVFILT_READ);
-	_evfilt2(EVFILT_WRITE);
-	_evfilt2(EVFILT_AIO);
-	_evfilt2(EVFILT_VNODE);
-	_evfilt2(EVFILT_PROC);
-	_evfilt2(EVFILT_SIGNAL);
-	_evfilt2(EVFILT_TIMER);
-#if HAVE_MACH
-	_evfilt2(EVFILT_MACHPORT);
-#endif
-	_evfilt2(EVFILT_FS);
-	_evfilt2(EVFILT_USER);
-#if HAVE_DECL_EVFILT_SESSION
-	_evfilt2(EVFILT_SESSION);
-#endif
-#if HAVE_DECL_EVFILT_LIO
-	_evfilt2(EVFILT_LIO);
-#endif
-
-	_evfilt2(DISPATCH_EVFILT_TIMER);
-	_evfilt2(DISPATCH_EVFILT_CUSTOM_ADD);
-	_evfilt2(DISPATCH_EVFILT_CUSTOM_OR);
-	default:
-		return "EVFILT_missing";
-	}
-}
-
-#define DSL_HASH_SIZE 256u	// must be a power of two
-#define DSL_HASH(x)	((x) & (DSL_HASH_SIZE - 1))
-
-static TAILQ_HEAD(, dispatch_kevent_s) _dispatch_sources[DSL_HASH_SIZE];
-
-static inline uintptr_t
-_dispatch_kevent_hash(uintptr_t ident, short filter)
-{
-	uintptr_t value;
-#if HAVE_MACH
-	value = (filter == EVFILT_MACHPORT ? MACH_PORT_INDEX(ident) : ident);
-#else
-	value = ident;
-#endif
-	return DSL_HASH(value);
-}
-
-static dispatch_kevent_t
-_dispatch_kevent_find(uintptr_t ident, short filter)
-{
-	uintptr_t hash = _dispatch_kevent_hash(ident, filter);
-	dispatch_kevent_t dki;
-
-	TAILQ_FOREACH(dki, &_dispatch_sources[hash], dk_list) {
-		if (dki->dk_kevent.ident == ident && dki->dk_kevent.filter == filter) {
-			break;
-		}
-	}
-	return dki;
-}
-
-static void
-_dispatch_kevent_insert(dispatch_kevent_t dk)
-{
-	uintptr_t hash = _dispatch_kevent_hash(dk->dk_kevent.ident,
-					       dk->dk_kevent.filter);
-
-	TAILQ_INSERT_TAIL(&_dispatch_sources[hash], dk, dk_list);
-}
-
-#if DISPATCH_DEBUG
-void
-dispatch_debug_kevents(struct kevent* kev, size_t count, const char* str)
-{
-	size_t i;
-	for (i = 0; i < count; ++i) {
-		_dispatch_log("kevent[%lu] = { ident = %p, filter = %s, flags = 0x%x, fflags = 0x%x, data = %p, udata = %p }: %s",
-			i, (void*)kev[i].ident, _evfiltstr(kev[i].filter), kev[i].flags, kev[i].fflags, (void*)kev[i].data, (void*)kev[i].udata, str);
-	}
-}
-#endif
-
-static size_t
-_dispatch_source_kevent_debug(dispatch_source_t ds, char* buf, size_t bufsiz)
-{
-	size_t offset = _dispatch_source_debug(ds, buf, bufsiz);
-	offset += snprintf(&buf[offset], bufsiz - offset, "filter = %s }",
-			ds->ds_dkev ? _evfiltstr(ds->ds_dkev->dk_kevent.filter) : "????");
-	return offset;
-}
-
-static void
-_dispatch_source_init_tail_queue_array(void *context __attribute__((unused)))
-{
-	unsigned int i;
-	for (i = 0; i < DSL_HASH_SIZE; i++) {
-		TAILQ_INIT(&_dispatch_sources[i]);
-	}
-
-	TAILQ_INSERT_TAIL(&_dispatch_sources[DSL_HASH(DISPATCH_TIMER_INDEX_WALL)], &_dispatch_kevent_timer[DISPATCH_TIMER_INDEX_WALL], dk_list);
-	TAILQ_INSERT_TAIL(&_dispatch_sources[DSL_HASH(DISPATCH_TIMER_INDEX_MACH)], &_dispatch_kevent_timer[DISPATCH_TIMER_INDEX_MACH], dk_list);
-	TAILQ_INSERT_TAIL(&_dispatch_sources[0], &_dispatch_kevent_data_or, dk_list);
-	TAILQ_INSERT_TAIL(&_dispatch_sources[0], &_dispatch_kevent_data_add, dk_list);
-}
-
-// Find existing kevents, and merge any new flags if necessary
-void
-_dispatch_kevent_merge(dispatch_source_t ds)
-{
-	static dispatch_once_t pred;
-	dispatch_kevent_t dk;
-	typeof(dk->dk_kevent.fflags) new_flags;
-	bool do_resume = false;
-
-	if (ds->ds_is_installed) {
-		return;
-	}
-	ds->ds_is_installed = true;
-
-	dispatch_once_f(&pred, NULL, _dispatch_source_init_tail_queue_array);
-
-	dk = _dispatch_kevent_find(ds->ds_dkev->dk_kevent.ident, ds->ds_dkev->dk_kevent.filter);
-	
-	if (dk) {
-		// If an existing dispatch kevent is found, check to see if new flags
-		// need to be added to the existing kevent
-		new_flags = ~dk->dk_kevent.fflags & ds->ds_dkev->dk_kevent.fflags;
-		dk->dk_kevent.fflags |= ds->ds_dkev->dk_kevent.fflags;
-		free(ds->ds_dkev);
-		ds->ds_dkev = dk;
-		do_resume = new_flags;
-	} else {
-		dk = ds->ds_dkev;
-		_dispatch_kevent_insert(dk);
-		new_flags = dk->dk_kevent.fflags;
-		do_resume = true;
-	}
-
-	TAILQ_INSERT_TAIL(&dk->dk_sources, ds, ds_list);
-
-	// Re-register the kevent with the kernel if new flags were added
-	// by the dispatch kevent
-	if (do_resume) {
-		dk->dk_kevent.flags |= EV_ADD;
-		_dispatch_source_kevent_resume(ds, new_flags, 0);
-		ds->ds_is_armed = true;
-	}
-}
-
-
-void
-_dispatch_kevent_resume(dispatch_kevent_t dk, uint32_t new_flags, uint32_t del_flags)
-{
-	switch (dk->dk_kevent.filter) {
-	case DISPATCH_EVFILT_TIMER:
-	case DISPATCH_EVFILT_CUSTOM_ADD:
-	case DISPATCH_EVFILT_CUSTOM_OR:
-		// these types not registered with kevent
-		return;
-#if HAVE_MACH
-	case EVFILT_MACHPORT:
-		_dispatch_kevent_machport_resume(dk, new_flags, del_flags);
-		break;
-#endif
-	case EVFILT_PROC:
-		if (dk->dk_kevent.flags & EV_ONESHOT) {
-			return;
-		}
-		// fall through
-	default:
-		_dispatch_update_kq(&dk->dk_kevent);
-		if (dk->dk_kevent.flags & EV_DISPATCH) {
-			dk->dk_kevent.flags &= ~EV_ADD;
-		}
-		break;
-	}
-}
-
-void
-_dispatch_source_kevent_resume(dispatch_source_t ds, uint32_t new_flags, uint32_t del_flags)
-{
-	_dispatch_kevent_resume(ds->ds_dkev, new_flags, del_flags);
-}
-
-#ifndef DISPATCH_NO_LEGACY
-static void
-_dispatch_kevent_debugger2(void *context, dispatch_source_t unused __attribute__((unused)))
-{
-	struct sockaddr sa;
-	socklen_t sa_len = sizeof(sa);
-	int c, fd = (int)(long)context;
-	unsigned int i;
-	dispatch_kevent_t dk;
-	dispatch_source_t ds;
-	FILE *debug_stream;
-
-	c = accept(fd, &sa, &sa_len);
-	if (c == -1) {
-		if (errno != EAGAIN) {
-			(void)dispatch_assume_zero(errno);
-		}
-		return;
-	}
-#if 0
-	int r = fcntl(c, F_SETFL, 0);	// disable non-blocking IO
-	if (r == -1) {
-		(void)dispatch_assume_zero(errno);
-	}
-#endif
-	debug_stream = fdopen(c, "a");
-	if (!dispatch_assume(debug_stream)) {
-		close(c);
-		return;
-	}
-
-	fprintf(debug_stream, "HTTP/1.0 200 OK\r\n");
-	fprintf(debug_stream, "Content-type: text/html\r\n");
-	fprintf(debug_stream, "Pragma: nocache\r\n");
-	fprintf(debug_stream, "\r\n");
-	fprintf(debug_stream, "<html>\n<head><title>PID %u</title></head>\n<body>\n<ul>\n", getpid());
-
-	//fprintf(debug_stream, "<tr><td>DK</td><td>DK</td><td>DK</td><td>DK</td><td>DK</td><td>DK</td><td>DK</td></tr>\n");
-
-	for (i = 0; i < DSL_HASH_SIZE; i++) {
-		if (TAILQ_EMPTY(&_dispatch_sources[i])) {
-			continue;
-		}
-		TAILQ_FOREACH(dk, &_dispatch_sources[i], dk_list) {
-			fprintf(debug_stream, "\t<br><li>DK %p ident %lu filter %s flags 0x%hx fflags 0x%x data 0x%lx udata %p\n",
-					dk, (unsigned long)dk->dk_kevent.ident, _evfiltstr(dk->dk_kevent.filter), dk->dk_kevent.flags,
-					dk->dk_kevent.fflags, (unsigned long)dk->dk_kevent.data, dk->dk_kevent.udata);
-			fprintf(debug_stream, "\t\t<ul>\n");
-			TAILQ_FOREACH(ds, &dk->dk_sources, ds_list) {
-				fprintf(debug_stream, "\t\t\t<li>DS %p refcnt 0x%x suspend 0x%x data 0x%lx mask 0x%lx flags 0x%x</li>\n",
-						ds, ds->do_ref_cnt, ds->do_suspend_cnt, ds->ds_pending_data, ds->ds_pending_data_mask,
-						ds->ds_atomic_flags);
-				if (ds->do_suspend_cnt == DISPATCH_OBJECT_SUSPEND_LOCK) {
-					dispatch_queue_t dq = ds->do_targetq;
-					fprintf(debug_stream, "\t\t<br>DQ: %p refcnt 0x%x suspend 0x%x label: %s\n", dq, dq->do_ref_cnt, dq->do_suspend_cnt, dq->dq_label);
-				}
-			}
-			fprintf(debug_stream, "\t\t</ul>\n");
-			fprintf(debug_stream, "\t</li>\n");
-		}
-	}
-	fprintf(debug_stream, "</ul>\n</body>\n</html>\n");
-	fflush(debug_stream);
-	fclose(debug_stream);
-}
-
-static void
-_dispatch_kevent_debugger(void *context __attribute__((unused)))
-{
-	union {
-		struct sockaddr_in sa_in;
-		struct sockaddr sa;
-	} sa_u = {
-		.sa_in = {
-			.sin_family = AF_INET,
-			.sin_addr = { htonl(INADDR_LOOPBACK), },
-		},
-	};
-	dispatch_source_t ds;
-	const char *valstr;
-	int val, r, fd, sock_opt = 1;
-	socklen_t slen = sizeof(sa_u);
-
-	if (issetugid()) {
-		return;
-	}
-	valstr = getenv("LIBDISPATCH_DEBUGGER");
-	if (!valstr) {
-		return;
-	}
-	val = atoi(valstr);
-	if (val == 2) {
-		sa_u.sa_in.sin_addr.s_addr = 0;
-	}
-	fd = socket(PF_INET, SOCK_STREAM, 0);
-	if (fd == -1) {
-		(void)dispatch_assume_zero(errno);
-		return;
-	}
-	r = setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (void *)&sock_opt, (socklen_t) sizeof sock_opt);
-	if (r == -1) {
-		(void)dispatch_assume_zero(errno);
-		goto out_bad;
-	}
-#if 0
-	r = fcntl(fd, F_SETFL, O_NONBLOCK);
-	if (r == -1) {
-		(void)dispatch_assume_zero(errno);
-		goto out_bad;
-	}
-#endif
-	r = bind(fd, &sa_u.sa, sizeof(sa_u));
-	if (r == -1) {
-		(void)dispatch_assume_zero(errno);
-		goto out_bad;
-	}
-	r = listen(fd, SOMAXCONN);
-	if (r == -1) {
-		(void)dispatch_assume_zero(errno);
-		goto out_bad;
-	}
-	r = getsockname(fd, &sa_u.sa, &slen);
-	if (r == -1) {
-		(void)dispatch_assume_zero(errno);
-		goto out_bad;
-	}
-	ds = dispatch_source_read_create_f(fd, NULL, &_dispatch_mgr_q, (void *)(long)fd, _dispatch_kevent_debugger2);
-	if (dispatch_assume(ds)) {
-		_dispatch_log("LIBDISPATCH: debug port: %hu", ntohs(sa_u.sa_in.sin_port));
-		return;
-	}
-out_bad:
-	close(fd);
-}
-#endif /* DISPATCH_NO_LEGACY */
-
-void
-_dispatch_source_drain_kevent(struct kevent *ke)
-{
-#ifndef DISPATCH_NO_LEGACY
-	static dispatch_once_t pred;
-#endif
-	dispatch_kevent_t dk = ke->udata;
-	dispatch_source_t dsi;
-
-#ifndef DISPATCH_NO_LEGACY
-	dispatch_once_f(&pred, NULL, _dispatch_kevent_debugger);
-#endif
-
-	dispatch_debug_kevents(ke, 1, __func__);
-
-#if HAVE_MACH
-	if (ke->filter == EVFILT_MACHPORT) {
-		return _dispatch_drain_mach_messages(ke);
-	}
-#endif
-	dispatch_assert(dk);
-
-	if (ke->flags & EV_ONESHOT) {
-		dk->dk_kevent.flags |= EV_ONESHOT;
-	}
-
-	TAILQ_FOREACH(dsi, &dk->dk_sources, ds_list) {
-		_dispatch_source_merge_kevent(dsi, ke);
-	}
-}
-
-static void
-_dispatch_kevent_dispose(dispatch_kevent_t dk)
-{
-	uintptr_t hash;
-
-	switch (dk->dk_kevent.filter) {
-	case DISPATCH_EVFILT_TIMER:
-	case DISPATCH_EVFILT_CUSTOM_ADD:
-	case DISPATCH_EVFILT_CUSTOM_OR:
-		// these sources live on statically allocated lists
-		return;
-#if HAVE_MACH
-	case EVFILT_MACHPORT:
-		_dispatch_kevent_machport_resume(dk, 0, dk->dk_kevent.fflags);
-		break;
-#endif
-	case EVFILT_PROC:
-		if (dk->dk_kevent.flags & EV_ONESHOT) {
-			break;	// implicitly deleted
-		}
-		// fall through
-	default:
-		if (~dk->dk_kevent.flags & EV_DELETE) {
-			dk->dk_kevent.flags |= EV_DELETE;
-			_dispatch_update_kq(&dk->dk_kevent);
-		}
-		break;
-	}
-
-	hash = _dispatch_kevent_hash(dk->dk_kevent.ident,
-				     dk->dk_kevent.filter);
-	TAILQ_REMOVE(&_dispatch_sources[hash], dk, dk_list);
-	free(dk);
-}
-
-void
-_dispatch_kevent_release(dispatch_source_t ds)
-{
-	dispatch_kevent_t dk = ds->ds_dkev;
-	dispatch_source_t dsi;
-	uint32_t del_flags, fflags = 0;
-
-	ds->ds_dkev = NULL;
-
-	TAILQ_REMOVE(&dk->dk_sources, ds, ds_list);
-
-	if (TAILQ_EMPTY(&dk->dk_sources)) {
-		_dispatch_kevent_dispose(dk);
-	} else {
-		TAILQ_FOREACH(dsi, &dk->dk_sources, ds_list) {
-			fflags |= (uint32_t)dsi->ds_pending_data_mask;
-		}
-		del_flags = (uint32_t)ds->ds_pending_data_mask & ~fflags;
-		if (del_flags) {
-			dk->dk_kevent.flags |= EV_ADD;
-			dk->dk_kevent.fflags = fflags;
-			_dispatch_kevent_resume(dk, 0, del_flags);
-		}
-	}
-
-	ds->ds_is_armed = false;
-	ds->ds_needs_rearm = false;	// re-arm is pointless and bad now
-	_dispatch_release(ds);	// the retain is done at creation time
-}
-
-void
-_dispatch_source_merge_kevent(dispatch_source_t ds, const struct kevent *ke)
-{
-	struct kevent fake;
-
-	if ((ds->ds_atomic_flags & DSF_CANCELED) || (ds->do_xref_cnt == 0)) {
-		return;
-	}
-
-	// EVFILT_PROC may fail with ESRCH when the process exists but is a zombie.
-	// We simulate an exit event in this case. <rdar://problem/5067725>
-	if (ke->flags & EV_ERROR) {
-		if (ke->filter == EVFILT_PROC && ke->data == ESRCH) {
-			fake = *ke;
-			fake.flags &= ~EV_ERROR;
-			fake.fflags = NOTE_EXIT;
-			fake.data = 0;
-			ke = &fake;
-		} else {
-			// log the unexpected error
-			(void)dispatch_assume_zero(ke->data);
-			return;
-		}
-	}
-
-	if (ds->ds_is_level) {
-		// ke->data is signed and "negative available data" makes no sense
-		// zero bytes happens when EV_EOF is set
-		// 10A268 does not fail this assert with EVFILT_READ and a 10 GB file
-		dispatch_assert(ke->data >= 0l);
-		ds->ds_pending_data = ~ke->data;
-	} else if (ds->ds_is_adder) {
-		dispatch_atomic_add(&ds->ds_pending_data, ke->data);
-	} else {
-		dispatch_atomic_or(&ds->ds_pending_data, ke->fflags & ds->ds_pending_data_mask);
-	}
-
-	// EV_DISPATCH and EV_ONESHOT sources are no longer armed after delivery
-	if (ds->ds_needs_rearm) {
-		ds->ds_is_armed = false;
-	}
-
-	_dispatch_wakeup(ds);
-}
-
-const struct dispatch_source_vtable_s _dispatch_source_kevent_vtable = {
-	.do_type = DISPATCH_SOURCE_KEVENT_TYPE,
-	.do_kind = "kevent-source",
-	.do_invoke = _dispatch_source_invoke,
-	.do_dispose = _dispatch_source_dispose,
-	.do_probe = _dispatch_source_probe,
-	.do_debug = _dispatch_source_kevent_debug,
-};
-
-void
-dispatch_source_merge_data(dispatch_source_t ds, unsigned long val)
-{	
-	struct kevent kev = {
-		.fflags = (typeof(kev.fflags))val,
-		.data = val,
-	};
-
-	dispatch_assert(ds->ds_dkev->dk_kevent.filter == DISPATCH_EVFILT_CUSTOM_ADD ||
-					ds->ds_dkev->dk_kevent.filter == DISPATCH_EVFILT_CUSTOM_OR);
-
-	_dispatch_source_merge_kevent(ds, &kev);
-}
-
-static bool
-dispatch_source_type_kevent_init(dispatch_source_t ds, dispatch_source_type_t type, uintptr_t handle, unsigned long mask, dispatch_queue_t q)
-{
-	const struct kevent *proto_kev = type->opaque;
-	dispatch_kevent_t dk = NULL;
-
-	switch (proto_kev->filter) {
-	case EVFILT_SIGNAL:
-		if (handle >= NSIG) {
-			return false;
-		}
-		break;
-	case EVFILT_FS:
-	case DISPATCH_EVFILT_CUSTOM_ADD:
-	case DISPATCH_EVFILT_CUSTOM_OR:
-	case DISPATCH_EVFILT_TIMER:
-		if (handle) {
-			return false;
-		}
-		break;
-	default:
-		break;
-	}
-
-	dk = calloc(1ul, sizeof(struct dispatch_kevent_s));
-	if (slowpath(!dk)) {
-		return false;
-	}
-
-	dk->dk_kevent = *proto_kev;
-	dk->dk_kevent.ident = handle;
-	dk->dk_kevent.flags |= EV_ADD|EV_ENABLE;
-	dk->dk_kevent.fflags |= (uint32_t)mask;
-	dk->dk_kevent.udata = dk;
-	TAILQ_INIT(&dk->dk_sources);
-
-	// Dispatch Source
-	ds->ds_ident_hack = dk->dk_kevent.ident;
-	ds->ds_dkev = dk;
-	ds->ds_pending_data_mask = dk->dk_kevent.fflags;
-	if ((EV_DISPATCH|EV_ONESHOT) & proto_kev->flags) {
-		ds->ds_is_level = true;
-		ds->ds_needs_rearm = true;
-	} else if (!(EV_CLEAR & proto_kev->flags)) {
-		// we cheat and use EV_CLEAR to mean a "flag thingy"
-		ds->ds_is_adder = true;
-	}
-	return true;
-}
-
-static bool
-dispatch_source_type_timer_init(dispatch_source_t ds, dispatch_source_type_t type, uintptr_t handle, unsigned long mask, dispatch_queue_t q)
-{
-	if (!dispatch_source_type_kevent_init(ds, type, handle, mask, q)) {
-		return false;
-	}
-	ds->ds_needs_rearm = true;
-	ds->ds_timer.flags = mask;
-	return true;
-}
-
-static const struct kevent _dispatch_source_type_timer_ke = {
-	.filter = DISPATCH_EVFILT_TIMER,
-};
-
-const struct dispatch_source_type_s _dispatch_source_type_timer = {
-	.opaque = (void *)&_dispatch_source_type_timer_ke,
-	.mask = DISPATCH_TIMER_INTERVAL|DISPATCH_TIMER_ONESHOT|DISPATCH_TIMER_ABSOLUTE|DISPATCH_TIMER_WALL_CLOCK,
-	.init = dispatch_source_type_timer_init,
-};
-
-static const struct kevent _dispatch_source_type_read_ke = {
-	.filter = EVFILT_READ,
-	.flags = EV_DISPATCH,
-};
-
-const struct dispatch_source_type_s _dispatch_source_type_read = {
-	.opaque = (void *)&_dispatch_source_type_read_ke,
-	.init = dispatch_source_type_kevent_init,
-};
-
-static const struct kevent _dispatch_source_type_write_ke = {
-	.filter = EVFILT_WRITE,
-	.flags = EV_DISPATCH,
-};
-
-const struct dispatch_source_type_s _dispatch_source_type_write = {
-	.opaque = (void *)&_dispatch_source_type_write_ke,
-	.init = dispatch_source_type_kevent_init,
-};
-
-static const struct kevent _dispatch_source_type_proc_ke = {
-	.filter = EVFILT_PROC,
-	.flags = EV_CLEAR,
-};
-
-const struct dispatch_source_type_s _dispatch_source_type_proc = {
-	.opaque = (void *)&_dispatch_source_type_proc_ke,
-	.mask = NOTE_EXIT|NOTE_FORK|NOTE_EXEC
-#if HAVE_DECL_NOTE_SIGNAL
-	    |NOTE_SIGNAL
-#endif
-#if HAVE_DECL_NOTE_REAP
-	    |NOTE_REAP
-#endif
-	    ,
-	.init = dispatch_source_type_kevent_init,
-};
-
-static const struct kevent _dispatch_source_type_signal_ke = {
-	.filter = EVFILT_SIGNAL,
-};
-
-const struct dispatch_source_type_s _dispatch_source_type_signal = {
-	.opaque = (void *)&_dispatch_source_type_signal_ke,
-	.init = dispatch_source_type_kevent_init,
-};
-
-static const struct kevent _dispatch_source_type_vnode_ke = {
-	.filter = EVFILT_VNODE,
-	.flags = EV_CLEAR,
-};
-
-const struct dispatch_source_type_s _dispatch_source_type_vnode = {
-	.opaque = (void *)&_dispatch_source_type_vnode_ke,
-	.mask = NOTE_DELETE|NOTE_WRITE|NOTE_EXTEND|NOTE_ATTRIB|NOTE_LINK|
-	    NOTE_RENAME
-#if HAVE_DECL_NOTE_REVOKE
-	    |NOTE_REVOKE
-#endif
-#if HAVE_DECL_NOTE_NONE
-	    |NOTE_NONE
-#endif
-	    ,
-	.init = dispatch_source_type_kevent_init,
-};
-
-static const struct kevent _dispatch_source_type_vfs_ke = {
-	.filter = EVFILT_FS,
-	.flags = EV_CLEAR,
-};
-
-const struct dispatch_source_type_s _dispatch_source_type_vfs = {
-	.opaque = (void *)&_dispatch_source_type_vfs_ke,
-	.mask = VQ_NOTRESP|VQ_NEEDAUTH|VQ_LOWDISK|VQ_MOUNT|VQ_UNMOUNT|VQ_DEAD|
-	    VQ_ASSIST|VQ_NOTRESPLOCK
-#if HAVE_DECL_VQ_UPDATE
-	    |VQ_UPDATE
-#endif
-#if HAVE_DECL_VQ_VERYLOWDISK
-	    |VQ_VERYLOWDISK
-#endif
-	    ,
-	.init = dispatch_source_type_kevent_init,
-};
-
-#if HAVE_MACH
-
-static bool
-dispatch_source_type_mach_send_init(dispatch_source_t ds, dispatch_source_type_t type, uintptr_t handle, unsigned long mask, dispatch_queue_t q)
-{
-	static dispatch_once_t pred;
-
-	if (!dispatch_source_type_kevent_init(ds, type, handle, mask, q)) {
-		return false;
-	}
-	ds->ds_is_level = false;
-	dispatch_once_f(&pred, NULL, _dispatch_mach_notify_source_init);
-	return true;
-}
-
-static const struct kevent _dispatch_source_type_mach_send_ke = {
-	.filter = EVFILT_MACHPORT,
-	.flags = EV_DISPATCH,
-	.fflags = DISPATCH_MACHPORT_DEAD,
-};
-
-const struct dispatch_source_type_s _dispatch_source_type_mach_send = {
-	.opaque = (void *)&_dispatch_source_type_mach_send_ke,
-	.mask = DISPATCH_MACH_SEND_DEAD,
-	.init = dispatch_source_type_mach_send_init,
-};
-
-static bool
-dispatch_source_type_mach_recv_init(dispatch_source_t ds, dispatch_source_type_t type, uintptr_t handle, unsigned long mask, dispatch_queue_t q)
-{
-	if (!dispatch_source_type_kevent_init(ds, type, handle, mask, q)) {
-		return false;
-	}
-	ds->ds_is_level = false;
-	return true;
-}
-
-static const struct kevent _dispatch_source_type_mach_recv_ke = {
-	.filter = EVFILT_MACHPORT,
-	.flags = EV_DISPATCH,
-	.fflags = DISPATCH_MACHPORT_RECV,
-};
-
-const struct dispatch_source_type_s _dispatch_source_type_mach_recv = {
-	.opaque = (void *)&_dispatch_source_type_mach_recv_ke,
-	.init = dispatch_source_type_mach_recv_init,
-};
-#endif
-
-static const struct kevent _dispatch_source_type_data_add_ke = {
-	.filter = DISPATCH_EVFILT_CUSTOM_ADD,
-};
-
-const struct dispatch_source_type_s _dispatch_source_type_data_add = {
-	.opaque = (void *)&_dispatch_source_type_data_add_ke,
-	.init = dispatch_source_type_kevent_init,
-};
-
-static const struct kevent _dispatch_source_type_data_or_ke = {
-	.filter = DISPATCH_EVFILT_CUSTOM_OR,
-	.flags = EV_CLEAR,
-	.fflags = ~0,
-};
-
-const struct dispatch_source_type_s _dispatch_source_type_data_or = {
-	.opaque = (void *)&_dispatch_source_type_data_or_ke,
-	.init = dispatch_source_type_kevent_init,
-};
-
-// Updates the ordered list of timers based on next fire date for changes to ds.
-// Should only be called from the context of _dispatch_mgr_q.
-void
-_dispatch_timer_list_update(dispatch_source_t ds)
-{
-	dispatch_source_t dsi = NULL;
-	int idx;
-	
-	dispatch_assert(_dispatch_queue_get_current() == &_dispatch_mgr_q);
-
-	// do not reschedule timers unregistered with _dispatch_kevent_release()
-	if (!ds->ds_dkev) {
-		return;
-	}
-
-	// Ensure the source is on the global kevent lists before it is removed and
-	// readded below.
-	_dispatch_kevent_merge(ds);
-	
-	TAILQ_REMOVE(&ds->ds_dkev->dk_sources, ds, ds_list);
-
-	// change the list if the clock type has changed
-	if (ds->ds_timer.flags & DISPATCH_TIMER_WALL_CLOCK) {
-		idx = DISPATCH_TIMER_INDEX_WALL;
-	} else {
-		idx = DISPATCH_TIMER_INDEX_MACH;
-	}
-	ds->ds_dkev = &_dispatch_kevent_timer[idx];
-
-	if (ds->ds_timer.target) {
-		TAILQ_FOREACH(dsi, &ds->ds_dkev->dk_sources, ds_list) {
-			if (dsi->ds_timer.target == 0 || ds->ds_timer.target < dsi->ds_timer.target) {
-				break;
-			}
-		}
-	}
-	
-	if (dsi) {
-		TAILQ_INSERT_BEFORE(dsi, ds, ds_list);
-	} else {
-		TAILQ_INSERT_TAIL(&ds->ds_dkev->dk_sources, ds, ds_list);
-	}
-}
-
-static void
-_dispatch_run_timers2(unsigned int timer)
-{
-	dispatch_source_t ds;
-	uint64_t now, missed;
-
-	if (timer == DISPATCH_TIMER_INDEX_MACH) {
-		now = _dispatch_absolute_time();
-	} else {
-		now = _dispatch_get_nanoseconds();
-	}
-
-	while ((ds = TAILQ_FIRST(&_dispatch_kevent_timer[timer].dk_sources))) {
-		// We may find timers on the wrong list due to a pending update from
-		// dispatch_source_set_timer. Force an update of the list in that case.
-		if (timer != ds->ds_ident_hack) {
-			_dispatch_timer_list_update(ds);
-			continue;
-		}
-		if (!ds->ds_timer.target) {
-			// no configured timers on the list
-			break;
-		}
-		if (ds->ds_timer.target > now) {
-			// Done running timers for now.
-			break;
-		}
-
-		if (ds->ds_timer.flags & (DISPATCH_TIMER_ONESHOT|DISPATCH_TIMER_ABSOLUTE)) {
-			dispatch_atomic_inc(&ds->ds_pending_data);
-			ds->ds_timer.target = 0;
-		} else {
-			// Calculate number of missed intervals.
-			missed = (now - ds->ds_timer.target) / ds->ds_timer.interval;
-			dispatch_atomic_add(&ds->ds_pending_data, missed + 1);
-			ds->ds_timer.target += (missed + 1) * ds->ds_timer.interval;
-		}
-
-		_dispatch_timer_list_update(ds);
-		_dispatch_wakeup(ds);
-	}
-}
-
-void
-_dispatch_run_timers(void)
-{
-	unsigned int i;
-	for (i = 0; i < DISPATCH_TIMER_COUNT; i++) {
-		_dispatch_run_timers2(i);
-	}
-}
-
-// approx 1 year (60s * 60m * 24h * 365d)
-#define FOREVER_SEC 3153600l
-#define FOREVER_NSEC 31536000000000000ull
-
-struct timespec *
-_dispatch_get_next_timer_fire(struct timespec *howsoon)
-{
-	// <rdar://problem/6459649>
-	// kevent(2) does not allow large timeouts, so we use a long timeout
-	// instead (approximately 1 year).
-	dispatch_source_t ds = NULL;
-	unsigned int timer;
-	uint64_t now, delta_tmp, delta = UINT64_MAX;
-
-	// We are looking for the first unsuspended timer which has its target
-	// time set. Given timers are kept in order, if we hit an timer that's
-	// unset there's no point in continuing down the list.
-	for (timer = 0; timer < DISPATCH_TIMER_COUNT; timer++) {
-		TAILQ_FOREACH(ds, &_dispatch_kevent_timer[timer].dk_sources, ds_list) {
-			if (!ds->ds_timer.target) {
-				break;
-			}
-			if (DISPATCH_OBJECT_SUSPENDED(ds)) {
-				ds->ds_is_armed = false;
-			} else {
-				break;
-			}
-		}
-
-		if (!ds || !ds->ds_timer.target) {
-			continue;
-		}
-				
-		if (ds->ds_timer.flags & DISPATCH_TIMER_WALL_CLOCK) {
-			now = _dispatch_get_nanoseconds();
-		} else {
-			now = _dispatch_absolute_time();
-		}
-		if (ds->ds_timer.target <= now) {
-			howsoon->tv_sec = 0;
-			howsoon->tv_nsec = 0;
-			return howsoon;
-		}
-
-		// the subtraction cannot go negative because the previous "if"
-		// verified that the target is greater than now.
-		delta_tmp = ds->ds_timer.target - now;
-		if (!(ds->ds_timer.flags & DISPATCH_TIMER_WALL_CLOCK)) {
-			delta_tmp = _dispatch_time_mach2nano(delta_tmp);
-		}
-		if (delta_tmp < delta) {
-			delta = delta_tmp;
-		}
-	}
-	if (slowpath(delta > FOREVER_NSEC)) {
-		return NULL;
-	} else {
-		howsoon->tv_sec = (time_t)(delta / NSEC_PER_SEC);
-		howsoon->tv_nsec = (long)(delta % NSEC_PER_SEC);
-	}
-	return howsoon;
-}
-
-#if HAVE_MACH
-static dispatch_source_t _dispatch_mach_notify_source;
-static mach_port_t _dispatch_port_set;
-static mach_port_t _dispatch_event_port;
-
-#define _DISPATCH_IS_POWER_OF_TWO(v)	(!(v & (v - 1)) && v)
-#define _DISPATCH_HASH(x, y)    (_DISPATCH_IS_POWER_OF_TWO(y) ? (MACH_PORT_INDEX(x) & ((y) - 1)) : (MACH_PORT_INDEX(x) % (y)))
-
-#define _DISPATCH_MACHPORT_HASH_SIZE 32
-#define _DISPATCH_MACHPORT_HASH(x)    _DISPATCH_HASH((x), _DISPATCH_MACHPORT_HASH_SIZE)
-
-static void _dispatch_port_set_init(void *);
-static mach_port_t _dispatch_get_port_set(void);
-
-void
-_dispatch_drain_mach_messages(struct kevent *ke)
-{
-	dispatch_source_t dsi;
-	dispatch_kevent_t dk;
-	struct kevent ke2;
-
-	if (!dispatch_assume(ke->data)) {
-		return;
-	}
-	dk = _dispatch_kevent_find(ke->data, EVFILT_MACHPORT);
-	if (!dispatch_assume(dk)) {
-		return;
-	}
-	_dispatch_kevent_machport_disable(dk);	// emulate EV_DISPATCH
-
-	EV_SET(&ke2, ke->data, EVFILT_MACHPORT, EV_ADD|EV_ENABLE|EV_DISPATCH, DISPATCH_MACHPORT_RECV, 0, dk);
-
-	TAILQ_FOREACH(dsi, &dk->dk_sources, ds_list) {
-		_dispatch_source_merge_kevent(dsi, &ke2);
-	}
-}
-
-void
-_dispatch_port_set_init(void *context __attribute__((unused)))
-{
-	struct kevent kev = {
-		.filter = EVFILT_MACHPORT,
-		.flags = EV_ADD,
-	};
-	kern_return_t kr;
-
-	kr = mach_port_allocate(mach_task_self(), MACH_PORT_RIGHT_PORT_SET, &_dispatch_port_set);
-	DISPATCH_VERIFY_MIG(kr);
-	(void)dispatch_assume_zero(kr);
-	kr = mach_port_allocate(mach_task_self(), MACH_PORT_RIGHT_RECEIVE, &_dispatch_event_port);
-	DISPATCH_VERIFY_MIG(kr);
-	(void)dispatch_assume_zero(kr);
-	kr = mach_port_move_member(mach_task_self(), _dispatch_event_port, _dispatch_port_set);
-	DISPATCH_VERIFY_MIG(kr);
-	(void)dispatch_assume_zero(kr);
-
-	kev.ident = _dispatch_port_set;
-
-	_dispatch_update_kq(&kev);
-}
-
-mach_port_t
-_dispatch_get_port_set(void)
-{
-	static dispatch_once_t pred;
-
-	dispatch_once_f(&pred, NULL, _dispatch_port_set_init);
-
-	return _dispatch_port_set;
-}
-
-void
-_dispatch_kevent_machport_resume(dispatch_kevent_t dk, uint32_t new_flags, uint32_t del_flags)
-{
-	mach_port_t previous, port = (mach_port_t)dk->dk_kevent.ident;
-	kern_return_t kr;
-
-	if ((new_flags & DISPATCH_MACHPORT_RECV) || (!new_flags && !del_flags && dk->dk_kevent.fflags & DISPATCH_MACHPORT_RECV)) {
-		_dispatch_kevent_machport_enable(dk);
-	}
-	if (new_flags & DISPATCH_MACHPORT_DEAD) {
-		kr = mach_port_request_notification(mach_task_self(), port, MACH_NOTIFY_DEAD_NAME, 1,
-				_dispatch_event_port, MACH_MSG_TYPE_MAKE_SEND_ONCE, &previous);
-		DISPATCH_VERIFY_MIG(kr);
-
-	
-		switch(kr) {
-			case KERN_INVALID_NAME:
-			case KERN_INVALID_RIGHT:
-				// Supress errors 
-				break;
-			default:
-			// Else, we dont expect any errors from mach. Log any errors if we do
-			if (dispatch_assume_zero(kr)) {
-				// log the error
-			} else if (dispatch_assume_zero(previous)) {
-				// Another subsystem has beat libdispatch to requesting the Mach
-				// dead-name notification on this port. We should technically cache the
-				// previous port and message it when the kernel messages our port. Or
-				// we can just say screw those subsystems and drop the previous port.
-				// They should adopt libdispatch :-P
-				kr = mach_port_deallocate(mach_task_self(), previous);
-				DISPATCH_VERIFY_MIG(kr);
-				(void)dispatch_assume_zero(kr);
-			}
-		}
-	}
-
-	if (del_flags & DISPATCH_MACHPORT_RECV) {
-		_dispatch_kevent_machport_disable(dk);
-	}
-	if (del_flags & DISPATCH_MACHPORT_DEAD) {
-		kr = mach_port_request_notification(mach_task_self(), (mach_port_t)dk->dk_kevent.ident,
-				MACH_NOTIFY_DEAD_NAME, 1, MACH_PORT_NULL, MACH_MSG_TYPE_MAKE_SEND_ONCE, &previous);
-		DISPATCH_VERIFY_MIG(kr);
-
-		switch (kr) {
-			case KERN_INVALID_NAME:
-			case KERN_INVALID_RIGHT:
-			case KERN_INVALID_ARGUMENT:
-				break;
-			default:
-			if (dispatch_assume_zero(kr)) {
-				// log the error
-			} else if (previous) {
-				// the kernel has not consumed the right yet
-				(void)dispatch_assume_zero(_dispatch_send_consume_send_once_right(previous));
-			}
-		}
-	}
-}
-
-void
-_dispatch_kevent_machport_enable(dispatch_kevent_t dk)
-{
-	mach_port_t mp = (mach_port_t)dk->dk_kevent.ident;
-	kern_return_t kr;
-
-	kr = mach_port_move_member(mach_task_self(), mp, _dispatch_get_port_set());
-	DISPATCH_VERIFY_MIG(kr);
-	switch (kr) {
-	case KERN_INVALID_NAME:
-#if DISPATCH_DEBUG
-		_dispatch_log("Corruption: Mach receive right 0x%x destroyed prematurely", mp);
-#endif
-		break;
-	default:
-	 	(void)dispatch_assume_zero(kr);
-	}
-}
-
-void
-_dispatch_kevent_machport_disable(dispatch_kevent_t dk)
-{
-	mach_port_t mp = (mach_port_t)dk->dk_kevent.ident;
-	kern_return_t kr;
-
-	kr = mach_port_move_member(mach_task_self(), mp, 0);
-	DISPATCH_VERIFY_MIG(kr);
-	switch (kr) {
-	case KERN_INVALID_RIGHT:
-	case KERN_INVALID_NAME:
-#if DISPATCH_DEBUG
-		_dispatch_log("Corruption: Mach receive right 0x%x destroyed prematurely", mp);
-#endif
-		break;
-	case 0:
-		break;
-	default:
-		(void)dispatch_assume_zero(kr);
-		break;
-	}
-}
-
-#define _DISPATCH_MIN_MSG_SZ (8ul * 1024ul - MAX_TRAILER_SIZE)
-#ifndef DISPATCH_NO_LEGACY
-dispatch_source_t
-dispatch_source_mig_create(mach_port_t mport, size_t max_msg_size, dispatch_source_attr_t attr,
-	dispatch_queue_t dq, dispatch_mig_callback_t mig_callback)
-{
-	if (max_msg_size < _DISPATCH_MIN_MSG_SZ) {
-		max_msg_size = _DISPATCH_MIN_MSG_SZ;
-	}
-	return dispatch_source_machport_create(mport, DISPATCH_MACHPORT_RECV, attr, dq,
-	^(dispatch_source_t ds) {
-		if (!dispatch_source_get_error(ds, NULL)) {
-			if (dq->dq_width != 1) {
-				dispatch_retain(ds);	// this is a shim -- use the external retain
-				dispatch_async(dq, ^{
-					dispatch_mig_server(ds, max_msg_size, mig_callback);
-					dispatch_release(ds);	// this is a shim -- use the external release
-				});
-			} else {
-				dispatch_mig_server(ds, max_msg_size, mig_callback);
-			}
-		}
-	});	
-}
-#endif /* DISPATCH_NO_LEGACY */
-
-static void
-_dispatch_mach_notify_source2(void *context)
-{
-	dispatch_source_t ds = context;
-	const size_t maxsz = MAX(
-		sizeof(union __RequestUnion___dispatch_send_libdispatch_internal_protocol_subsystem),
-		sizeof(union __ReplyUnion___dispatch_libdispatch_internal_protocol_subsystem));
-
-	dispatch_mig_server(ds, maxsz, libdispatch_internal_protocol_server);
-}
-
-static void
-_dispatch_mach_notify_source_init(void *context __attribute__((unused)))
-{
-	_dispatch_get_port_set();
-
-	_dispatch_mach_notify_source = dispatch_source_create(DISPATCH_SOURCE_TYPE_MACH_RECV, _dispatch_event_port, 0, &_dispatch_mgr_q);
-	dispatch_assert(_dispatch_mach_notify_source);
-	dispatch_set_context(_dispatch_mach_notify_source, _dispatch_mach_notify_source);
-	dispatch_source_set_event_handler_f(_dispatch_mach_notify_source, _dispatch_mach_notify_source2);
-	dispatch_resume(_dispatch_mach_notify_source);
-}
-
-kern_return_t
-_dispatch_mach_notify_port_deleted(mach_port_t notify __attribute__((unused)), mach_port_name_t name)
-{
-	dispatch_source_t dsi;
-	dispatch_kevent_t dk;
-	struct kevent kev;
-
-#if DISPATCH_DEBUG
-	_dispatch_log("Corruption: Mach send/send-once/dead-name right 0x%x deleted prematurely", name);
-#endif
-
-	dk = _dispatch_kevent_find(name, EVFILT_MACHPORT);
-	if (!dk) {
-		goto out;
-	}
-
-	EV_SET(&kev, name, EVFILT_MACHPORT, EV_ADD|EV_ENABLE|EV_DISPATCH|EV_EOF, DISPATCH_MACHPORT_DELETED, 0, dk);
-
-	TAILQ_FOREACH(dsi, &dk->dk_sources, ds_list) {
-		_dispatch_source_merge_kevent(dsi, &kev);
-		// this can never happen again
-		// this must happen after the merge
-		// this may be racy in the future, but we don't provide a 'setter' API for the mask yet
-		dsi->ds_pending_data_mask &= ~DISPATCH_MACHPORT_DELETED;
-	}
-
-	// no more sources have this flag
-	dk->dk_kevent.fflags &= ~DISPATCH_MACHPORT_DELETED;
-
-out:
-	return KERN_SUCCESS;
-}
-
-kern_return_t
-_dispatch_mach_notify_port_destroyed(mach_port_t notify __attribute__((unused)), mach_port_t name)
-{
-	kern_return_t kr;
-	// this function should never be called
-	(void)dispatch_assume_zero(name);
-	kr = mach_port_mod_refs(mach_task_self(), name, MACH_PORT_RIGHT_RECEIVE, -1);
-	DISPATCH_VERIFY_MIG(kr);
-	(void)dispatch_assume_zero(kr);
-	return KERN_SUCCESS;
-}
-
-kern_return_t
-_dispatch_mach_notify_no_senders(mach_port_t notify, mach_port_mscount_t mscnt __attribute__((unused)))
-{
-	// this function should never be called
-	(void)dispatch_assume_zero(notify);
-	return KERN_SUCCESS;
-}
-
-kern_return_t
-_dispatch_mach_notify_send_once(mach_port_t notify __attribute__((unused)))
-{
-	// we only register for dead-name notifications
-	// some code deallocated our send-once right without consuming it
-#if DISPATCH_DEBUG
-	_dispatch_log("Corruption: An app/library deleted a libdispatch dead-name notification");
-#endif
-	return KERN_SUCCESS;
-}
-
-kern_return_t
-_dispatch_mach_notify_dead_name(mach_port_t notify __attribute__((unused)), mach_port_name_t name)
-{
-	dispatch_source_t dsi;
-	dispatch_kevent_t dk;
-	struct kevent kev;
-	kern_return_t kr;
-
-	dk = _dispatch_kevent_find(name, EVFILT_MACHPORT);
-	if (!dk) {
-		goto out;
-	}
-
-	EV_SET(&kev, name, EVFILT_MACHPORT, EV_ADD|EV_ENABLE|EV_DISPATCH|EV_EOF, DISPATCH_MACHPORT_DEAD, 0, dk);
-
-	TAILQ_FOREACH(dsi, &dk->dk_sources, ds_list) {
-		_dispatch_source_merge_kevent(dsi, &kev);
-		// this can never happen again
-		// this must happen after the merge
-		// this may be racy in the future, but we don't provide a 'setter' API for the mask yet
-		dsi->ds_pending_data_mask &= ~DISPATCH_MACHPORT_DEAD;
-	}
-
-	// no more sources have this flag
-	dk->dk_kevent.fflags &= ~DISPATCH_MACHPORT_DEAD;
-
-out:
-	// the act of receiving a dead name notification allocates a dead-name right that must be deallocated
-	kr = mach_port_deallocate(mach_task_self(), name);
-	DISPATCH_VERIFY_MIG(kr);
-	//(void)dispatch_assume_zero(kr);
-
-	return KERN_SUCCESS;
-}
-
-kern_return_t
-_dispatch_wakeup_main_thread(mach_port_t mp __attribute__((unused)))
-{
-	// dummy function just to pop out the main thread out of mach_msg()
-	return 0;
-}
-
-kern_return_t
-_dispatch_consume_send_once_right(mach_port_t mp __attribute__((unused)))
-{
-	// dummy function to consume a send-once right
-	return 0;
-}
-
-mach_msg_return_t
-dispatch_mig_server(dispatch_source_t ds, size_t maxmsgsz, dispatch_mig_callback_t callback)
-{
-	mach_msg_options_t options = MACH_RCV_MSG | MACH_RCV_TIMEOUT
-		| MACH_RCV_TRAILER_ELEMENTS(MACH_RCV_TRAILER_CTX)
-		| MACH_RCV_TRAILER_TYPE(MACH_MSG_TRAILER_FORMAT_0);
-	mach_msg_options_t tmp_options = options;
-	mig_reply_error_t *bufTemp, *bufRequest, *bufReply;
-	mach_msg_return_t kr = 0;
-	unsigned int cnt = 1000;	// do not stall out serial queues
-	int demux_success;
-
-	maxmsgsz += MAX_TRAILER_SIZE;
-
-	// XXX FIXME -- allocate these elsewhere
-	bufRequest = alloca(maxmsgsz);
-	bufReply = alloca(maxmsgsz);
-	bufReply->Head.msgh_size = 0;	// make CLANG happy
-
-	// XXX FIXME -- change this to not starve out the target queue
-	for (;;) {
-		if (DISPATCH_OBJECT_SUSPENDED(ds) || (--cnt == 0)) {
-			options &= ~MACH_RCV_MSG;
-			tmp_options &= ~MACH_RCV_MSG;
-
-			if (!(tmp_options & MACH_SEND_MSG)) {
-				break;
-			}
-		}
-
-		kr = mach_msg(&bufReply->Head, tmp_options, bufReply->Head.msgh_size,
-				(mach_msg_size_t)maxmsgsz, (mach_port_t)ds->ds_ident_hack, 0, 0);
-
-		tmp_options = options;
-
-		if (slowpath(kr)) {
-			switch (kr) {
-			case MACH_SEND_INVALID_DEST:
-			case MACH_SEND_TIMED_OUT:
-				if (bufReply->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX) {
-					mach_msg_destroy(&bufReply->Head);
-				}
-				break;
-			case MACH_RCV_TIMED_OUT:
-			case MACH_RCV_INVALID_NAME:
-				break;
-			default:
-				(void)dispatch_assume_zero(kr);
-				break;
-			}
-			break;
-		}
-
-		if (!(tmp_options & MACH_RCV_MSG)) {
-			break;
-		}
-
-		bufTemp = bufRequest;
-		bufRequest = bufReply;
-		bufReply = bufTemp;
-
-		demux_success = callback(&bufRequest->Head, &bufReply->Head);
-
-		if (!demux_success) {
-			// destroy the request - but not the reply port
-			bufRequest->Head.msgh_remote_port = 0;
-			mach_msg_destroy(&bufRequest->Head);
-		} else if (!(bufReply->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX)) {
-			// if MACH_MSGH_BITS_COMPLEX is _not_ set, then bufReply->RetCode is present
-			if (slowpath(bufReply->RetCode)) {
-				if (bufReply->RetCode == MIG_NO_REPLY) {
-					continue;
-				}
-
-				// destroy the request - but not the reply port
-				bufRequest->Head.msgh_remote_port = 0;
-				mach_msg_destroy(&bufRequest->Head);
-			}
-		}
-
-		if (bufReply->Head.msgh_remote_port) {
-			tmp_options |= MACH_SEND_MSG;
-			if (MACH_MSGH_BITS_REMOTE(bufReply->Head.msgh_bits) != MACH_MSG_TYPE_MOVE_SEND_ONCE) {
-				tmp_options |= MACH_SEND_TIMEOUT;
-			}
-		}
-	}
-
-	return kr;
-}
-#endif /* HAVE_MACH */

Deleted: branches/Lion/src/source_private.h
===================================================================
--- branches/Lion/src/source_private.h	2011-08-18 20:21:48 UTC (rev 200)
+++ branches/Lion/src/source_private.h	2011-08-18 20:37:45 UTC (rev 201)
@@ -1,131 +0,0 @@
-/*
- * Copyright (c) 2008-2009 Apple Inc. All rights reserved.
- *
- * @APPLE_APACHE_LICENSE_HEADER_START@
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * 
- * @APPLE_APACHE_LICENSE_HEADER_END@
- */
-
-/*
- * IMPORTANT: This header file describes INTERNAL interfaces to libdispatch
- * which are subject to change in future releases of Mac OS X. Any applications
- * relying on these interfaces WILL break.
- */
-
-#ifndef __DISPATCH_SOURCE_PRIVATE__
-#define __DISPATCH_SOURCE_PRIVATE__
-
-#ifndef __DISPATCH_INDIRECT__
-#error "Please #include <dispatch/dispatch.h> instead of this file directly."
-#include <dispatch/base.h> // for HeaderDoc
-#endif
-
-/*!
- * @const DISPATCH_SOURCE_TYPE_VFS
- * @discussion Apple-internal dispatch source that monitors for vfs events
- * defined by dispatch_vfs_flags_t.
- * The handle is a process identifier (pid_t).
- */
-#define DISPATCH_SOURCE_TYPE_VFS (&_dispatch_source_type_vfs)
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
-extern const struct dispatch_source_type_s _dispatch_source_type_vfs;
-
-/*!
- * @enum dispatch_source_vfs_flags_t
- *
- * @constant DISPATCH_VFS_NOTRESP
- * Server down.
- *
- * @constant DISPATCH_VFS_NEEDAUTH
- * Server bad auth.
- *
- * @constant DISPATCH_VFS_LOWDISK
- * We're low on space.
- *
- * @constant DISPATCH_VFS_MOUNT
- * New filesystem arrived.
- *
- * @constant DISPATCH_VFS_UNMOUNT
- * Filesystem has left.
- *
- * @constant DISPATCH_VFS_DEAD
- * Filesystem is dead, needs force unmount.
- *
- * @constant DISPATCH_VFS_ASSIST
- * Filesystem needs assistance from external program.
- *
- * @constant DISPATCH_VFS_NOTRESPLOCK
- * Server lockd down.
- *
- * @constant DISPATCH_VFS_UPDATE
- * Filesystem information has changed.
- *
- * @constant DISPATCH_VFS_VERYLOWDISK
- * File system has *very* little disk space left.
- */
-enum {
-	DISPATCH_VFS_NOTRESP = 0x0001,
-	DISPATCH_VFS_NEEDAUTH = 0x0002,
-	DISPATCH_VFS_LOWDISK = 0x0004,
-	DISPATCH_VFS_MOUNT = 0x0008,
-	DISPATCH_VFS_UNMOUNT = 0x0010,
-	DISPATCH_VFS_DEAD = 0x0020,
-	DISPATCH_VFS_ASSIST = 0x0040,
-	DISPATCH_VFS_NOTRESPLOCK = 0x0080,
-	DISPATCH_VFS_UPDATE = 0x0100,
-	DISPATCH_VFS_VERYLOWDISK = 0x0200,
-};
-
-/*!
- * @enum dispatch_source_mach_send_flags_t
- *
- * @constant DISPATCH_MACH_SEND_DELETED
- * The receive right corresponding to the given send right was destroyed.
- */
-enum {
-	DISPATCH_MACH_SEND_DELETED = 0x2,
-};
-
-/*!
- * @enum dispatch_source_proc_flags_t
- *
- * @constant DISPATCH_PROC_REAP
- * The process has been reaped by the parent process via
- * wait*().
- */
-enum {
-	DISPATCH_PROC_REAP = 0x10000000,
-};
-
-__DISPATCH_BEGIN_DECLS
-
-#if HAVE_MACH
-/*!
- * @typedef dispatch_mig_callback_t
- *
- * @abstract
- * The signature of a function that handles Mach message delivery and response.
- */
-typedef boolean_t (*dispatch_mig_callback_t)(mach_msg_header_t *message, mach_msg_header_t *reply);
-
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
-DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
-mach_msg_return_t
-dispatch_mig_server(dispatch_source_t ds, size_t maxmsgsz, dispatch_mig_callback_t callback);
-#endif
-
-__DISPATCH_END_DECLS
-
-#endif
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/libdispatch-changes/attachments/20110818/2a041e06/attachment-0001.html>


More information about the libdispatch-changes mailing list