libdispatch-changes
Threads by month
- ----- 2025 -----
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
October 2010
- 1 participants
- 5 discussions
Revision: 193
http://trac.macosforge.org/projects/libdispatch/changeset/193
Author: kvv(a)apple.com
Date: 2010-10-24 01:36:30 -0700 (Sun, 24 Oct 2010)
Log Message:
-----------
Misc. shims.
Modified Paths:
--------------
trunk/src/os_shims.h
trunk/src/shims/malloc_zone.h
Modified: trunk/src/os_shims.h
===================================================================
--- trunk/src/os_shims.h 2010-10-24 08:25:52 UTC (rev 192)
+++ trunk/src/os_shims.h 2010-10-24 08:36:30 UTC (rev 193)
@@ -46,6 +46,21 @@
#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"
Modified: trunk/src/shims/malloc_zone.h
===================================================================
--- trunk/src/shims/malloc_zone.h 2010-10-24 08:25:52 UTC (rev 192)
+++ trunk/src/shims/malloc_zone.h 2010-10-24 08:36:30 UTC (rev 193)
@@ -68,11 +68,13 @@
return (calloc(num_items, size));
}
+#if !TARGET_OS_WIN32
static inline void *
malloc_zone_realloc(malloc_zone_t *zone, void *ptr, size_t size)
{
return (realloc(ptr, size));
}
+#endif
static inline void
malloc_zone_free(malloc_zone_t *zone, void *ptr)
1
0
Revision: 192
http://trac.macosforge.org/projects/libdispatch/changeset/192
Author: kvv(a)apple.com
Date: 2010-10-24 01:25:52 -0700 (Sun, 24 Oct 2010)
Log Message:
-----------
Support for time and semaphores on Win32.
Modified Paths:
--------------
trunk/src/internal.h
trunk/src/queue.c
trunk/src/semaphore.c
trunk/src/semaphore_internal.h
trunk/src/shims/time.c
trunk/src/shims/time.h
trunk/src/time.c
Modified: trunk/src/internal.h
===================================================================
--- trunk/src/internal.h 2010-10-24 07:29:08 UTC (rev 191)
+++ trunk/src/internal.h 2010-10-24 08:25:52 UTC (rev 192)
@@ -29,6 +29,37 @@
#include "config/config.h"
+#ifdef __APPLE__
+#include <TargetConditionals.h>
+#endif
+
+#if TARGET_OS_WIN32
+// Include Win32 headers early in order to minimize the
+// likelihood of name pollution from dispatch headers.
+
+#ifndef WINVER
+#define WINVER 0x502
+#endif
+
+#ifndef _WIN32_WINNT
+#define _WIN32_WINNT 0x502
+#endif
+
+#ifndef _MSC_VER
+#define _MSC_VER 1400
+#pragma warning(disable:4159)
+#endif
+
+#define WIN32_LEAN_AND_MEAN 1
+#define _CRT_SECURE_NO_DEPRECATE 1
+#define _CRT_SECURE_NO_WARNINGS 1
+
+#define BOOL WINBOOL
+#include <Windows.h>
+#undef BOOL
+
+#endif /* TARGET_OS_WIN32 */
+
#define __DISPATCH_BUILDING_DISPATCH__
#define __DISPATCH_INDIRECT__
@@ -96,6 +127,9 @@
#include <netinet/in.h>
#ifdef __BLOCKS__
+#if TARGET_OS_WIN32
+#define BLOCK_EXPORT extern "C" __declspec(dllexport)
+#endif /* TARGET_OS_WIN32 */
#include <Block_private.h>
#include <Block.h>
#endif /* __BLOCKS__ */
Modified: trunk/src/queue.c
===================================================================
--- trunk/src/queue.c 2010-10-24 07:29:08 UTC (rev 191)
+++ trunk/src/queue.c 2010-10-24 08:25:52 UTC (rev 192)
@@ -1200,6 +1200,10 @@
ret = sem_init(&_dispatch_thread_mediator[i].dsema_sem, 0, 0);
(void)dispatch_assume_zero(ret);
#endif
+#if USE_WIN32_SEM
+ _dispatch_thread_mediator[i].dsema_handle = CreateSemaphore(NULL, 0, LONG_MAX, NULL);
+ dispatch_assume(_dispatch_thread_mediator[i].dsema_handle);
+#endif
#if HAVE_PTHREAD_WORKQUEUES
} else {
dispatch_assume(_dispatch_root_queue_contexts[i].dgq_kworkqueue);
Modified: trunk/src/semaphore.c
===================================================================
--- trunk/src/semaphore.c 2010-10-24 07:29:08 UTC (rev 191)
+++ trunk/src/semaphore.c 2010-10-24 08:25:52 UTC (rev 192)
@@ -56,7 +56,7 @@
{
dispatch_semaphore_t dsema;
- dsema = fastpath(_dispatch_thread_getspecific(dispatch_sema4_key));
+ dsema = (dispatch_semaphore_t)fastpath(_dispatch_thread_getspecific(dispatch_sema4_key));
if (!dsema) {
while (!(dsema = dispatch_semaphore_create(0))) {
sleep(1);
@@ -69,7 +69,7 @@
void
_dispatch_put_thread_semaphore(dispatch_semaphore_t dsema)
{
- dispatch_semaphore_t old_sema = _dispatch_thread_getspecific(dispatch_sema4_key);
+ dispatch_semaphore_t old_sema = (dispatch_semaphore_t)_dispatch_thread_getspecific(dispatch_sema4_key);
_dispatch_thread_setspecific(dispatch_sema4_key, dsema);
if (old_sema) {
dispatch_release(old_sema);
@@ -97,11 +97,11 @@
return NULL;
}
- dsema = calloc(1, sizeof(struct dispatch_semaphore_s));
+ dsema = (dispatch_semaphore_t)calloc(1, sizeof(struct dispatch_semaphore_s));
if (fastpath(dsema)) {
dsema->do_vtable = &_dispatch_semaphore_vtable;
- dsema->do_next = DISPATCH_OBJECT_LISTLESS;
+ dsema->do_next = (dispatch_semaphore_t)DISPATCH_OBJECT_LISTLESS;
dsema->do_ref_cnt = 1;
dsema->do_xref_cnt = 1;
dsema->do_targetq = dispatch_get_global_queue(0, 0);
@@ -148,6 +148,28 @@
}
#endif
+#if USE_WIN32_SEM
+static void
+_dispatch_semaphore_create_handle(HANDLE *s4)
+{
+ HANDLE tmp;
+
+ if (*s4) {
+ return;
+ }
+
+ // lazily allocate the semaphore port
+
+ while (dispatch_assume(tmp = CreateSemaphore(NULL, 0, LONG_MAX, NULL)) == NULL) {
+ sleep(1);
+ }
+
+ if (!dispatch_atomic_cmpxchg(s4, 0, tmp)) {
+ CloseHandle(tmp);
+ }
+}
+#endif /* USE_WIN32_SEM */
+
DISPATCH_NOINLINE
static long
_dispatch_semaphore_wait_slow(dispatch_semaphore_t dsema, dispatch_time_t timeout)
@@ -155,10 +177,11 @@
#if USE_MACH_SEM
mach_timespec_t _timeout;
kern_return_t kr;
- uint64_t nsec;
#endif
#if USE_POSIX_SEM
struct timespec _timeout;
+#endif
+#if USE_POSIX_SEM || USE_WIN32_SEM
int ret;
#endif
long orig;
@@ -176,6 +199,9 @@
#if USE_MACH_SEM
_dispatch_semaphore_create_port(&dsema->dsema_port);
#endif
+#if USE_WIN32_SEM
+ _dispatch_semaphore_create_handle(&dsema->dsema_handle);
+#endif
// From xnu/osfmk/kern/sync_sema.c:
// wait_semaphore->count = -1; /* we don't keep an actual count */
@@ -189,6 +215,7 @@
default:
#if USE_MACH_SEM
do {
+ uint64_t nsec;
// timeout() already calculates relative time left
nsec = _dispatch_timeout(timeout);
_timeout.tv_sec = (typeof(_timeout.tv_sec))(nsec / NSEC_PER_SEC);
@@ -213,6 +240,18 @@
break;
}
#endif
+#if USE_WIN32_SEM
+ do {
+ uint64_t nsec;
+ DWORD msec;
+ nsec = _dispatch_timeout(timeout);
+ msec = (DWORD)(nsec / (uint64_t)1000000);
+ ret = WaitForSingleObject(dsema->dsema_handle, msec);
+ } while (ret != WAIT_OBJECT_0 && ret != WAIT_TIMEOUT);
+ if (ret != WAIT_TIMEOUT) {
+ break;
+ }
+#endif /* USE_WIN32_SEM */
// Fall through and try to undo what the fast path did to dsema->dsema_value
case DISPATCH_TIME_NOW:
while ((orig = dsema->dsema_value) < 0) {
@@ -220,7 +259,7 @@
#if USE_MACH_SEM
return KERN_OPERATION_TIMED_OUT;
#endif
-#if USE_POSIX_SEM
+#if USE_POSIX_SEM || USE_WIN32_SEM
errno = ETIMEDOUT;
return -1;
#endif
@@ -241,6 +280,11 @@
} while (ret != 0);
DISPATCH_SEMAPHORE_VERIFY_RET(ret);
#endif
+#if USE_WIN32_SEM
+ do {
+ ret = WaitForSingleObject(dsema->dsema_handle, INFINITE);
+ } while (ret != WAIT_OBJECT_0);
+#endif
break;
}
@@ -311,7 +355,7 @@
static long
_dispatch_semaphore_signal_slow(dispatch_semaphore_t dsema)
{
-#if USE_POSIX_SEM
+#if USE_POSIX_SEM || USE_WIN32_SEM
int ret;
#endif
#if USE_MACH_SEM
@@ -319,6 +363,9 @@
_dispatch_semaphore_create_port(&dsema->dsema_port);
#endif
+#if USE_WIN32_SEM
+ _dispatch_semaphore_create_handle(&dsema->dsema_handle);
+#endif
// Before dsema_sent_ksignals is incremented we can rely on the reference
// held by the waiter. However, once this value is incremented the waiter
@@ -337,6 +384,10 @@
ret = sem_post(&dsema->dsema_sem);
DISPATCH_SEMAPHORE_VERIFY_RET(ret);
#endif
+#if USE_WIN32_SEM
+ // Signal the semaphore.
+ ret = ReleaseSemaphore(dsema->dsema_handle, 1, NULL);
+#endif
_dispatch_release(dsema);
@@ -391,13 +442,14 @@
long
_dispatch_group_wake(dispatch_semaphore_t dsema)
{
- struct dispatch_sema_notify_s *tmp, *head = dispatch_atomic_xchg(&dsema->dsema_notify_head, NULL);
- long rval = dispatch_atomic_xchg(&dsema->dsema_group_waiters, 0);
- bool do_rel = head;
+ struct dispatch_sema_notify_s *tmp;
+ struct dispatch_sema_notify_s *head = (struct dispatch_sema_notify_s *)dispatch_atomic_xchg(&dsema->dsema_notify_head, NULL);
+ long rval = (long)dispatch_atomic_xchg(&dsema->dsema_group_waiters, 0);
+ bool do_rel = (head != NULL);
#if USE_MACH_SEM
long kr;
#endif
-#if USE_POSIX_SEM
+#if USE_POSIX_SEM || USE_WIN32_SEM
int ret;
#endif
@@ -417,6 +469,11 @@
DISPATCH_SEMAPHORE_VERIFY_RET(ret);
} while (--rval);
#endif
+#if USE_WIN32_SEM
+ // Signal the semaphore.
+ ret = ReleaseSemaphore(dsema->dsema_waiter_handle, 1, NULL);
+ dispatch_assume(ret);
+#endif
}
while (head) {
dispatch_async_f(head->dsn_queue, head->dsn_ctxt, head->dsn_func);
@@ -440,10 +497,11 @@
#if USE_MACH_SEM
mach_timespec_t _timeout;
kern_return_t kr;
- uint64_t nsec;
#endif
#if USE_POSIX_SEM
struct timespec _timeout;
+#endif
+#if USE_POSIX_SEM || USE_WIN32_SEM
int ret;
#endif
long orig;
@@ -456,7 +514,7 @@
// Mach semaphores appear to sometimes spuriously wake up. Therefore,
// we keep a parallel count of the number of times a Mach semaphore is
// signaled (6880961).
- dispatch_atomic_inc(&dsema->dsema_group_waiters);
+ (void)dispatch_atomic_inc(&dsema->dsema_group_waiters);
// check the values again in case we need to wake any threads
if (dsema->dsema_value == dsema->dsema_orig) {
return _dispatch_group_wake(dsema);
@@ -478,6 +536,7 @@
default:
#if USE_MACH_SEM
do {
+ uint64_t nsec;
nsec = _dispatch_timeout(timeout);
_timeout.tv_sec = (typeof(_timeout.tv_sec))(nsec / NSEC_PER_SEC);
_timeout.tv_nsec = (typeof(_timeout.tv_nsec))(nsec % NSEC_PER_SEC);
@@ -500,6 +559,18 @@
break;
}
#endif
+#if USE_WIN32_SEM
+ do {
+ uint64_t nsec;
+ DWORD msec;
+ nsec = _dispatch_timeout(timeout);
+ msec = (DWORD)(nsec / (uint64_t)1000000);
+ ret = WaitForSingleObject(dsema->dsema_waiter_handle, msec);
+ } while (ret != WAIT_OBJECT_0 && ret != WAIT_TIMEOUT);
+ if (ret == WAIT_TIMEOUT) {
+ break;
+ }
+#endif /* USE_WIN32_SEM */
// Fall through and try to undo the earlier change to dsema->dsema_group_waiters
case DISPATCH_TIME_NOW:
while ((orig = dsema->dsema_group_waiters)) {
@@ -507,7 +578,7 @@
#if USE_MACH_SEM
return KERN_OPERATION_TIMED_OUT;
#endif
-#if USE_POSIX_SEM
+#if USE_POSIX_SEM || USE_WIN32_SEM
errno = ETIMEDOUT;
return -1;
#endif
@@ -528,6 +599,12 @@
} while (ret == -1 && errno == EINTR);
DISPATCH_SEMAPHORE_VERIFY_RET(ret);
#endif
+#if USE_WIN32_SEM
+ do {
+ ret = WaitForSingleObject(dsema->dsema_waiter_handle, INFINITE);
+ } while (ret != WAIT_OBJECT_0);
+#endif
+
break;
}
@@ -546,7 +623,7 @@
#if USE_MACH_SEM
return KERN_OPERATION_TIMED_OUT;
#endif
-#if USE_POSIX_SEM
+#if USE_POSIX_SEM || USE_WIN32_SEM
errno = ETIMEDOUT;
return (-1);
#endif
@@ -569,7 +646,7 @@
struct dispatch_sema_notify_s *dsn, *prev;
// FIXME -- this should be updated to use the continuation cache
- while (!(dsn = malloc(sizeof(*dsn)))) {
+ while (!(dsn = (struct dispatch_sema_notify_s *)malloc(sizeof(*dsn)))) {
sleep(1);
}
@@ -579,7 +656,7 @@
dsn->dsn_func = func;
_dispatch_retain(dq);
- prev = dispatch_atomic_xchg(&dsema->dsema_notify_tail, dsn);
+ prev = (struct dispatch_sema_notify_s *)dispatch_atomic_xchg(&dsema->dsema_notify_tail, dsn);
if (fastpath(prev)) {
prev->dsn_next = dsn;
} else {
@@ -619,7 +696,15 @@
ret = sem_destroy(&dsema->dsema_sem);
DISPATCH_SEMAPHORE_VERIFY_RET(ret);
#endif
-
+#if USE_WIN32_SEM
+ if (dsema->dsema_handle) {
+ CloseHandle(dsema->dsema_handle);
+ }
+ if (dsema->dsema_waiter_handle) {
+ CloseHandle(dsema->dsema_waiter_handle);
+ }
+#endif
+
_dispatch_dispose(dsema);
}
@@ -655,7 +740,10 @@
_dispatch_retain(dg);
dispatch_group_enter(dg);
- dc = _dispatch_continuation_alloc_cacheonly() ?: _dispatch_continuation_alloc_from_heap();
+ dc = _dispatch_continuation_alloc_cacheonly();
+ if (dc == NULL) {
+ dc = _dispatch_continuation_alloc_from_heap();
+ }
dc->do_vtable = (void *)(DISPATCH_OBJ_ASYNC_BIT|DISPATCH_OBJ_GROUP_BIT);
dc->dc_func = func;
Modified: trunk/src/semaphore_internal.h
===================================================================
--- trunk/src/semaphore_internal.h 2010-10-24 07:29:08 UTC (rev 191)
+++ trunk/src/semaphore_internal.h 2010-10-24 08:25:52 UTC (rev 192)
@@ -39,13 +39,16 @@
long dsema_value;
long dsema_orig;
size_t dsema_sent_ksignals;
-#if USE_MACH_SEM && USE_POSIX_SEM
+#if (USE_MACH_SEM + USE_POSIX_SEM + USE_WIN32_SEM) > 1
#error "Too many supported semaphore types"
#elif USE_MACH_SEM
semaphore_t dsema_port;
semaphore_t dsema_waiter_port;
#elif USE_POSIX_SEM
sem_t dsema_sem;
+#elif USE_WIN32_SEM
+ HANDLE dsema_handle;
+ HANDLE dsema_waiter_handle;
#else
#error "No supported semaphore type"
#endif
Modified: trunk/src/shims/time.c
===================================================================
--- trunk/src/shims/time.c 2010-10-24 07:29:08 UTC (rev 191)
+++ trunk/src/shims/time.c 2010-10-24 08:25:52 UTC (rev 192)
@@ -20,17 +20,23 @@
#include "internal.h"
-// for architectures that don't always return mach_absolute_time() in nanoseconds
-#if !(defined(__i386__) || defined(__x86_64__) || !defined(HAVE_MACH_ABSOLUTE_TIME))
+#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);
+#endif /* TARGET_OS_WIN32 */
}
#endif
Modified: trunk/src/shims/time.h
===================================================================
--- trunk/src/shims/time.h 2010-10-24 07:29:08 UTC (rev 191)
+++ trunk/src/shims/time.h 2010-10-24 08:25:52 UTC (rev 192)
@@ -31,8 +31,19 @@
#error "Please #include <dispatch/dispatch.h> instead of this file directly."
#endif
-#if defined(__i386__) || defined(__x86_64__) || !defined(HAVE_MACH_ABSOLUTE_TIME)
-// these architectures always return mach_absolute_time() in nanoseconds
+uint64_t _dispatch_get_nanoseconds(void);
+
+#if TARGET_OS_WIN32
+static inline unsigned int
+sleep(unsigned int seconds)
+{
+ Sleep(seconds * 1000); // milliseconds
+ return 0;
+}
+#endif
+
+#if (defined(__i386__) || defined(__x86_64__)) && HAVE_MACH_ABSOLUTE_TIME
+// x86 currently implements mach time in nanoseconds; this is NOT likely to change
#define _dispatch_time_mach2nano(x) (x)
#define _dispatch_time_nano2mach(x) (x)
#else
@@ -84,6 +95,12 @@
{
#if HAVE_MACH_ABSOLUTE_TIME
return mach_absolute_time();
+#elif TARGET_OS_WIN32
+ LARGE_INTEGER now;
+ if (!QueryPerformanceCounter(&now)) {
+ return 0;
+ }
+ return now.QuadPart;
#else
struct timespec ts;
int ret;
Modified: trunk/src/time.c
===================================================================
--- trunk/src/time.c 2010-10-24 07:29:08 UTC (rev 191)
+++ trunk/src/time.c 2010-10-24 08:25:52 UTC (rev 192)
@@ -23,12 +23,22 @@
uint64_t
_dispatch_get_nanoseconds(void)
{
+#if !TARGET_OS_WIN32
struct timeval now;
int r = gettimeofday(&now, NULL);
dispatch_assert_zero(r);
dispatch_assert(sizeof(NSEC_PER_SEC) == 8);
dispatch_assert(sizeof(NSEC_PER_USEC) == 8);
return now.tv_sec * NSEC_PER_SEC + now.tv_usec * NSEC_PER_USEC;
+#else /* TARGET_OS_WIN32 */
+ // FILETIME is 100-nanosecond intervals since January 1, 1601 (UTC).
+ FILETIME ft;
+ ULARGE_INTEGER li;
+ GetSystemTimeAsFileTime(&ft);
+ li.LowPart = ft.dwLowDateTime;
+ li.HighPart = ft.dwHighDateTime;
+ return li.QuadPart * 100ull;
+#endif /* TARGET_OS_WIN32 */
}
dispatch_time_t
1
0
Revision: 191
http://trac.macosforge.org/projects/libdispatch/changeset/191
Author: kvv(a)apple.com
Date: 2010-10-24 00:29:08 -0700 (Sun, 24 Oct 2010)
Log Message:
-----------
Better type casts for strict compilers.
Modified Paths:
--------------
trunk/src/benchmark.c
trunk/src/once.c
Modified: trunk/src/benchmark.c
===================================================================
--- trunk/src/benchmark.c 2010-10-24 07:27:39 UTC (rev 190)
+++ trunk/src/benchmark.c 2010-10-24 07:29:08 UTC (rev 191)
@@ -34,7 +34,7 @@
static void
_dispatch_benchmark_init(void *context)
{
- struct __dispatch_benchmark_data_s *bdata = context;
+ struct __dispatch_benchmark_data_s *bdata = (struct __dispatch_benchmark_data_s *)context;
// try and simulate performance of real benchmark as much as possible
// keep 'f', 'c' and 'cnt' in registers
register void (*f)(void *) = bdata->func;
@@ -75,8 +75,8 @@
uint64_t
dispatch_benchmark(size_t count, void (^block)(void))
{
- struct Block_basic *bb = (void *)block;
- return dispatch_benchmark_f(count, block, (void *)bb->Block_invoke);
+ struct Block_basic *bb = (struct Block_basic *)(void *)block;
+ return dispatch_benchmark_f(count, block, (dispatch_function_t)bb->Block_invoke);
}
#endif
@@ -84,7 +84,7 @@
dispatch_benchmark_f(size_t count, register void *ctxt, register void (*func)(void *))
{
static struct __dispatch_benchmark_data_s bdata = {
- .func = (void *)dummy_function,
+ .func = (dispatch_function_t)dummy_function,
.count = 10000000ul, // ten million
};
static dispatch_once_t pred;
Modified: trunk/src/once.c
===================================================================
--- trunk/src/once.c 2010-10-24 07:27:39 UTC (rev 190)
+++ trunk/src/once.c 2010-10-24 07:29:08 UTC (rev 191)
@@ -27,9 +27,9 @@
void
dispatch_once(dispatch_once_t *val, void (^block)(void))
{
- struct Block_basic *bb = (void *)block;
+ struct Block_basic *bb = (struct Block_basic *)(void *)block;
- dispatch_once_f(val, block, (void *)bb->Block_invoke);
+ dispatch_once_f(val, block, (dispatch_function_t)bb->Block_invoke);
}
#endif
1
0
Revision: 190
http://trac.macosforge.org/projects/libdispatch/changeset/190
Author: kvv(a)apple.com
Date: 2010-10-24 00:27:39 -0700 (Sun, 24 Oct 2010)
Log Message:
-----------
Add DISPATCH_EXPORT to queue SPI.
Modified Paths:
--------------
trunk/src/queue_private.h
Modified: trunk/src/queue_private.h
===================================================================
--- trunk/src/queue_private.h 2010-10-24 07:14:24 UTC (rev 189)
+++ trunk/src/queue_private.h 2010-10-24 07:27:39 UTC (rev 190)
@@ -50,25 +50,25 @@
#ifdef __BLOCKS__
__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
-DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
+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_NONNULL1 DISPATCH_NONNULL3 DISPATCH_NOTHROW
+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_NONNULL_ALL DISPATCH_NOTHROW
+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_NONNULL1 DISPATCH_NONNULL3 DISPATCH_NOTHROW
+DISPATCH_EXPORT DISPATCH_NONNULL1 DISPATCH_NONNULL3 DISPATCH_NOTHROW
void
dispatch_barrier_async_f(dispatch_queue_t dq, void *context, dispatch_function_t work);
@@ -94,7 +94,7 @@
#define DISPATCH_QUEUE_WIDTH_MAX_LOGICAL_CPUS -3
__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
-DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
+DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
void
dispatch_queue_set_width(dispatch_queue_t dq, long width);
1
0
Revision: 189
http://trac.macosforge.org/projects/libdispatch/changeset/189
Author: kvv(a)apple.com
Date: 2010-10-24 00:14:24 -0700 (Sun, 24 Oct 2010)
Log Message:
-----------
Update Availability Macros to reflect iOS 4 support.
Modified Paths:
--------------
trunk/dispatch/benchmark.h
trunk/dispatch/group.h
trunk/dispatch/object.h
trunk/dispatch/once.h
trunk/dispatch/queue.h
trunk/dispatch/semaphore.h
trunk/dispatch/source.h
trunk/dispatch/time.h
trunk/src/legacy.h
trunk/src/private.h
trunk/src/queue_private.h
trunk/src/source_private.h
Modified: trunk/dispatch/benchmark.h
===================================================================
--- trunk/dispatch/benchmark.h 2010-02-18 08:12:34 UTC (rev 188)
+++ trunk/dispatch/benchmark.h 2010-10-24 07:14:24 UTC (rev 189)
@@ -67,13 +67,13 @@
* 3b) Accidental: unrelated and frequently modified data on the same cache-line.
*/
#ifdef __BLOCKS__
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__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_NA)
+__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 *));
Modified: trunk/dispatch/group.h
===================================================================
--- trunk/dispatch/group.h 2010-02-18 08:12:34 UTC (rev 188)
+++ trunk/dispatch/group.h 2010-10-24 07:14:24 UTC (rev 189)
@@ -49,7 +49,7 @@
* @result
* The newly created group, or NULL on failure.
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_WARN_RESULT
dispatch_group_t
dispatch_group_create(void);
@@ -78,7 +78,7 @@
* The block to perform asynchronously.
*/
#ifdef __BLOCKS__
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NONNULL_ALL
void
dispatch_group_async(dispatch_group_t group,
@@ -112,7 +112,7 @@
* parameter passed to this function is the context provided to
* dispatch_group_async_f().
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NONNULL1 DISPATCH_NONNULL2 DISPATCH_NONNULL4
void
dispatch_group_async_f(dispatch_group_t group,
@@ -155,7 +155,7 @@
* Returns zero on success (all blocks associated with the group completed
* within the specified timeout) or non-zero on error (i.e. timed out).
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NONNULL_ALL
long
dispatch_group_wait(dispatch_group_t group, dispatch_time_t timeout);
@@ -191,7 +191,7 @@
* The block to submit when the group completes.
*/
#ifdef __BLOCKS__
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NONNULL_ALL
void
dispatch_group_notify(dispatch_group_t group,
@@ -221,7 +221,7 @@
* parameter passed to this function is the context provided to
* dispatch_group_notify_f().
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NONNULL1 DISPATCH_NONNULL2 DISPATCH_NONNULL4
void
dispatch_group_notify_f(dispatch_group_t group,
@@ -244,7 +244,7 @@
* The dispatch group to update.
* The result of passing NULL in this parameter is undefined.
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NOTHROW DISPATCH_NONNULL_ALL
void
dispatch_group_enter(dispatch_group_t group);
@@ -263,7 +263,7 @@
* The dispatch group to update.
* The result of passing NULL in this parameter is undefined.
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NOTHROW DISPATCH_NONNULL_ALL
void
dispatch_group_leave(dispatch_group_t group);
Modified: trunk/dispatch/object.h
===================================================================
--- trunk/dispatch/object.h 2010-02-18 08:12:34 UTC (rev 188)
+++ trunk/dispatch/object.h 2010-10-24 07:14:24 UTC (rev 189)
@@ -40,12 +40,12 @@
* @param message
* The message to log above and beyond the introspection.
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NONNULL2 DISPATCH_NOTHROW DISPATCH_FORMAT(printf,2,3)
void
dispatch_debug(dispatch_object_t object, const char *message, ...);
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NONNULL2 DISPATCH_NOTHROW DISPATCH_FORMAT(printf,2,0)
void
dispatch_debugv(dispatch_object_t object, const char *message, va_list ap);
@@ -64,7 +64,7 @@
* The object to retain.
* The result of passing NULL in this parameter is undefined.
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
void
dispatch_retain(dispatch_object_t object);
@@ -85,7 +85,7 @@
* The object to release.
* The result of passing NULL in this parameter is undefined.
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
void
dispatch_release(dispatch_object_t object);
@@ -102,7 +102,7 @@
* @result
* The context of the object; may be NULL.
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_PURE DISPATCH_WARN_RESULT DISPATCH_NOTHROW
void *
dispatch_get_context(dispatch_object_t object);
@@ -120,7 +120,7 @@
* The new client defined context for the object. This may be NULL.
*
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NOTHROW //DISPATCH_NONNULL1
void
dispatch_set_context(dispatch_object_t object, void *context);
@@ -146,7 +146,7 @@
* The context parameter passed to the finalizer function is the current
* context of the dispatch object at the time the finalizer call is made.
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NOTHROW //DISPATCH_NONNULL1
void
dispatch_set_finalizer_f(dispatch_object_t object,
@@ -170,7 +170,7 @@
* The object to be suspended.
* The result of passing NULL in this parameter is undefined.
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
void
dispatch_suspend(dispatch_object_t object);
@@ -185,7 +185,7 @@
* The object to be resumed.
* The result of passing NULL in this parameter is undefined.
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
void
dispatch_resume(dispatch_object_t object);
Modified: trunk/dispatch/once.h
===================================================================
--- trunk/dispatch/once.h 2010-02-18 08:12:34 UTC (rev 188)
+++ trunk/dispatch/once.h 2010-10-24 07:14:24 UTC (rev 189)
@@ -55,7 +55,7 @@
* initialized by the block.
*/
#ifdef __BLOCKS__
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
void
dispatch_once(dispatch_once_t *predicate, dispatch_block_t block);
@@ -64,7 +64,7 @@
#endif
#endif
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NONNULL1 DISPATCH_NONNULL3 DISPATCH_NOTHROW
void
dispatch_once_f(dispatch_once_t *predicate, void *context, void (*function)(void *));
Modified: trunk/dispatch/queue.h
===================================================================
--- trunk/dispatch/queue.h 2010-02-18 08:12:34 UTC (rev 188)
+++ trunk/dispatch/queue.h 2010-10-24 07:14:24 UTC (rev 189)
@@ -142,7 +142,7 @@
* The result of passing NULL in this parameter is undefined.
*/
#ifdef __BLOCKS__
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
void
dispatch_async(dispatch_queue_t queue, dispatch_block_t block);
@@ -172,7 +172,7 @@
* dispatch_async_f().
* The result of passing NULL in this parameter is undefined.
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NONNULL1 DISPATCH_NONNULL3 DISPATCH_NOTHROW
void
dispatch_async_f(dispatch_queue_t queue,
@@ -210,7 +210,7 @@
* The result of passing NULL in this parameter is undefined.
*/
#ifdef __BLOCKS__
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
void
dispatch_sync(dispatch_queue_t queue, dispatch_block_t block);
@@ -238,7 +238,7 @@
* dispatch_sync_f().
* The result of passing NULL in this parameter is undefined.
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NONNULL1 DISPATCH_NONNULL3 DISPATCH_NOTHROW
void
dispatch_sync_f(dispatch_queue_t queue,
@@ -271,7 +271,7 @@
* The result of passing NULL in this parameter is undefined.
*/
#ifdef __BLOCKS__
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
void
dispatch_apply(size_t iterations, dispatch_queue_t queue, void (^block)(size_t));
@@ -303,7 +303,7 @@
* current index of iteration.
* The result of passing NULL in this parameter is undefined.
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NONNULL2 DISPATCH_NONNULL4 DISPATCH_NOTHROW
void
dispatch_apply_f(size_t iterations, dispatch_queue_t queue,
@@ -325,7 +325,7 @@
* @result
* Returns the current queue.
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_PURE DISPATCH_WARN_RESULT DISPATCH_NOTHROW
dispatch_queue_t
dispatch_get_current_queue(void);
@@ -345,7 +345,7 @@
* Returns the main queue. This queue is created automatically on behalf of
* the main thread before main() is called.
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT struct dispatch_queue_s _dispatch_main_q;
#define dispatch_get_main_queue() (&_dispatch_main_q)
@@ -396,7 +396,7 @@
* @result
* Returns the requested global queue.
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_PURE DISPATCH_WARN_RESULT DISPATCH_NOTHROW
dispatch_queue_t
dispatch_get_global_queue(long priority, unsigned long flags);
@@ -425,7 +425,7 @@
* @result
* The newly created dispatch queue.
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_MALLOC DISPATCH_WARN_RESULT DISPATCH_NOTHROW
dispatch_queue_t
dispatch_queue_create(const char *label, dispatch_queue_attr_t attr);
@@ -443,7 +443,7 @@
* @result
* The label of the queue. The result may be NULL.
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_PURE DISPATCH_WARN_RESULT DISPATCH_NOTHROW
const char *
dispatch_queue_get_label(dispatch_queue_t queue);
@@ -476,7 +476,7 @@
* previous one, if any, is released.
* The result of passing NULL in this parameter is undefined.
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
void
dispatch_set_target_queue(dispatch_object_t object, dispatch_queue_t queue);
@@ -494,7 +494,7 @@
* Applications that call NSApplicationMain() or CFRunLoopRun() on the
* main thread do not need to call dispatch_main().
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NOTHROW DISPATCH_NORETURN
void
dispatch_main(void);
@@ -522,7 +522,7 @@
* The result of passing NULL in this parameter is undefined.
*/
#ifdef __BLOCKS__
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NONNULL2 DISPATCH_NONNULL3 DISPATCH_NOTHROW
void
dispatch_after(dispatch_time_t when,
@@ -555,7 +555,7 @@
* dispatch_after_f().
* The result of passing NULL in this parameter is undefined.
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NONNULL2 DISPATCH_NONNULL4 DISPATCH_NOTHROW
void
dispatch_after_f(dispatch_time_t when,
Modified: trunk/dispatch/semaphore.h
===================================================================
--- trunk/dispatch/semaphore.h 2010-02-18 08:12:34 UTC (rev 188)
+++ trunk/dispatch/semaphore.h 2010-10-24 07:14:24 UTC (rev 189)
@@ -55,7 +55,7 @@
* @result
* The newly created semaphore, or NULL on failure.
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_MALLOC DISPATCH_NOTHROW
dispatch_semaphore_t
dispatch_semaphore_create(long value);
@@ -80,7 +80,7 @@
* @result
* Returns zero on success, or non-zero if the timeout occurred.
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
long
dispatch_semaphore_wait(dispatch_semaphore_t dsema, dispatch_time_t timeout);
@@ -102,7 +102,7 @@
* This function returns non-zero if a thread is woken. Otherwise, zero is
* returned.
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
long
dispatch_semaphore_signal(dispatch_semaphore_t dsema);
Modified: trunk/dispatch/source.h
===================================================================
--- trunk/dispatch/source.h 2010-02-18 08:12:34 UTC (rev 188)
+++ trunk/dispatch/source.h 2010-10-24 07:14:24 UTC (rev 189)
@@ -72,7 +72,7 @@
* The mask is unused (pass zero for now).
*/
#define DISPATCH_SOURCE_TYPE_DATA_ADD (&_dispatch_source_type_data_add)
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT
const struct dispatch_source_type_s _dispatch_source_type_data_add;
@@ -85,7 +85,7 @@
* dispatch_source_merge_data().
*/
#define DISPATCH_SOURCE_TYPE_DATA_OR (&_dispatch_source_type_data_or)
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT
const struct dispatch_source_type_s _dispatch_source_type_data_or;
@@ -97,7 +97,7 @@
* The mask is a mask of desired events from dispatch_source_mach_send_flags_t.
*/
#define DISPATCH_SOURCE_TYPE_MACH_SEND (&_dispatch_source_type_mach_send)
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT
const struct dispatch_source_type_s _dispatch_source_type_mach_send;
@@ -108,7 +108,7 @@
* The mask is unused (pass zero for now).
*/
#define DISPATCH_SOURCE_TYPE_MACH_RECV (&_dispatch_source_type_mach_recv)
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT
const struct dispatch_source_type_s _dispatch_source_type_mach_recv;
@@ -120,7 +120,7 @@
* The mask is a mask of desired events from dispatch_source_proc_flags_t.
*/
#define DISPATCH_SOURCE_TYPE_PROC (&_dispatch_source_type_proc)
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT
const struct dispatch_source_type_s _dispatch_source_type_proc;
@@ -132,7 +132,7 @@
* The mask is unused (pass zero for now).
*/
#define DISPATCH_SOURCE_TYPE_READ (&_dispatch_source_type_read)
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT
const struct dispatch_source_type_s _dispatch_source_type_read;
@@ -143,7 +143,7 @@
* The mask is unused (pass zero for now).
*/
#define DISPATCH_SOURCE_TYPE_SIGNAL (&_dispatch_source_type_signal)
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT
const struct dispatch_source_type_s _dispatch_source_type_signal;
@@ -155,7 +155,7 @@
* The mask is unused (pass zero for now).
*/
#define DISPATCH_SOURCE_TYPE_TIMER (&_dispatch_source_type_timer)
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT
const struct dispatch_source_type_s _dispatch_source_type_timer;
@@ -167,7 +167,7 @@
* The mask is a mask of desired events from dispatch_source_vnode_flags_t.
*/
#define DISPATCH_SOURCE_TYPE_VNODE (&_dispatch_source_type_vnode)
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT
const struct dispatch_source_type_s _dispatch_source_type_vnode;
@@ -179,7 +179,7 @@
* The mask is unused (pass zero for now).
*/
#define DISPATCH_SOURCE_TYPE_WRITE (&_dispatch_source_type_write)
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT
const struct dispatch_source_type_s _dispatch_source_type_write;
@@ -281,7 +281,7 @@
* @param queue
* The dispatch queue to which the event handler block will be submited.
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_MALLOC DISPATCH_NOTHROW
dispatch_source_t
dispatch_source_create(dispatch_source_type_t type,
@@ -303,7 +303,7 @@
* The event handler block to submit to the source's target queue.
*/
#ifdef __BLOCKS__
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NONNULL1 DISPATCH_NOTHROW
void
dispatch_source_set_event_handler(dispatch_source_t source,
@@ -326,7 +326,7 @@
* context of the dispatch source at the time the handler call is made.
* The result of passing NULL in this parameter is undefined.
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NONNULL1 DISPATCH_NOTHROW
void
dispatch_source_set_event_handler_f(dispatch_source_t source,
@@ -360,7 +360,7 @@
* The cancellation handler block to submit to the source's target queue.
*/
#ifdef __BLOCKS__
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NONNULL1 DISPATCH_NOTHROW
void
dispatch_source_set_cancel_handler(dispatch_source_t source,
@@ -385,7 +385,7 @@
* The context parameter passed to the event handler function is the current
* context of the dispatch source at the time the handler call is made.
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NONNULL1 DISPATCH_NOTHROW
void
dispatch_source_set_cancel_handler_f(dispatch_source_t source,
@@ -413,7 +413,7 @@
* The dispatch source to be canceled.
* The result of passing NULL in this parameter is undefined.
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
void
dispatch_source_cancel(dispatch_source_t source);
@@ -431,7 +431,7 @@
* @result
* Non-zero if canceled and zero if not canceled.
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
long
dispatch_source_testcancel(dispatch_source_t source);
@@ -460,7 +460,7 @@
* DISPATCH_SOURCE_TYPE_VNODE: file descriptor (int)
* DISPATCH_SOURCE_TYPE_WRITE: file descriptor (int)
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_WARN_RESULT DISPATCH_PURE DISPATCH_NOTHROW
uintptr_t
dispatch_source_get_handle(dispatch_source_t source);
@@ -489,7 +489,7 @@
* DISPATCH_SOURCE_TYPE_VNODE: dispatch_source_vnode_flags_t
* DISPATCH_SOURCE_TYPE_WRITE: n/a
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_WARN_RESULT DISPATCH_PURE DISPATCH_NOTHROW
unsigned long
dispatch_source_get_mask(dispatch_source_t source);
@@ -525,7 +525,7 @@
* DISPATCH_SOURCE_TYPE_VNODE: dispatch_source_vnode_flags_t
* DISPATCH_SOURCE_TYPE_WRITE: estimated buffer space available
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_WARN_RESULT DISPATCH_PURE DISPATCH_NOTHROW
unsigned long
dispatch_source_get_data(dispatch_source_t source);
@@ -546,7 +546,7 @@
* as specified by the dispatch source type. A value of zero has no effect
* and will not result in the submission of the event handler block.
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
void
dispatch_source_merge_data(dispatch_source_t source, unsigned long value);
@@ -582,7 +582,7 @@
* a leeway of up to 30 seconds.) Note that some latency is to be expected for
* all timers even when a leeway value of zero is specified.
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
void
dispatch_source_set_timer(dispatch_source_t source,
Modified: trunk/dispatch/time.h
===================================================================
--- trunk/dispatch/time.h 2010-02-18 08:12:34 UTC (rev 188)
+++ trunk/dispatch/time.h 2010-10-24 07:14:24 UTC (rev 189)
@@ -83,7 +83,7 @@
* @result
* A new dispatch_time_t.
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NOTHROW
dispatch_time_t
dispatch_time(dispatch_time_t when, int64_t delta);
@@ -107,7 +107,7 @@
* @result
* A new dispatch_time_t.
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_EXPORT DISPATCH_NOTHROW
dispatch_time_t
dispatch_walltime(const struct timespec *when, int64_t delta);
Modified: trunk/src/legacy.h
===================================================================
--- trunk/src/legacy.h 2010-02-18 08:12:34 UTC (rev 188)
+++ trunk/src/legacy.h 2010-10-24 07:14:24 UTC (rev 189)
@@ -112,7 +112,7 @@
* 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_MALLOC DISPATCH_WARN_RESULT DISPATCH_NOTHROW DISPATCH_DEPRECATED
dispatch_queue_attr_t
dispatch_queue_attr_create(void);
@@ -133,13 +133,13 @@
* high priority and default priority queues are empty.
*/
__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_NONNULL1 DISPATCH_NOTHROW
+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_NONNULL1 DISPATCH_NOTHROW DISPATCH_DEPRECATED
long
dispatch_queue_attr_set_finalizer(
dispatch_queue_attr_t attr,
@@ -147,7 +147,7 @@
#endif
__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_NONNULL1 DISPATCH_NOTHROW
+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);
@@ -182,11 +182,11 @@
* dispatch_apply(), et al.
*/
__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_PURE DISPATCH_WARN_RESULT DISPATCH_NOTHROW
+DISPATCH_PURE DISPATCH_WARN_RESULT DISPATCH_NOTHROW DISPATCH_DEPRECATED
dispatch_queue_t
dispatch_get_concurrent_queue(long priority);
-DISPATCH_PUBLIC_API //DISPATCH_DEPRECATED
+DISPATCH_PUBLIC_API DISPATCH_DEPRECATED
void
dispatch_queue_attr_set_flags(dispatch_queue_attr_t attr, uint64_t flags);
@@ -247,22 +247,22 @@
dispatch_event_get_signals(dispatch_event_t event);
// Use: dispatch_get_context
-DISPATCH_PUBLIC_API DISPATCH_NONNULL_ALL //DISPATCH_DEPRECATED
+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
+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
+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
+DISPATCH_PUBLIC_API DISPATCH_NONNULL1 DISPATCH_DEPRECATED
void
dispatch_source_set_context(dispatch_source_t source, void * context);
@@ -273,19 +273,19 @@
// Use: dispatch_source_cancel
__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
+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_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_NONNULL1 DISPATCH_NOTHROW DISPATCH_DEPRECATED
long
dispatch_source_timer_set_time(dispatch_source_t ds,
uint64_t nanoseconds,
@@ -293,7 +293,7 @@
// Use: dispatch_source_merge_data
__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
+DISPATCH_NONNULL_ALL DISPATCH_NOTHROW DISPATCH_DEPRECATED
void
dispatch_source_trigger(dispatch_source_t source, unsigned long value);
@@ -305,101 +305,101 @@
// Obsolete
__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_NONNULL1 DISPATCH_WARN_RESULT DISPATCH_NOTHROW
+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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_NONNULL1 DISPATCH_NOTHROW DISPATCH_DEPRECATED
long
dispatch_source_attr_set_finalizer(
dispatch_source_attr_t attr,
@@ -408,7 +408,7 @@
// Obsolete
__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_NONNULL1 DISPATCH_NOTHROW
+DISPATCH_NONNULL1 DISPATCH_NOTHROW DISPATCH_DEPRECATED
void
dispatch_source_attr_set_finalizer_f(
dispatch_source_attr_t attr,
@@ -417,7 +417,7 @@
// Obsolete
__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_NONNULL1 DISPATCH_NOTHROW
+DISPATCH_NONNULL1 DISPATCH_NOTHROW DISPATCH_DEPRECATED
void
dispatch_source_attr_set_context(
dispatch_source_attr_t attr,
@@ -426,7 +426,7 @@
#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_MALLOC DISPATCH_NONNULL4 DISPATCH_NONNULL5 DISPATCH_NOTHROW DISPATCH_DEPRECATED
dispatch_source_t
dispatch_source_mig_create(
mach_port_t mport,
@@ -449,7 +449,7 @@
// 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_MALLOC DISPATCH_NONNULL5 DISPATCH_NONNULL6 DISPATCH_NOTHROW DISPATCH_DEPRECATED
dispatch_source_t
dispatch_source_timer_create(
uint64_t flags,
@@ -462,7 +462,7 @@
// 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_MALLOC DISPATCH_NONNULL5 DISPATCH_NONNULL7 DISPATCH_NOTHROW DISPATCH_DEPRECATED
dispatch_source_t
dispatch_source_timer_create_f(
uint64_t flags,
@@ -476,7 +476,7 @@
// Use: dispatch_source_create(DISPATCH_SOURCE_TYPE_SIGNAL, ...)
#ifdef __BLOCKS__
__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_MALLOC DISPATCH_NOTHROW
+DISPATCH_MALLOC DISPATCH_NOTHROW DISPATCH_DEPRECATED
dispatch_source_t
dispatch_source_signal_create(
unsigned long signo,
@@ -487,7 +487,7 @@
// 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_MALLOC DISPATCH_NONNULL3 DISPATCH_NONNULL5 DISPATCH_NOTHROW DISPATCH_DEPRECATED
dispatch_source_t
dispatch_source_signal_create_f(
unsigned long sig,
@@ -499,7 +499,7 @@
// 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_MALLOC DISPATCH_NONNULL3 DISPATCH_NONNULL4 DISPATCH_NOTHROW DISPATCH_DEPRECATED
dispatch_source_t
dispatch_source_read_create(
int descriptor,
@@ -510,7 +510,7 @@
// 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_MALLOC DISPATCH_NONNULL3 DISPATCH_NONNULL5 DISPATCH_NOTHROW DISPATCH_DEPRECATED
dispatch_source_t
dispatch_source_read_create_f(
int descriptor,
@@ -522,7 +522,7 @@
// 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_MALLOC DISPATCH_NONNULL3 DISPATCH_NONNULL4 DISPATCH_NOTHROW DISPATCH_DEPRECATED
dispatch_source_t
dispatch_source_write_create(
int descriptor,
@@ -533,7 +533,7 @@
// 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_MALLOC DISPATCH_NONNULL3 DISPATCH_NONNULL5 DISPATCH_NOTHROW DISPATCH_DEPRECATED
dispatch_source_t
dispatch_source_write_create_f(
int descriptor,
@@ -545,7 +545,7 @@
// 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_MALLOC DISPATCH_NONNULL4 DISPATCH_NONNULL5 DISPATCH_NOTHROW DISPATCH_DEPRECATED
dispatch_source_t
dispatch_source_vnode_create(
int descriptor,
@@ -557,7 +557,7 @@
// 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_MALLOC DISPATCH_NONNULL4 DISPATCH_NONNULL6 DISPATCH_NOTHROW DISPATCH_DEPRECATED
dispatch_source_t
dispatch_source_vnode_create_f(
int descriptor,
@@ -570,7 +570,7 @@
// 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_MALLOC DISPATCH_NONNULL4 DISPATCH_NONNULL5 DISPATCH_NOTHROW DISPATCH_DEPRECATED
dispatch_source_t
dispatch_source_proc_create(
pid_t pid,
@@ -582,7 +582,7 @@
// 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_MALLOC DISPATCH_NONNULL4 DISPATCH_NONNULL6 DISPATCH_NOTHROW DISPATCH_DEPRECATED
dispatch_source_t
dispatch_source_proc_create_f(
pid_t pid,
@@ -602,7 +602,7 @@
#if HAVE_MACH
#ifdef __BLOCKS__
__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_MALLOC DISPATCH_NOTHROW
+DISPATCH_MALLOC DISPATCH_NOTHROW DISPATCH_DEPRECATED
dispatch_source_t
dispatch_source_machport_create(
mach_port_t mport,
@@ -614,7 +614,7 @@
// Use: dispatch_source_create(DISPATCH_SOURCE_TYPE_MACH_RECV, ...)
__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_MALLOC DISPATCH_NOTHROW
+DISPATCH_MALLOC DISPATCH_NOTHROW DISPATCH_DEPRECATED
dispatch_source_t
dispatch_source_machport_create_f(
mach_port_t mport,
@@ -633,7 +633,7 @@
// 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_MALLOC DISPATCH_NONNULL3 DISPATCH_NONNULL4 DISPATCH_NOTHROW DISPATCH_DEPRECATED
dispatch_source_t
dispatch_source_data_create(
unsigned long behavior,
@@ -644,7 +644,7 @@
// 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_MALLOC DISPATCH_NONNULL3 DISPATCH_NONNULL5 DISPATCH_NOTHROW DISPATCH_DEPRECATED
dispatch_source_t
dispatch_source_data_create_f(
unsigned long behavior,
@@ -661,7 +661,7 @@
// 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_MALLOC DISPATCH_NONNULL2 DISPATCH_NONNULL3 DISPATCH_NOTHROW DISPATCH_DEPRECATED
dispatch_source_t
dispatch_source_custom_create(
unsigned long behavior,
@@ -672,7 +672,7 @@
// 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_MALLOC DISPATCH_NONNULL2 DISPATCH_NONNULL4 DISPATCH_NOTHROW DISPATCH_DEPRECATED
dispatch_source_t
dispatch_source_custom_create_f(
unsigned long behavior,
@@ -684,7 +684,7 @@
// 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_MALLOC DISPATCH_NONNULL3 DISPATCH_NONNULL4 DISPATCH_DEPRECATED
dispatch_source_t
dispatch_source_vfs_create(
uint64_t flags,
@@ -695,7 +695,7 @@
// Use: dispatch_source_create(DISPATCH_SOURCE_TYPE_VFS, ...)
__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_MALLOC DISPATCH_NONNULL3 DISPATCH_NONNULL5
+DISPATCH_MALLOC DISPATCH_NONNULL3 DISPATCH_NONNULL5 DISPATCH_DEPRECATED
dispatch_source_t
dispatch_source_vfs_create_f(
uint64_t flags,
@@ -720,6 +720,7 @@
* 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 *));
@@ -749,6 +750,7 @@
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 *));
Modified: trunk/src/private.h
===================================================================
--- trunk/src/private.h 2010-02-18 08:12:34 UTC (rev 188)
+++ trunk/src/private.h 2010-10-24 07:14:24 UTC (rev 189)
@@ -27,6 +27,10 @@
#ifndef __DISPATCH_PRIVATE__
#define __DISPATCH_PRIVATE__
+#ifdef __APPLE__
+#include <TargetConditionals.h>
+#endif
+
#if HAVE_MACH
#include <mach/boolean.h>
#include <mach/mach.h>
@@ -40,6 +44,11 @@
#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>
@@ -69,7 +78,7 @@
__DISPATCH_BEGIN_DECLS
-DISPATCH_NOTHROW
+DISPATCH_EXPORT DISPATCH_NOTHROW
void
#if USE_LIBDISPATCH_INIT_CONSTRUCTOR
libdispatch_init(void) __attribute__ ((constructor));
@@ -81,27 +90,31 @@
#define DISPATCH_COCOA_COMPAT 1
#if DISPATCH_COCOA_COMPAT
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-DISPATCH_NOTHROW
+__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_NA)
-DISPATCH_NOTHROW
+__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_NA)
-extern void (*dispatch_begin_thread_4GC)(void);
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
+DISPATCH_EXPORT
+void (*dispatch_begin_thread_4GC)(void);
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-extern void (*dispatch_end_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_NA)
-extern void *(*_dispatch_begin_NSAutoReleasePool)(void);
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
+DISPATCH_EXPORT
+void *(*_dispatch_begin_NSAutoReleasePool)(void);
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
-extern void (*_dispatch_end_NSAutoReleasePool)(void *);
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
+DISPATCH_EXPORT
+void (*_dispatch_end_NSAutoReleasePool)(void *);
#endif
#endif /* HAVE_MACH */
@@ -117,7 +130,7 @@
/*
* Extract the context pointer from a mach message trailer.
*/
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
void *
dispatch_mach_msg_get_context(mach_msg_header_t *msg);
#endif
Modified: trunk/src/queue_private.h
===================================================================
--- trunk/src/queue_private.h 2010-02-18 08:12:34 UTC (rev 188)
+++ trunk/src/queue_private.h 2010-10-24 07:14:24 UTC (rev 189)
@@ -49,25 +49,25 @@
#define DISPATCH_QUEUE_FLAGS_MASK (DISPATCH_QUEUE_OVERCOMMIT)
#ifdef __BLOCKS__
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
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_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
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_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
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_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_NONNULL1 DISPATCH_NONNULL3 DISPATCH_NOTHROW
void
dispatch_barrier_async_f(dispatch_queue_t dq, void *context, dispatch_function_t work);
@@ -93,14 +93,14 @@
#define DISPATCH_QUEUE_WIDTH_MAX_PHYSICAL_CPUS -2
#define DISPATCH_QUEUE_WIDTH_MAX_LOGICAL_CPUS -3
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
void
dispatch_queue_set_width(dispatch_queue_t dq, long width);
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__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;
Modified: trunk/src/source_private.h
===================================================================
--- trunk/src/source_private.h 2010-02-18 08:12:34 UTC (rev 188)
+++ trunk/src/source_private.h 2010-10-24 07:14:24 UTC (rev 189)
@@ -39,7 +39,7 @@
* The handle is a process identifier (pid_t).
*/
#define DISPATCH_SOURCE_TYPE_VFS (&_dispatch_source_type_vfs)
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_4_0)
extern const struct dispatch_source_type_s _dispatch_source_type_vfs;
/*!
@@ -120,7 +120,7 @@
*/
typedef boolean_t (*dispatch_mig_callback_t)(mach_msg_header_t *message, mach_msg_header_t *reply);
-__OSX_AVAILABLE_STARTING(__MAC_10_6,__IPHONE_NA)
+__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);
1
0