[libdispatch-dev] updated test results on Linux

David Leimbach leimy2k at gmail.com
Thu Jan 6 08:36:26 PST 2011


On Wed, Jan 5, 2011 at 11:06 PM, Mark Heily <mark at heily.com> wrote:

> Hope everyone had a pleasant New Year holiday. I'm happy to report some
> progress with the Linux port of libdispatch. I was able to build a recent
> copy of the trunk and run the test suite without needing to apply a single
> patch to my working copy. There were no compiler warnings during the build
> process. I used the most recent version of libpthread_workqueue installed
> in
> /usr/local. My test system is an Intel Core2 Duo running a 64-bit version
> of
> Ubuntu 11.04.
>

That's outstanding!  Is there some kind of page with a status of what needs
to be done yet?  I'm wondering about the kernel-side scheduling help Mac OS
X is getting.  I see there's some interesting realtime tests that aren't
passing below, and those are of interest.

I'm also curious if anyone is tracking this somewhere (Robert W perhaps?)
for FreeBSD?

Dave


>
> See below for the complete output. There are still some quirks and test
> failures, but for the most part it looks good.
>
> Regards,
>
>  - Mark
>
> $ CC=clang LD=llvm-ld-2.8 CFLAGS="-I/usr/local/include" \
>  LDADD="-L/usr/local/lib" ./configure && make && make check
> checking for gcc... clang
> checking whether the C compiler works... yes
> checking for C compiler default output file name... a.out
> checking for suffix of executables...
> checking whether we are cross compiling... no
> checking for suffix of object files... o
> checking whether we are using the GNU C compiler... yes
> checking whether clang accepts -g... yes
> checking for clang option to accept ISO C89... none needed
> checking how to run the C preprocessor... clang -E
> checking for grep that handles long lines and -e... /bin/grep
> checking for egrep... /bin/grep -E
> checking for ANSI C header files... yes
> checking for sys/types.h... yes
> checking for sys/stat.h... yes
> checking for stdlib.h... yes
> checking for string.h... yes
> checking for memory.h... yes
> checking for strings.h... yes
> checking for inttypes.h... yes
> checking for stdint.h... yes
> checking for unistd.h... yes
> checking minix/config.h usability... no
> checking minix/config.h presence... no
> checking for minix/config.h... no
> checking whether it is safe to define __EXTENSIONS__... yes
> checking whether to enable maintainer-specific portions of Makefiles... no
> checking for System.framework/PrivateHeaders... no
> checking for gcc... (cached) clang
> checking whether we are using the GNU C compiler... (cached) yes
> checking whether clang accepts -g... (cached) yes
> checking for clang option to accept ISO C89... (cached) none needed
> checking for g++... g++
> checking whether we are using the GNU C++ compiler... yes
> checking whether g++ accepts -g... yes
> checking for a BSD-compatible install... /usr/bin/install -c
> checking build system type... x86_64-unknown-linux-gnu
> checking host system type... x86_64-unknown-linux-gnu
> checking for a sed that does not truncate output... /bin/sed
> checking for fgrep... /bin/grep -F
> checking for ld used by clang... llvm-ld-2.8
> checking if the linker (llvm-ld-2.8) is GNU ld... no
> checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
> checking the name lister (/usr/bin/nm -B) interface... BSD nm
> checking whether ln -s works... yes
> checking the maximum length of command line arguments... 1572864
> checking whether the shell understands some XSI constructs... yes
> checking whether the shell understands "+="... yes
> checking for llvm-ld-2.8 option to reload object files... -r
> checking for objdump... objdump
> checking how to recognize dependent libraries... pass_all
> checking for ar... ar
> checking for strip... strip
> checking for ranlib... ranlib
> checking command to parse /usr/bin/nm -B output from clang object... ok
> checking for dlfcn.h... yes
> checking whether we are using the GNU C++ compiler... (cached) yes
> checking whether g++ accepts -g... (cached) yes
> checking how to run the C++ preprocessor... g++ -E
> checking for objdir... .libs
> checking if clang supports -fno-rtti -fno-exceptions... yes
> checking for clang option to produce PIC... -fPIC -DPIC
> checking if clang PIC flag -fPIC -DPIC works... yes
> checking if clang static flag -static works... yes
> checking if clang supports -c -o file.o... yes
> checking if clang supports -c -o file.o... (cached) yes
> checking whether the clang linker (llvm-ld-2.8 -m elf_x86_64) supports
> shared libraries... no
> checking dynamic linker characteristics... GNU/Linux ld.so
> checking how to hardcode library paths into programs... unsupported
> checking whether stripping libraries is possible... yes
> checking if libtool supports shared libraries... no
> checking whether to build shared libraries... no
> checking whether to build static libraries... yes
> checking for ld used by g++... llvm-ld-2.8 -m elf_x86_64
> checking if the linker (llvm-ld-2.8 -m elf_x86_64) is GNU ld... no
> checking whether the g++ linker (llvm-ld-2.8 -m elf_x86_64) supports shared
> libraries... yes
> checking for g++ option to produce PIC... -fPIC -DPIC
> checking if g++ PIC flag -fPIC -DPIC works... yes
> checking if g++ static flag -static works... yes
> checking if g++ supports -c -o file.o... yes
> checking if g++ supports -c -o file.o... (cached) yes
> checking whether the g++ linker (llvm-ld-2.8 -m elf_x86_64) supports shared
> libraries... yes
> checking dynamic linker characteristics... GNU/Linux ld.so
> checking how to hardcode library paths into programs... unsupported
> checking for mig... no
> checking for leaks... no
> checking whether build environment is sane... yes
> checking for a thread-safe mkdir -p... /bin/mkdir -p
> checking for gawk... gawk
> checking whether make sets $(MAKE)... yes
> checking for style of include used by make... GNU
> checking dependency style of clang... gcc3
> checking dependency style of g++... gcc3
> checking for gcc atomic builtins... yes
> checking for library containing clock_gettime... -lrt
> checking for library containing pthread_create... none required
> checking for pkg-config... /usr/bin/pkg-config
> checking pkg-config is at least version 0.9.0... yes
> checking sys/event.h usability... no
> checking sys/event.h presence... no
> checking for sys/event.h... no
> checking for KQUEUE... yes
> checking for ANSI C header files... (cached) yes
> checking TargetConditionals.h usability... no
> checking TargetConditionals.h presence... no
> checking for TargetConditionals.h... no
> checking pthread_machdep.h usability... no
> checking pthread_machdep.h presence... no
> checking for pthread_machdep.h... no
> checking pthread_np.h usability... no
> checking pthread_np.h presence... no
> checking for pthread_np.h... no
> checking malloc/malloc.h usability... no
> checking malloc/malloc.h presence... no
> checking for malloc/malloc.h... no
> checking libkern/OSCrossEndian.h usability... no
> checking libkern/OSCrossEndian.h presence... no
> checking for libkern/OSCrossEndian.h... no
> checking libkern/OSAtomic.h usability... no
> checking libkern/OSAtomic.h presence... no
> checking for libkern/OSAtomic.h... no
> checking sys/sysctl.h usability... yes
> checking sys/sysctl.h presence... yes
> checking for sys/sysctl.h... yes
> checking CoreServices/CoreServices.h usability... no
> checking CoreServices/CoreServices.h presence... no
> checking for CoreServices/CoreServices.h... no
> checking mach/mach.h usability... no
> checking mach/mach.h presence... no
> checking for mach/mach.h... no
> checking pthread_workqueue.h usability... yes
> checking pthread_workqueue.h presence... yes
> checking for pthread_workqueue.h... yes
> checking for pthread_workqueue_init_np in -lpthread_workqueue... yes
> checking whether CLOCK_UPTIME is declared... no
> checking whether CLOCK_MONOTONIC is declared... yes
> checking whether CLOCK_REALTIME is declared... yes
> checking whether EVFILT_LIO is declared... no
> checking whether EVFILT_SESSION is declared... no
> checking whether NOTE_NONE is declared... no
> checking whether NOTE_REAP is declared... no
> checking whether NOTE_REVOKE is declared... no
> checking whether NOTE_SIGNAL is declared... no
> checking whether FD_COPY is declared... no
> checking whether SIGEMT is declared... no
> checking whether VQ_UPDATE is declared... no
> checking whether VQ_VERYLOWDISK is declared... no
> checking whether program_invocation_short_name is declared... yes
> checking for pthread_key_init_np... no
> checking for pthread_main_np... no
> checking for mach_absolute_time... no
> checking for malloc_create_zone... no
> checking for sysconf... yes
> checking for getprogname... no
> checking for getexecname... no
> checking for vasprintf... yes
> checking for asprintf... yes
> checking for arc4random... no
> checking for fgetln... no
> checking whether POSIX_SPAWN_START_SUSPENDED is declared... no
> checking for sem_init... yes
> checking what semaphore type to use... POSIX semaphores
> checking for sys/cdefs.h... yes
> checking for __attribute__((visibility("hidden")))... yes
> checking for __private_extern__... yes
> checking for C Blocks support... -fblocks
> checking whether additional libraries are required for the Blocks
> runtime...
> -lBlocksRuntime
> checking for C++ Blocks support... no
> configure: creating ./config.status
> config.status: creating Makefile
> config.status: creating dispatch/Makefile
> config.status: creating man/Makefile
> config.status: creating src/Makefile
> config.status: creating testing/Makefile
> config.status: creating config/config.h
> config.status: config/config.h is unchanged
> config.status: executing libtool commands
> config.status: executing depfiles commands
> Making all in dispatch
> make[1]: Entering directory `/home/mheily/proj/libdispatch/trunk/dispatch'
> make[1]: Nothing to be done for `all'.
> make[1]: Leaving directory `/home/mheily/proj/libdispatch/trunk/dispatch'
> Making all in man
> make[1]: Entering directory `/home/mheily/proj/libdispatch/trunk/man'
> make[1]: Nothing to be done for `all'.
> make[1]: Leaving directory `/home/mheily/proj/libdispatch/trunk/man'
> Making all in src
> make[1]: Entering directory `/home/mheily/proj/libdispatch/trunk/src'
> make  all-am
> make[2]: Entering directory `/home/mheily/proj/libdispatch/trunk/src'
> /bin/bash ../libtool  --tag=CC   --mode=compile clang -DHAVE_CONFIG_H -I.
> -I../config -I.. -I..    -Wall  -fblocks -I/usr/local/include/kqueue
> -I/usr/local/include -MT libdispatch_la-apply.lo -MD -MP -MF
> .deps/libdispatch_la-apply.Tpo -c -o libdispatch_la-apply.lo `test -f
> 'apply.c' || echo './'`apply.c
> libtool: compile:  clang -DHAVE_CONFIG_H -I. -I../config -I.. -I.. -Wall
> -fblocks -I/usr/local/include/kqueue -I/usr/local/include -MT
> libdispatch_la-apply.lo -MD -MP -MF .deps/libdispatch_la-apply.Tpo -c
> apply.c -o libdispatch_la-apply.o
> mv -f .deps/libdispatch_la-apply.Tpo .deps/libdispatch_la-apply.Plo
> /bin/bash ../libtool  --tag=CC   --mode=compile clang -DHAVE_CONFIG_H -I.
> -I../config -I.. -I..    -Wall  -fblocks -I/usr/local/include/kqueue
> -I/usr/local/include -MT libdispatch_la-benchmark.lo -MD -MP -MF
> .deps/libdispatch_la-benchmark.Tpo -c -o libdispatch_la-benchmark.lo `test
> -f 'benchmark.c' || echo './'`benchmark.c
> libtool: compile:  clang -DHAVE_CONFIG_H -I. -I../config -I.. -I.. -Wall
> -fblocks -I/usr/local/include/kqueue -I/usr/local/include -MT
> libdispatch_la-benchmark.lo -MD -MP -MF .deps/libdispatch_la-benchmark.Tpo
> -c benchmark.c -o libdispatch_la-benchmark.o
> mv -f .deps/libdispatch_la-benchmark.Tpo .deps/libdispatch_la-benchmark.Plo
> /bin/bash ../libtool  --tag=CC   --mode=compile clang -DHAVE_CONFIG_H -I.
> -I../config -I.. -I..    -Wall  -fblocks -I/usr/local/include/kqueue
> -I/usr/local/include -MT libdispatch_la-object.lo -MD -MP -MF
> .deps/libdispatch_la-object.Tpo -c -o libdispatch_la-object.lo `test -f
> 'object.c' || echo './'`object.c
> libtool: compile:  clang -DHAVE_CONFIG_H -I. -I../config -I.. -I.. -Wall
> -fblocks -I/usr/local/include/kqueue -I/usr/local/include -MT
> libdispatch_la-object.lo -MD -MP -MF .deps/libdispatch_la-object.Tpo -c
> object.c -o libdispatch_la-object.o
> mv -f .deps/libdispatch_la-object.Tpo .deps/libdispatch_la-object.Plo
> /bin/bash ../libtool  --tag=CC   --mode=compile clang -DHAVE_CONFIG_H -I.
> -I../config -I.. -I..    -Wall  -fblocks -I/usr/local/include/kqueue
> -I/usr/local/include -MT libdispatch_la-once.lo -MD -MP -MF
> .deps/libdispatch_la-once.Tpo -c -o libdispatch_la-once.lo `test -f
> 'once.c'
> || echo './'`once.c
> libtool: compile:  clang -DHAVE_CONFIG_H -I. -I../config -I.. -I.. -Wall
> -fblocks -I/usr/local/include/kqueue -I/usr/local/include -MT
> libdispatch_la-once.lo -MD -MP -MF .deps/libdispatch_la-once.Tpo -c once.c
> -o libdispatch_la-once.o
> mv -f .deps/libdispatch_la-once.Tpo .deps/libdispatch_la-once.Plo
> /bin/bash ../libtool  --tag=CC   --mode=compile clang -DHAVE_CONFIG_H -I.
> -I../config -I.. -I..    -Wall  -fblocks -I/usr/local/include/kqueue
> -I/usr/local/include -MT libdispatch_la-queue.lo -MD -MP -MF
> .deps/libdispatch_la-queue.Tpo -c -o libdispatch_la-queue.lo `test -f
> 'queue.c' || echo './'`queue.c
> libtool: compile:  clang -DHAVE_CONFIG_H -I. -I../config -I.. -I.. -Wall
> -fblocks -I/usr/local/include/kqueue -I/usr/local/include -MT
> libdispatch_la-queue.lo -MD -MP -MF .deps/libdispatch_la-queue.Tpo -c
> queue.c -o libdispatch_la-queue.o
> mv -f .deps/libdispatch_la-queue.Tpo .deps/libdispatch_la-queue.Plo
> /bin/bash ../libtool  --tag=CC   --mode=compile clang -DHAVE_CONFIG_H -I.
> -I../config -I.. -I..    -Wall  -fblocks -I/usr/local/include/kqueue
> -I/usr/local/include -MT libdispatch_la-queue_kevent.lo -MD -MP -MF
> .deps/libdispatch_la-queue_kevent.Tpo -c -o libdispatch_la-queue_kevent.lo
> `test -f 'queue_kevent.c' || echo './'`queue_kevent.c
> libtool: compile:  clang -DHAVE_CONFIG_H -I. -I../config -I.. -I.. -Wall
> -fblocks -I/usr/local/include/kqueue -I/usr/local/include -MT
> libdispatch_la-queue_kevent.lo -MD -MP -MF
> .deps/libdispatch_la-queue_kevent.Tpo -c queue_kevent.c -o
> libdispatch_la-queue_kevent.o
> mv -f .deps/libdispatch_la-queue_kevent.Tpo
> .deps/libdispatch_la-queue_kevent.Plo
> /bin/bash ../libtool  --tag=CC   --mode=compile clang -DHAVE_CONFIG_H -I.
> -I../config -I.. -I..    -Wall  -fblocks -I/usr/local/include/kqueue
> -I/usr/local/include -MT libdispatch_la-semaphore.lo -MD -MP -MF
> .deps/libdispatch_la-semaphore.Tpo -c -o libdispatch_la-semaphore.lo `test
> -f 'semaphore.c' || echo './'`semaphore.c
> libtool: compile:  clang -DHAVE_CONFIG_H -I. -I../config -I.. -I.. -Wall
> -fblocks -I/usr/local/include/kqueue -I/usr/local/include -MT
> libdispatch_la-semaphore.lo -MD -MP -MF .deps/libdispatch_la-semaphore.Tpo
> -c semaphore.c -o libdispatch_la-semaphore.o
> mv -f .deps/libdispatch_la-semaphore.Tpo .deps/libdispatch_la-semaphore.Plo
> /bin/bash ../libtool  --tag=CC   --mode=compile clang -DHAVE_CONFIG_H -I.
> -I../config -I.. -I..    -Wall  -fblocks -I/usr/local/include/kqueue
> -I/usr/local/include -MT libdispatch_la-source.lo -MD -MP -MF
> .deps/libdispatch_la-source.Tpo -c -o libdispatch_la-source.lo `test -f
> 'source.c' || echo './'`source.c
> libtool: compile:  clang -DHAVE_CONFIG_H -I. -I../config -I.. -I.. -Wall
> -fblocks -I/usr/local/include/kqueue -I/usr/local/include -MT
> libdispatch_la-source.lo -MD -MP -MF .deps/libdispatch_la-source.Tpo -c
> source.c -o libdispatch_la-source.o
> mv -f .deps/libdispatch_la-source.Tpo .deps/libdispatch_la-source.Plo
> /bin/bash ../libtool  --tag=CC   --mode=compile clang -DHAVE_CONFIG_H -I.
> -I../config -I.. -I..    -Wall  -fblocks -I/usr/local/include/kqueue
> -I/usr/local/include -MT libdispatch_la-source_kevent.lo -MD -MP -MF
> .deps/libdispatch_la-source_kevent.Tpo -c -o
> libdispatch_la-source_kevent.lo
> `test -f 'source_kevent.c' || echo './'`source_kevent.c
> libtool: compile:  clang -DHAVE_CONFIG_H -I. -I../config -I.. -I.. -Wall
> -fblocks -I/usr/local/include/kqueue -I/usr/local/include -MT
> libdispatch_la-source_kevent.lo -MD -MP -MF
> .deps/libdispatch_la-source_kevent.Tpo -c source_kevent.c -o
> libdispatch_la-source_kevent.o
> mv -f .deps/libdispatch_la-source_kevent.Tpo
> .deps/libdispatch_la-source_kevent.Plo
> /bin/bash ../libtool  --tag=CC   --mode=compile clang -DHAVE_CONFIG_H -I.
> -I../config -I.. -I..    -Wall  -fblocks -I/usr/local/include/kqueue
> -I/usr/local/include -MT libdispatch_la-time.lo -MD -MP -MF
> .deps/libdispatch_la-time.Tpo -c -o libdispatch_la-time.lo `test -f
> 'time.c'
> || echo './'`time.c
> libtool: compile:  clang -DHAVE_CONFIG_H -I. -I../config -I.. -I.. -Wall
> -fblocks -I/usr/local/include/kqueue -I/usr/local/include -MT
> libdispatch_la-time.lo -MD -MP -MF .deps/libdispatch_la-time.Tpo -c time.c
> -o libdispatch_la-time.o
> mv -f .deps/libdispatch_la-time.Tpo .deps/libdispatch_la-time.Plo
> /bin/bash ../libtool  --tag=CC   --mode=compile clang -DHAVE_CONFIG_H -I.
> -I../config -I.. -I..     -I/usr/local/include -MT mach.lo -MD -MP -MF
> .deps/mach.Tpo -c -o mach.lo `test -f 'shims/mach.c' || echo
> './'`shims/mach.c
> libtool: compile:  clang -DHAVE_CONFIG_H -I. -I../config -I.. -I..
> -I/usr/local/include -MT mach.lo -MD -MP -MF .deps/mach.Tpo -c shims/mach.c
> -o mach.o
> mv -f .deps/mach.Tpo .deps/mach.Plo
> /bin/bash ../libtool  --tag=CC   --mode=compile clang -DHAVE_CONFIG_H -I.
> -I../config -I.. -I..     -I/usr/local/include -MT time.lo -MD -MP -MF
> .deps/time.Tpo -c -o time.lo `test -f 'shims/time.c' || echo
> './'`shims/time.c
> libtool: compile:  clang -DHAVE_CONFIG_H -I. -I../config -I.. -I..
> -I/usr/local/include -MT time.lo -MD -MP -MF .deps/time.Tpo -c shims/time.c
> -o time.o
> mv -f .deps/time.Tpo .deps/time.Plo
> /bin/bash ../libtool  --tag=CC   --mode=compile clang -DHAVE_CONFIG_H -I.
> -I../config -I.. -I..     -I/usr/local/include -MT tsd.lo -MD -MP -MF
> .deps/tsd.Tpo -c -o tsd.lo `test -f 'shims/tsd.c' || echo './'`shims/tsd.c
> libtool: compile:  clang -DHAVE_CONFIG_H -I. -I../config -I.. -I..
> -I/usr/local/include -MT tsd.lo -MD -MP -MF .deps/tsd.Tpo -c shims/tsd.c -o
> tsd.o
> mv -f .deps/tsd.Tpo .deps/tsd.Plo
> /bin/bash ../libtool --tag=CC   --mode=link clang  -I/usr/local/include
> -o
> libshims.la  mach.lo time.lo tsd.lo  -lrt  -lBlocksRuntime
> libtool: link: rm -fr  .libs/libshims.a .libs/libshims.la
> libtool: link: ar cru .libs/libshims.a  mach.o time.o tsd.o
> libtool: link: ranlib .libs/libshims.a
> libtool: link: ( cd ".libs" && rm -f "libshims.la" && ln -s "../
> libshims.la"
> "libshims.la" )
> /bin/bash ../libtool --tag=CC   --mode=link clang -Wall  -fblocks
> -I/usr/local/include/kqueue   -I/usr/local/include   -o libdispatch.la
> -rpath /usr/local/lib libdispatch_la-apply.lo libdispatch_la-benchmark.lo
> libdispatch_la-object.lo libdispatch_la-once.lo libdispatch_la-queue.lo
> libdispatch_la-queue_kevent.lo libdispatch_la-semaphore.lo
> libdispatch_la-source.lo libdispatch_la-source_kevent.lo
> libdispatch_la-time.lo   libshims.la -L/usr/local/lib -lpthread -lrt
> -lkqueue   -lpthread_workqueue -lrt  -lBlocksRuntime
> libtool: link: rm -fr  .libs/libdispatch.a .libs/libdispatch.la
> .libs/libdispatch.lai
> libtool: link: (cd .libs/libdispatch.lax/libshims.a && ar x
> "/home/mheily/proj/libdispatch/trunk/src/./.libs/libshims.a")
> libtool: link: ar cru .libs/libdispatch.a  libdispatch_la-apply.o
> libdispatch_la-benchmark.o libdispatch_la-object.o libdispatch_la-once.o
> libdispatch_la-queue.o libdispatch_la-queue_kevent.o
> libdispatch_la-semaphore.o libdispatch_la-source.o
> libdispatch_la-source_kevent.o libdispatch_la-time.o
> .libs/libdispatch.lax/libshims.a/mach.o
> .libs/libdispatch.lax/libshims.a/time.o
> .libs/libdispatch.lax/libshims.a/tsd.o
> libtool: link: ranlib .libs/libdispatch.a
> libtool: link: rm -fr .libs/libdispatch.lax
> libtool: link: ( cd ".libs" && rm -f "libdispatch.la" && ln -s
> "../libdispatch.la" "libdispatch.la" )
> make[2]: Leaving directory `/home/mheily/proj/libdispatch/trunk/src'
> make[1]: Leaving directory `/home/mheily/proj/libdispatch/trunk/src'
> Making all in testing
> make[1]: Entering directory `/home/mheily/proj/libdispatch/trunk/testing'
> /bin/bash ../libtool --tag=CC   --mode=link clang  -Wall  -fblocks   -o
> dispatch_api dispatch_api.o libtest.la ../src/libdispatch.la -lrt
> -lBlocksRuntime
> libtool: link: clang -Wall -fblocks -o dispatch_api dispatch_api.o
> ./.libs/libtest.a ../src/.libs/libdispatch.a -L/usr/local/lib
> /usr/local/lib/libkqueue.so -lpthread -lpthread_workqueue -lrt
> -lBlocksRuntime
> /bin/bash ../libtool --tag=CC   --mode=link clang -std=c99 -Wall  -fblocks
>  -o dispatch_c99 dispatch_c99-dispatch_c99.o libtest.la
> ../src/libdispatch.la -lrt  -lBlocksRuntime
> libtool: link: clang -std=c99 -Wall -fblocks -o dispatch_c99
> dispatch_c99-dispatch_c99.o  ./.libs/libtest.a ../src/.libs/libdispatch.a
> -L/usr/local/lib /usr/local/lib/libkqueue.so -lpthread -lpthread_workqueue
> -lrt -lBlocksRuntime
> /bin/bash ../libtool --tag=CC   --mode=link clang  -Wall  -fblocks   -o
> dispatch_cascade dispatch_cascade.o libtest.la ../src/libdispatch.la -lrt
> -lBlocksRuntime
> libtool: link: clang -Wall -fblocks -o dispatch_cascade dispatch_cascade.o
> ./.libs/libtest.a ../src/.libs/libdispatch.a -L/usr/local/lib
> /usr/local/lib/libkqueue.so -lpthread -lpthread_workqueue -lrt
> -lBlocksRuntime
> /bin/bash ../libtool --tag=CC   --mode=link clang  -Wall  -fblocks   -o
> dispatch_debug dispatch_debug.o libtest.la ../src/libdispatch.la -lrt
> -lBlocksRuntime
> libtool: link: clang -Wall -fblocks -o dispatch_debug dispatch_debug.o
> ./.libs/libtest.a ../src/.libs/libdispatch.a -L/usr/local/lib
> /usr/local/lib/libkqueue.so -lpthread -lpthread_workqueue -lrt
> -lBlocksRuntime
> /bin/bash ../libtool --tag=CC   --mode=link clang  -Wall  -fblocks   -o
> dispatch_priority dispatch_priority.o libtest.la ../src/libdispatch.la-lrt
>  -lBlocksRuntime
> libtool: link: clang -Wall -fblocks -o dispatch_priority
> dispatch_priority.o
>  ./.libs/libtest.a ../src/.libs/libdispatch.a -L/usr/local/lib
> /usr/local/lib/libkqueue.so -lpthread -lpthread_workqueue -lrt
> -lBlocksRuntime
> /bin/bash ../libtool --tag=CC   --mode=link clang -DUSE_SET_TARGET_QUEUE=1
> -Wall  -fblocks   -o dispatch_priority2
> dispatch_priority2-dispatch_priority.o libtest.la ../src/libdispatch.la-lrt
>  -lBlocksRuntime
> libtool: link: clang -DUSE_SET_TARGET_QUEUE=1 -Wall -fblocks -o
> dispatch_priority2 dispatch_priority2-dispatch_priority.o
>  ./.libs/libtest.a
> ../src/.libs/libdispatch.a -L/usr/local/lib /usr/local/lib/libkqueue.so
> -lpthread -lpthread_workqueue -lrt -lBlocksRuntime
> clang -DHAVE_CONFIG_H -I. -I../config -I.. -I..    -Wall  -fblocks -MT
> dispatch_starfish.o -MD -MP -MF .deps/dispatch_starfish.Tpo -c -o
> dispatch_starfish.o dispatch_starfish.c
> mv -f .deps/dispatch_starfish.Tpo .deps/dispatch_starfish.Po
> /bin/bash ../libtool --tag=CC   --mode=link clang  -Wall  -fblocks   -o
> dispatch_starfish dispatch_starfish.o libtest.la ../src/libdispatch.la-lrt
>  -lBlocksRuntime
> libtool: link: clang -Wall -fblocks -o dispatch_starfish
> dispatch_starfish.o
>  ./.libs/libtest.a ../src/.libs/libdispatch.a -L/usr/local/lib
> /usr/local/lib/libkqueue.so -lpthread -lpthread_workqueue -lrt
> -lBlocksRuntime
> /bin/bash ../libtool --tag=CC   --mode=link clang  -Wall  -fblocks   -o
> queue_finalizer queue_finalizer.o libtest.la ../src/libdispatch.la -lrt
> -lBlocksRuntime
> libtool: link: clang -Wall -fblocks -o queue_finalizer queue_finalizer.o
> ./.libs/libtest.a ../src/.libs/libdispatch.a -L/usr/local/lib
> /usr/local/lib/libkqueue.so -lpthread -lpthread_workqueue -lrt
> -lBlocksRuntime
> /bin/bash ../libtool --tag=CC   --mode=link clang  -Wall  -fblocks   -o
> dispatch_after dispatch_after.o libtest.la ../src/libdispatch.la -lrt
> -lBlocksRuntime
> libtool: link: clang -Wall -fblocks -o dispatch_after dispatch_after.o
> ./.libs/libtest.a ../src/.libs/libdispatch.a -L/usr/local/lib
> /usr/local/lib/libkqueue.so -lpthread -lpthread_workqueue -lrt
> -lBlocksRuntime
> /bin/bash ../libtool --tag=CC   --mode=link clang  -Wall  -fblocks   -o
> dispatch_apply dispatch_apply.o libtest.la ../src/libdispatch.la -lrt
> -lBlocksRuntime
> libtool: link: clang -Wall -fblocks -o dispatch_apply dispatch_apply.o
> ./.libs/libtest.a ../src/.libs/libdispatch.a -L/usr/local/lib
> /usr/local/lib/libkqueue.so -lpthread -lpthread_workqueue -lrt
> -lBlocksRuntime
> /bin/bash ../libtool --tag=CC   --mode=link clang  -Wall  -fblocks   -o
> dispatch_drift dispatch_drift.o libtest.la ../src/libdispatch.la -lrt
> -lBlocksRuntime
> libtool: link: clang -Wall -fblocks -o dispatch_drift dispatch_drift.o
> ./.libs/libtest.a ../src/.libs/libdispatch.a -L/usr/local/lib
> /usr/local/lib/libkqueue.so -lpthread -lpthread_workqueue -lrt
> -lBlocksRuntime
> /bin/bash ../libtool --tag=CC   --mode=link clang  -Wall  -fblocks   -o
> dispatch_group dispatch_group.o libtest.la ../src/libdispatch.la -lrt
> -lBlocksRuntime
> libtool: link: clang -Wall -fblocks -o dispatch_group dispatch_group.o
> ./.libs/libtest.a ../src/.libs/libdispatch.a -L/usr/local/lib
> /usr/local/lib/libkqueue.so -lpthread -lpthread_workqueue -lrt
> -lBlocksRuntime
> /bin/bash ../libtool --tag=CC   --mode=link clang  -Wall  -fblocks   -o
> dispatch_pingpong dispatch_pingpong.o libtest.la ../src/libdispatch.la-lrt
>  -lBlocksRuntime
> libtool: link: clang -Wall -fblocks -o dispatch_pingpong
> dispatch_pingpong.o
>  ./.libs/libtest.a ../src/.libs/libdispatch.a -L/usr/local/lib
> /usr/local/lib/libkqueue.so -lpthread -lpthread_workqueue -lrt
> -lBlocksRuntime
> /bin/bash ../libtool --tag=CC   --mode=link clang  -Wall  -fblocks   -o
> dispatch_read dispatch_read.o libtest.la ../src/libdispatch.la -lrt
> -lBlocksRuntime
> libtool: link: clang -Wall -fblocks -o dispatch_read dispatch_read.o
> ./.libs/libtest.a ../src/.libs/libdispatch.a -L/usr/local/lib
> /usr/local/lib/libkqueue.so -lpthread -lpthread_workqueue -lrt
> -lBlocksRuntime
> /bin/bash ../libtool --tag=CC   --mode=link clang  -Wall  -fblocks   -o
> dispatch_readsync dispatch_readsync.o libtest.la ../src/libdispatch.la-lrt
>  -lBlocksRuntime
> libtool: link: clang -Wall -fblocks -o dispatch_readsync
> dispatch_readsync.o
>  ./.libs/libtest.a ../src/.libs/libdispatch.a -L/usr/local/lib
> /usr/local/lib/libkqueue.so -lpthread -lpthread_workqueue -lrt
> -lBlocksRuntime
> /bin/bash ../libtool --tag=CC   --mode=link clang  -Wall  -fblocks   -o
> dispatch_sema dispatch_sema.o libtest.la ../src/libdispatch.la -lrt
> -lBlocksRuntime
> libtool: link: clang -Wall -fblocks -o dispatch_sema dispatch_sema.o
> ./.libs/libtest.a ../src/.libs/libdispatch.a -L/usr/local/lib
> /usr/local/lib/libkqueue.so -lpthread -lpthread_workqueue -lrt
> -lBlocksRuntime
> /bin/bash ../libtool --tag=CC   --mode=link clang  -Wall  -fblocks   -o
> dispatch_timer_bit31 dispatch_timer_bit31.o libtest.la ../src/
> libdispatch.la
> -lrt  -lBlocksRuntime
> libtool: link: clang -Wall -fblocks -o dispatch_timer_bit31
> dispatch_timer_bit31.o  ./.libs/libtest.a ../src/.libs/libdispatch.a
> -L/usr/local/lib /usr/local/lib/libkqueue.so -lpthread -lpthread_workqueue
> -lrt -lBlocksRuntime
> /bin/bash ../libtool --tag=CC   --mode=link clang  -Wall  -fblocks   -o
> dispatch_timer_bit63 dispatch_timer_bit63.o libtest.la ../src/
> libdispatch.la
> -lrt  -lBlocksRuntime
> libtool: link: clang -Wall -fblocks -o dispatch_timer_bit63
> dispatch_timer_bit63.o  ./.libs/libtest.a ../src/.libs/libdispatch.a
> -L/usr/local/lib /usr/local/lib/libkqueue.so -lpthread -lpthread_workqueue
> -lrt -lBlocksRuntime
> /bin/bash ../libtool --tag=CC   --mode=link clang  -Wall  -fblocks   -o
> summarize summarize.o libtest.la ../src/libdispatch.la -lrt
>  -lBlocksRuntime
> libtool: link: clang -Wall -fblocks -o summarize summarize.o
> ./.libs/libtest.a ../src/.libs/libdispatch.a -L/usr/local/lib
> /usr/local/lib/libkqueue.so -lpthread -lpthread_workqueue -lrt
> -lBlocksRuntime
> make[1]: Leaving directory `/home/mheily/proj/libdispatch/trunk/testing'
> make[1]: Entering directory `/home/mheily/proj/libdispatch/trunk'
> make[1]: Nothing to be done for `all-am'.
> make[1]: Leaving directory `/home/mheily/proj/libdispatch/trunk'
> Making check in dispatch
> make[1]: Entering directory `/home/mheily/proj/libdispatch/trunk/dispatch'
> make[1]: Nothing to be done for `check'.
> make[1]: Leaving directory `/home/mheily/proj/libdispatch/trunk/dispatch'
> Making check in man
> make[1]: Entering directory `/home/mheily/proj/libdispatch/trunk/man'
> make[1]: Nothing to be done for `check'.
> make[1]: Leaving directory `/home/mheily/proj/libdispatch/trunk/man'
> Making check in src
> make[1]: Entering directory `/home/mheily/proj/libdispatch/trunk/src'
> make  check-am
> make[2]: Entering directory `/home/mheily/proj/libdispatch/trunk/src'
> make[2]: Nothing to be done for `check-am'.
> make[2]: Leaving directory `/home/mheily/proj/libdispatch/trunk/src'
> make[1]: Leaving directory `/home/mheily/proj/libdispatch/trunk/src'
> Making check in testing
> make[1]: Entering directory `/home/mheily/proj/libdispatch/trunk/testing'
> make  check-TESTS
> make[2]: Entering directory `/home/mheily/proj/libdispatch/trunk/testing'
>
> ==================================================
> [TEST] Dispatch (Public) API
> [PID] 22489
> ==================================================
>
>        Actual: 0x60e930
>        Expected: 0x60e930
> [PASS] dispatch_get_main_queue
> PASS: dispatch_api
>
> ==================================================
> [TEST] Dispatch C99
> [PID] 22494
> ==================================================
>
>        Actual: 0x60e930
>        Expected: 0x60e930
> [PASS] dispatch_get_main_queue
> PASS: dispatch_c99
>
> ==================================================
> [TEST] Dispatch Cascade
> [PID] 22499
> ==================================================
>
> maxcount = 4589
>
>                   *
>                   *
>                   *
>                   *
>                   *
>                   **
>                   **
>                   **
>                   **
>                   **
>                   **
>                   **
>                   **
>                   **
>                   **
>                   **
>                   ****
>                   **** *
>                   **** *
> PASS: dispatch_cascade
>
> ==================================================
> [TEST] Dispatch Debug
> [PID] 22505
> ==================================================
>
> PASS: dispatch_debug
>
> ==================================================
> [TEST] Dispatch Priority
> [PID] 22508
> ==================================================
>
> LOW: 0
>
> DEFAULT: 64
> ****************************************
> HIGH: 128
>
> ********************************************************************************
>        Actual: 192
>        Expected: 192
> [PASS] blocks completed
>        Actual: 0
>        Expected: <128
> [PASS] high priority precedence
> PASS: dispatch_priority
>
> ==================================================
> [TEST] Dispatch Priority (Set Target Queue)
> [PID] 22523
> ==================================================
>
>        Actual: 0x24a0010
>        Expected: 0x24a0010
> [PASS] q[i]
>        Actual: 0x24a03f0
>        Expected: 0x24a03f0
> [PASS] q[i]
>        Actual: 0x24a04f0
>        Expected: 0x24a04f0
> [PASS] q[i]
> LOW: 55
> ***********************************
> DEFAULT: 68
> *******************************************
> HIGH: 69
> ********************************************
>        Actual: 192
>        Expected: 192
> [PASS] blocks completed
>        Actual: 55
>        Expected: <69
> [PASS] high priority precedence
> PASS: dispatch_priority2
>
> ==================================================
> [TEST] Dispatch Starfish
> [PID] 22563
> ==================================================
>
> lap: 10
> count: 1000
> delta: 253154404 ns
> math: 126.450751 ns / lap
>        Actual: 126
>        Expected: <1000
> [PASS] Latency
> lap: 9
> count: 1000
> delta: 244419153 ns
> math: 122.087489 ns / lap
>        Actual: 122
>        Expected: <1000
> [PASS] Latency
> lap: 8
> count: 1000
> delta: 242866543 ns
> math: 121.311960 ns / lap
>        Actual: 121
>        Expected: <1000
> [PASS] Latency
> lap: 7
> count: 1000
> delta: 230088962 ns
> math: 114.929551 ns / lap
>        Actual: 114
>        Expected: <1000
> [PASS] Latency
> lap: 6
> count: 1000
> delta: 227835408 ns
> math: 113.803900 ns / lap
>        Actual: 113
>        Expected: <1000
> [PASS] Latency
> lap: 5
> count: 1000
> delta: 229035669 ns
> math: 114.403431 ns / lap
>        Actual: 114
>        Expected: <1000
> [PASS] Latency
> lap: 4
> count: 1000
> delta: 241895838 ns
> math: 120.827092 ns / lap
>        Actual: 120
>        Expected: <1000
> [PASS] Latency
> lap: 3
> count: 1000
> delta: 236407153 ns
> math: 118.085491 ns / lap
>        Actual: 118
>        Expected: <1000
> [PASS] Latency
> lap: 2
> count: 1000
> delta: 243509736 ns
> math: 121.633235 ns / lap
>        Actual: 121
>        Expected: <1000
> [PASS] Latency
> lap: 1
> count: 1000
> delta: 304179905 ns
> math: 151.938014 ns / lap
>        Actual: 151
>        Expected: <1000
> [PASS] Latency
> PASS: dispatch_starfish
>
> ==================================================
> [TEST] Dispatch Queue Finalizer
> [PID] 22571
> ==================================================
>
>        Actual: 0x169c010
>        Expected: 0x169c010
> [PASS] dispatch_queue_new
>        Actual: 0x408682dccb5c13d
>        Expected: 0x408682dccb5c13d
> [PASS] finalizer ran
> PASS: queue_finalizer
>
> ==================================================
> [TEST] Dispatch After
> [PID] 22577
> ==================================================
>
>        Actual: 0
>        Expected: <2500714199
> [PASS] can't finish faster than 5.5s
>        Actual: 0
>        Expected: <-1500713421
> [FAIL] must finish faster than  6.5s (dispatch_after.c:54)
>        dispatch_after.c:54
>        Actual: 0
>        Expected: <1500193540
> [PASS] can't finish faster than 1.5s
>        Actual: 0
>        Expected: <-500193186
> [FAIL] must finish faster than  2.5s (dispatch_after.c:62)
>        dispatch_after.c:62
>        Actual: 0
>        Expected: <12619
> [PASS] can't finish faster than 0s
>        Actual: 0
>        Expected: <499987633
> [PASS] must finish faster than .5s
> PASS: dispatch_after
>
> ==================================================
> [TEST] Dispatch Apply
> [PID] 22586
> ==================================================
>
>        Actual: 0x60f6b0
>        Expected: 0x60f6b0
> [PASS] dispatch_get_concurrent_queue
>        Actual: 32
>        Expected: 32
> [PASS] count
> PASS: dispatch_apply
>
> ==================================================
> [TEST] Timer drift test
> [PID] 22592
> ==================================================
>
>        Actual: 0xe57010
>        Expected: 0xe57010
> [PASS] DISPATCH_SOURCE_TYPE_TIMER
>  20: jitter 0.000000, drift 0.000000
>  21: jitter 1.900662, drift 1.900662
>  22: jitter 1.900660, drift -0.000002
>  23: jitter 1.900664, drift 0.000004
>  24: jitter 1.900660, drift -0.000004
>  25: jitter 1.900664, drift 0.000004
>  26: jitter 1.900662, drift -0.000002
>  27: jitter 1.900662, drift -0.000000
>  28: jitter 1.900663, drift 0.000001
>  29: jitter 1.900666, drift 0.000003
>  30: jitter 1.900664, drift -0.000002
>  50: jitter -0.000251, drift -1.900915
>  51: jitter 1.900664, drift 1.900915
>  52: jitter 1.900662, drift -0.000002
>  53: jitter 1.900665, drift 0.000003
>  54: jitter 1.900662, drift -0.000003
>  55: jitter 1.900664, drift 0.000002
>  56: jitter 1.900666, drift 0.000002
>  57: jitter 1.900663, drift -0.000003
>  58: jitter 1.900667, drift 0.000004
>  59: jitter 1.900665, drift -0.000002
>  60: jitter 1.900663, drift -0.000002
>  80: jitter -0.000496, drift -1.901159
>  81: jitter 1.900664, drift 1.901160
>  82: jitter 1.900662, drift -0.000002
>  83: jitter 1.900661, drift -0.000001
>  84: jitter 1.900639, drift -0.000022
>  85: jitter 1.900662, drift 0.000023
>  86: jitter 1.900585, drift -0.000077
>  87: jitter 1.900666, drift 0.000081
>  88: jitter 1.900663, drift -0.000003
>  89: jitter 1.900664, drift 0.000001
>  90: jitter 1.900664, drift 0.000000
>  110: jitter -0.000741, drift -1.901405
>  111: jitter 1.900660, drift 1.901401
>  112: jitter 1.900659, drift -0.000001
>  113: jitter 1.900663, drift 0.000004
>  114: jitter 1.900660, drift -0.000003
>  115: jitter 1.900663, drift 0.000003
>  116: jitter 1.900667, drift 0.000004
>  117: jitter 1.900664, drift -0.000003
>  118: jitter 1.900664, drift 0.000000
>  119: jitter 1.900661, drift -0.000003
>  120: jitter 1.900662, drift 0.000001
>  140: jitter -0.000992, drift -1.901654
>  141: jitter 1.900663, drift 1.901655
>  142: jitter 1.900663, drift -0.000000
>  143: jitter 1.900662, drift -0.000001
>  144: jitter 1.900658, drift -0.000004
>  145: jitter 1.900662, drift 0.000004
>  146: jitter 1.900662, drift 0.000000
>  147: jitter 1.900663, drift 0.000001
>  148: jitter 1.900664, drift 0.000001
>  149: jitter 1.900663, drift -0.000001
>  150: jitter 1.900663, drift 0.000000
>  170: jitter -0.001235, drift -1.901898
>  171: jitter 1.900663, drift 1.901898
>  172: jitter 1.900664, drift 0.000001
>  173: jitter 1.900661, drift -0.000003
>  174: jitter 1.900662, drift 0.000001
>  175: jitter 1.900663, drift 0.000001
>  176: jitter 1.900662, drift -0.000001
>  177: jitter 1.900664, drift 0.000002
>  178: jitter 1.900662, drift -0.000002
>  179: jitter 1.900663, drift 0.000001
>  180: jitter 1.900663, drift 0.000000
>  200: jitter -0.001487, drift -1.902150
>  201: jitter 1.900665, drift 1.902152
>  202: jitter 1.900662, drift -0.000003
>  203: jitter 1.900662, drift 0.000000
>  204: jitter 1.900664, drift 0.000002
>  205: jitter 1.900664, drift 0.000000
>  206: jitter 1.900657, drift -0.000007
>  207: jitter 1.900648, drift -0.000009
>  208: jitter 1.900655, drift 0.000007
>  209: jitter 1.900665, drift 0.000010
>  210: jitter 1.900635, drift -0.000030
>  230: jitter -0.001727, drift -1.902362
>  231: jitter 1.900666, drift 1.902393
>  232: jitter 1.900663, drift -0.000003
>  233: jitter 1.900650, drift -0.000013
>  234: jitter 1.900629, drift -0.000021
>  235: jitter 1.900577, drift -0.000052
>  236: jitter 1.900650, drift 0.000073
>  237: jitter 1.900657, drift 0.000007
>  238: jitter 1.900632, drift -0.000025
>  239: jitter 1.900628, drift -0.000004
>  240: jitter 1.900623, drift -0.000005
>  260: jitter -0.001974, drift -1.902597
>        Actual: 0.584784
>        Expected: <0.000100
> [FAIL] average jitter (dispatch_drift.c:87)
>        dispatch_drift.c:87
>        Actual: 0.000008
>        Expected: <0.000100
> [PASS] average drift
> PASS: dispatch_drift
>
> ==================================================
> [TEST] Dispatch Group
> [PID] 22607
> ==================================================
>
>        Actual: 0x2332010
>        Expected: 0x2332010
> [PASS] dispatch_group_async
>        Actual: 0x2332010
>        Expected: 0x2332010
> [PASS] dispatch_group_async
> sleeping...
> sleeping...
> sleeping...
>        Actual: 0
>        Expected: 0
> [PASS] dispatch_group_wait
> done.
> done.
> done.
>        Actual: 0
>        Expected: 0
> [PASS] dispatch_group_wait
>        Actual: 0x2332010
>        Expected: 0x2332010
> [PASS] dispatch_group_async
>        Actual: 0x60f930
>        Expected: 0x60f930
> [PASS] Notification Received
> PASS: dispatch_group
>
> ==================================================
> [TEST] Dispatch Ping Pong
> [PID] 22614
> ==================================================
>
>        Actual: 0xb9d010
>        Expected: 0xb9d010
> [PASS] dispatch_queue_create(ping)
>        Actual: 0xb9d0c0
>        Expected: 0xb9d0c0
> [PASS] dispatch_queue_create(pong)
>        Actual: 0xb9d170
>        Expected: 0xb9d170
> [PASS] dispatch_group_create
>        Actual: 1000000
>        Expected: 1000000
> [PASS] count
> PASS: dispatch_pingpong
>
> ==================================================
> [TEST] Dispatch Source Read
> [PID] 22620
> ==================================================
>
>        Actual: 0x60e950
>        Expected: 0x60e950
> [PASS] dispatch_get_main_queue
>        Actual: 0xbed010
>        Expected: 0xbed010
> [PASS] DISPATCH_SOURCE_TYPE_READ
> bytes available: 1
> bytes read: 512000
> /bin/bash: line 5: 22620 Terminated              ${dir}$tst
> FAIL: dispatch_read
>
> ==================================================
> [TEST] Dispatch Reader/Writer Queues
> [PID] 22631
> ==================================================
>
> PASS: dispatch_readsync
>
> ==================================================
> [TEST] Dispatch Semaphore
> [PID] 22637
> ==================================================
>
>        Actual: 10000
>        Expected: 10000
> [PASS] count
> PASS: dispatch_sema
>
> ==================================================
> [TEST] Dispatch Source Timer, bit 31
> [PID] 22643
> ==================================================
>
>        Actual: 0x60e920
>        Expected: 0x60e920
> [PASS] dispatch_get_main_queue
>        Actual: 0xe47010
>        Expected: 0xe47010
> [PASS] DISPATCH_SOURCE_TYPE_TIMER
>        Actual: 5
>        Expected: <4
> [FAIL] elapsed time < 4s (dispatch_timer_bit31.c:66)
>        dispatch_timer_bit31.c:66
>        Actual: 1
>        Expected: <5
> [PASS] elapsed time > 2s
> PASS: dispatch_timer_bit31
>
> ==================================================
> [TEST] Dispatch Source Timer, bit 63
> [PID] 22650
> ==================================================
>
> 0
> PASS: dispatch_timer_bit63
> ===========================================
> 1 of 18 tests failed
> Please report to libdispatch at macosforge.org
> ===========================================
> _______________________________________________
> libdispatch-dev mailing list
> libdispatch-dev at lists.macosforge.org
> http://lists.macosforge.org/mailman/listinfo.cgi/libdispatch-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/libdispatch-dev/attachments/20110106/b1333984/attachment-0001.html>


More information about the libdispatch-dev mailing list