[PD-cvs] SF.net SVN: pure-data: [9491] vendor

eighthave at users.sourceforge.net eighthave at users.sourceforge.net
Fri Feb 22 18:25:58 CET 2008


Revision: 9491
          http://pure-data.svn.sourceforge.net/pure-data/?rev=9491&view=rev
Author:   eighthave
Date:     2008-02-22 09:25:55 -0800 (Fri, 22 Feb 2008)

Log Message:
-----------
importing pthreads-w32-2-8-0-release.exe

Added Paths:
-----------
    vendor/pthreads/
    vendor/pthreads/current/
    vendor/pthreads/current/QueueUserAPCEx/
    vendor/pthreads/current/QueueUserAPCEx/COPYING.LIB
    vendor/pthreads/current/QueueUserAPCEx/Readme.txt
    vendor/pthreads/current/QueueUserAPCEx/driver/
    vendor/pthreads/current/QueueUserAPCEx/driver/MAKEFILE
    vendor/pthreads/current/QueueUserAPCEx/driver/Sources
    vendor/pthreads/current/QueueUserAPCEx/driver/alertdrv.c
    vendor/pthreads/current/QueueUserAPCEx/driver/alertdrv.ini
    vendor/pthreads/current/QueueUserAPCEx/driver/alertdrv.rc
    vendor/pthreads/current/QueueUserAPCEx/driver/alertdrv.reg
    vendor/pthreads/current/QueueUserAPCEx/driver/install.bat
    vendor/pthreads/current/QueueUserAPCEx/execs/
    vendor/pthreads/current/QueueUserAPCEx/execs/alertdrv.sys
    vendor/pthreads/current/QueueUserAPCEx/testapp/
    vendor/pthreads/current/QueueUserAPCEx/testapp/QueueUserAPCEx.c
    vendor/pthreads/current/QueueUserAPCEx/testapp/QueueUserAPCEx.h
    vendor/pthreads/current/QueueUserAPCEx/testapp/testapp.c
    vendor/pthreads/current/QueueUserAPCEx/testapp/testapp.dsp
    vendor/pthreads/current/QueueUserAPCEx/user/
    vendor/pthreads/current/QueueUserAPCEx/user/GNUmakefile
    vendor/pthreads/current/QueueUserAPCEx/user/Makefile
    vendor/pthreads/current/QueueUserAPCEx/user/QueueUserAPCEx.c
    vendor/pthreads/current/QueueUserAPCEx/user/QueueUserAPCEx.h
    vendor/pthreads/current/QueueUserAPCEx/user/quserex.lib
    vendor/pthreads/current/pthreads.2/
    vendor/pthreads/current/pthreads.2/ANNOUNCE
    vendor/pthreads/current/pthreads.2/BUGS
    vendor/pthreads/current/pthreads.2/Bmakefile
    vendor/pthreads/current/pthreads.2/CONTRIBUTORS
    vendor/pthreads/current/pthreads.2/COPYING
    vendor/pthreads/current/pthreads.2/COPYING.LIB
    vendor/pthreads/current/pthreads.2/ChangeLog
    vendor/pthreads/current/pthreads.2/FAQ
    vendor/pthreads/current/pthreads.2/GNUmakefile
    vendor/pthreads/current/pthreads.2/MAINTAINERS
    vendor/pthreads/current/pthreads.2/Makefile
    vendor/pthreads/current/pthreads.2/NEWS
    vendor/pthreads/current/pthreads.2/Nmakefile
    vendor/pthreads/current/pthreads.2/Nmakefile.tests
    vendor/pthreads/current/pthreads.2/PROGRESS
    vendor/pthreads/current/pthreads.2/README
    vendor/pthreads/current/pthreads.2/README.Borland
    vendor/pthreads/current/pthreads.2/README.CV
    vendor/pthreads/current/pthreads.2/README.NONPORTABLE
    vendor/pthreads/current/pthreads.2/README.Watcom
    vendor/pthreads/current/pthreads.2/README.WinCE
    vendor/pthreads/current/pthreads.2/TODO
    vendor/pthreads/current/pthreads.2/WinCE-PORT
    vendor/pthreads/current/pthreads.2/attr.c
    vendor/pthreads/current/pthreads.2/barrier.c
    vendor/pthreads/current/pthreads.2/builddmc.bat
    vendor/pthreads/current/pthreads.2/cancel.c
    vendor/pthreads/current/pthreads.2/cleanup.c
    vendor/pthreads/current/pthreads.2/condvar.c
    vendor/pthreads/current/pthreads.2/config.h
    vendor/pthreads/current/pthreads.2/create.c
    vendor/pthreads/current/pthreads.2/dll.c
    vendor/pthreads/current/pthreads.2/errno.c
    vendor/pthreads/current/pthreads.2/exit.c
    vendor/pthreads/current/pthreads.2/fork.c
    vendor/pthreads/current/pthreads.2/global.c
    vendor/pthreads/current/pthreads.2/implement.h
    vendor/pthreads/current/pthreads.2/manual/
    vendor/pthreads/current/pthreads.2/manual/ChangeLog
    vendor/pthreads/current/pthreads.2/manual/PortabilityIssues.html
    vendor/pthreads/current/pthreads.2/manual/index.html
    vendor/pthreads/current/pthreads.2/manual/pthreadCancelableWait.html
    vendor/pthreads/current/pthreads.2/manual/pthread_attr_init.html
    vendor/pthreads/current/pthreads.2/manual/pthread_attr_setstackaddr.html
    vendor/pthreads/current/pthreads.2/manual/pthread_attr_setstacksize.html
    vendor/pthreads/current/pthreads.2/manual/pthread_barrier_init.html
    vendor/pthreads/current/pthreads.2/manual/pthread_barrier_wait.html
    vendor/pthreads/current/pthreads.2/manual/pthread_barrierattr_init.html
    vendor/pthreads/current/pthreads.2/manual/pthread_barrierattr_setpshared.html
    vendor/pthreads/current/pthreads.2/manual/pthread_cancel.html
    vendor/pthreads/current/pthreads.2/manual/pthread_cleanup_push.html
    vendor/pthreads/current/pthreads.2/manual/pthread_cond_init.html
    vendor/pthreads/current/pthreads.2/manual/pthread_condattr_init.html
    vendor/pthreads/current/pthreads.2/manual/pthread_condattr_setpshared.html
    vendor/pthreads/current/pthreads.2/manual/pthread_create.html
    vendor/pthreads/current/pthreads.2/manual/pthread_delay_np.html
    vendor/pthreads/current/pthreads.2/manual/pthread_detach.html
    vendor/pthreads/current/pthreads.2/manual/pthread_equal.html
    vendor/pthreads/current/pthreads.2/manual/pthread_exit.html
    vendor/pthreads/current/pthreads.2/manual/pthread_getw32threadhandle_np.html
    vendor/pthreads/current/pthreads.2/manual/pthread_join.html
    vendor/pthreads/current/pthreads.2/manual/pthread_key_create.html
    vendor/pthreads/current/pthreads.2/manual/pthread_kill.html
    vendor/pthreads/current/pthreads.2/manual/pthread_mutex_init.html
    vendor/pthreads/current/pthreads.2/manual/pthread_mutexattr_init.html
    vendor/pthreads/current/pthreads.2/manual/pthread_mutexattr_setpshared.html
    vendor/pthreads/current/pthreads.2/manual/pthread_num_processors_np.html
    vendor/pthreads/current/pthreads.2/manual/pthread_once.html
    vendor/pthreads/current/pthreads.2/manual/pthread_rwlock_init.html
    vendor/pthreads/current/pthreads.2/manual/pthread_rwlock_rdlock.html
    vendor/pthreads/current/pthreads.2/manual/pthread_rwlock_timedrdlock.html
    vendor/pthreads/current/pthreads.2/manual/pthread_rwlock_timedwrlock.html
    vendor/pthreads/current/pthreads.2/manual/pthread_rwlock_unlock.html
    vendor/pthreads/current/pthreads.2/manual/pthread_rwlock_wrlock.html
    vendor/pthreads/current/pthreads.2/manual/pthread_rwlockattr_init.html
    vendor/pthreads/current/pthreads.2/manual/pthread_rwlockattr_setpshared.html
    vendor/pthreads/current/pthreads.2/manual/pthread_self.html
    vendor/pthreads/current/pthreads.2/manual/pthread_setcancelstate.html
    vendor/pthreads/current/pthreads.2/manual/pthread_setcanceltype.html
    vendor/pthreads/current/pthreads.2/manual/pthread_setconcurrency.html
    vendor/pthreads/current/pthreads.2/manual/pthread_setschedparam.html
    vendor/pthreads/current/pthreads.2/manual/pthread_spin_init.html
    vendor/pthreads/current/pthreads.2/manual/pthread_spin_lock.html
    vendor/pthreads/current/pthreads.2/manual/pthread_spin_unlock.html
    vendor/pthreads/current/pthreads.2/manual/pthread_timechange_handler_np.html
    vendor/pthreads/current/pthreads.2/manual/pthread_win32_attach_detach_np.html
    vendor/pthreads/current/pthreads.2/manual/pthread_win32_test_features_np.html
    vendor/pthreads/current/pthreads.2/manual/sched_get_priority_max.html
    vendor/pthreads/current/pthreads.2/manual/sched_getscheduler.html
    vendor/pthreads/current/pthreads.2/manual/sched_setscheduler.html
    vendor/pthreads/current/pthreads.2/manual/sched_yield.html
    vendor/pthreads/current/pthreads.2/manual/sem_init.html
    vendor/pthreads/current/pthreads.2/misc.c
    vendor/pthreads/current/pthreads.2/mutex.c
    vendor/pthreads/current/pthreads.2/need_errno.h
    vendor/pthreads/current/pthreads.2/nonportable.c
    vendor/pthreads/current/pthreads.2/private.c
    vendor/pthreads/current/pthreads.2/pthread.c
    vendor/pthreads/current/pthreads.2/pthread.dsp
    vendor/pthreads/current/pthreads.2/pthread.dsw
    vendor/pthreads/current/pthreads.2/pthread.h
    vendor/pthreads/current/pthreads.2/pthread_attr_destroy.c
    vendor/pthreads/current/pthreads.2/pthread_attr_getdetachstate.c
    vendor/pthreads/current/pthreads.2/pthread_attr_getinheritsched.c
    vendor/pthreads/current/pthreads.2/pthread_attr_getschedparam.c
    vendor/pthreads/current/pthreads.2/pthread_attr_getschedpolicy.c
    vendor/pthreads/current/pthreads.2/pthread_attr_getscope.c
    vendor/pthreads/current/pthreads.2/pthread_attr_getstackaddr.c
    vendor/pthreads/current/pthreads.2/pthread_attr_getstacksize.c
    vendor/pthreads/current/pthreads.2/pthread_attr_init.c
    vendor/pthreads/current/pthreads.2/pthread_attr_setdetachstate.c
    vendor/pthreads/current/pthreads.2/pthread_attr_setinheritsched.c
    vendor/pthreads/current/pthreads.2/pthread_attr_setschedparam.c
    vendor/pthreads/current/pthreads.2/pthread_attr_setschedpolicy.c
    vendor/pthreads/current/pthreads.2/pthread_attr_setscope.c
    vendor/pthreads/current/pthreads.2/pthread_attr_setstackaddr.c
    vendor/pthreads/current/pthreads.2/pthread_attr_setstacksize.c
    vendor/pthreads/current/pthreads.2/pthread_barrier_destroy.c
    vendor/pthreads/current/pthreads.2/pthread_barrier_init.c
    vendor/pthreads/current/pthreads.2/pthread_barrier_wait.c
    vendor/pthreads/current/pthreads.2/pthread_barrierattr_destroy.c
    vendor/pthreads/current/pthreads.2/pthread_barrierattr_getpshared.c
    vendor/pthreads/current/pthreads.2/pthread_barrierattr_init.c
    vendor/pthreads/current/pthreads.2/pthread_barrierattr_setpshared.c
    vendor/pthreads/current/pthreads.2/pthread_cancel.c
    vendor/pthreads/current/pthreads.2/pthread_cond_destroy.c
    vendor/pthreads/current/pthreads.2/pthread_cond_init.c
    vendor/pthreads/current/pthreads.2/pthread_cond_signal.c
    vendor/pthreads/current/pthreads.2/pthread_cond_wait.c
    vendor/pthreads/current/pthreads.2/pthread_condattr_destroy.c
    vendor/pthreads/current/pthreads.2/pthread_condattr_getpshared.c
    vendor/pthreads/current/pthreads.2/pthread_condattr_init.c
    vendor/pthreads/current/pthreads.2/pthread_condattr_setpshared.c
    vendor/pthreads/current/pthreads.2/pthread_delay_np.c
    vendor/pthreads/current/pthreads.2/pthread_detach.c
    vendor/pthreads/current/pthreads.2/pthread_equal.c
    vendor/pthreads/current/pthreads.2/pthread_exit.c
    vendor/pthreads/current/pthreads.2/pthread_getconcurrency.c
    vendor/pthreads/current/pthreads.2/pthread_getschedparam.c
    vendor/pthreads/current/pthreads.2/pthread_getspecific.c
    vendor/pthreads/current/pthreads.2/pthread_getw32threadhandle_np.c
    vendor/pthreads/current/pthreads.2/pthread_join.c
    vendor/pthreads/current/pthreads.2/pthread_key_create.c
    vendor/pthreads/current/pthreads.2/pthread_key_delete.c
    vendor/pthreads/current/pthreads.2/pthread_kill.c
    vendor/pthreads/current/pthreads.2/pthread_mutex_destroy.c
    vendor/pthreads/current/pthreads.2/pthread_mutex_init.c
    vendor/pthreads/current/pthreads.2/pthread_mutex_lock.c
    vendor/pthreads/current/pthreads.2/pthread_mutex_timedlock.c
    vendor/pthreads/current/pthreads.2/pthread_mutex_trylock.c
    vendor/pthreads/current/pthreads.2/pthread_mutex_unlock.c
    vendor/pthreads/current/pthreads.2/pthread_mutexattr_destroy.c
    vendor/pthreads/current/pthreads.2/pthread_mutexattr_getkind_np.c
    vendor/pthreads/current/pthreads.2/pthread_mutexattr_getpshared.c
    vendor/pthreads/current/pthreads.2/pthread_mutexattr_gettype.c
    vendor/pthreads/current/pthreads.2/pthread_mutexattr_init.c
    vendor/pthreads/current/pthreads.2/pthread_mutexattr_setkind_np.c
    vendor/pthreads/current/pthreads.2/pthread_mutexattr_setpshared.c
    vendor/pthreads/current/pthreads.2/pthread_mutexattr_settype.c
    vendor/pthreads/current/pthreads.2/pthread_num_processors_np.c
    vendor/pthreads/current/pthreads.2/pthread_once.c
    vendor/pthreads/current/pthreads.2/pthread_once.x
    vendor/pthreads/current/pthreads.2/pthread_rwlock_destroy.c
    vendor/pthreads/current/pthreads.2/pthread_rwlock_init.c
    vendor/pthreads/current/pthreads.2/pthread_rwlock_rdlock.c
    vendor/pthreads/current/pthreads.2/pthread_rwlock_timedrdlock.c
    vendor/pthreads/current/pthreads.2/pthread_rwlock_timedwrlock.c
    vendor/pthreads/current/pthreads.2/pthread_rwlock_tryrdlock.c
    vendor/pthreads/current/pthreads.2/pthread_rwlock_trywrlock.c
    vendor/pthreads/current/pthreads.2/pthread_rwlock_unlock.c
    vendor/pthreads/current/pthreads.2/pthread_rwlock_wrlock.c
    vendor/pthreads/current/pthreads.2/pthread_rwlockattr_destroy.c
    vendor/pthreads/current/pthreads.2/pthread_rwlockattr_getpshared.c
    vendor/pthreads/current/pthreads.2/pthread_rwlockattr_init.c
    vendor/pthreads/current/pthreads.2/pthread_rwlockattr_setpshared.c
    vendor/pthreads/current/pthreads.2/pthread_self.c
    vendor/pthreads/current/pthreads.2/pthread_setcancelstate.c
    vendor/pthreads/current/pthreads.2/pthread_setcanceltype.c
    vendor/pthreads/current/pthreads.2/pthread_setconcurrency.c
    vendor/pthreads/current/pthreads.2/pthread_setschedparam.c
    vendor/pthreads/current/pthreads.2/pthread_setspecific.c
    vendor/pthreads/current/pthreads.2/pthread_spin_destroy.c
    vendor/pthreads/current/pthreads.2/pthread_spin_init.c
    vendor/pthreads/current/pthreads.2/pthread_spin_lock.c
    vendor/pthreads/current/pthreads.2/pthread_spin_trylock.c
    vendor/pthreads/current/pthreads.2/pthread_spin_unlock.c
    vendor/pthreads/current/pthreads.2/pthread_testcancel.c
    vendor/pthreads/current/pthreads.2/pthread_timechange_handler_np.c
    vendor/pthreads/current/pthreads.2/pthread_win32_attach_detach_np.c
    vendor/pthreads/current/pthreads.2/ptw32_InterlockedCompareExchange.c
    vendor/pthreads/current/pthreads.2/ptw32_MCS_lock.c
    vendor/pthreads/current/pthreads.2/ptw32_callUserDestroyRoutines.c
    vendor/pthreads/current/pthreads.2/ptw32_calloc.c
    vendor/pthreads/current/pthreads.2/ptw32_cond_check_need_init.c
    vendor/pthreads/current/pthreads.2/ptw32_getprocessors.c
    vendor/pthreads/current/pthreads.2/ptw32_is_attr.c
    vendor/pthreads/current/pthreads.2/ptw32_mutex_check_need_init.c
    vendor/pthreads/current/pthreads.2/ptw32_new.c
    vendor/pthreads/current/pthreads.2/ptw32_processInitialize.c
    vendor/pthreads/current/pthreads.2/ptw32_processTerminate.c
    vendor/pthreads/current/pthreads.2/ptw32_relmillisecs.c
    vendor/pthreads/current/pthreads.2/ptw32_reuse.c
    vendor/pthreads/current/pthreads.2/ptw32_rwlock_cancelwrwait.c
    vendor/pthreads/current/pthreads.2/ptw32_rwlock_check_need_init.c
    vendor/pthreads/current/pthreads.2/ptw32_semwait.c
    vendor/pthreads/current/pthreads.2/ptw32_spinlock_check_need_init.c
    vendor/pthreads/current/pthreads.2/ptw32_threadDestroy.c
    vendor/pthreads/current/pthreads.2/ptw32_threadStart.c
    vendor/pthreads/current/pthreads.2/ptw32_throw.c
    vendor/pthreads/current/pthreads.2/ptw32_timespec.c
    vendor/pthreads/current/pthreads.2/ptw32_tkAssocCreate.c
    vendor/pthreads/current/pthreads.2/ptw32_tkAssocDestroy.c
    vendor/pthreads/current/pthreads.2/rwlock.c
    vendor/pthreads/current/pthreads.2/sched.c
    vendor/pthreads/current/pthreads.2/sched.h
    vendor/pthreads/current/pthreads.2/sched_get_priority_max.c
    vendor/pthreads/current/pthreads.2/sched_get_priority_min.c
    vendor/pthreads/current/pthreads.2/sched_getscheduler.c
    vendor/pthreads/current/pthreads.2/sched_setscheduler.c
    vendor/pthreads/current/pthreads.2/sched_yield.c
    vendor/pthreads/current/pthreads.2/sem_close.c
    vendor/pthreads/current/pthreads.2/sem_destroy.c
    vendor/pthreads/current/pthreads.2/sem_getvalue.c
    vendor/pthreads/current/pthreads.2/sem_init.c
    vendor/pthreads/current/pthreads.2/sem_open.c
    vendor/pthreads/current/pthreads.2/sem_post.c
    vendor/pthreads/current/pthreads.2/sem_post_multiple.c
    vendor/pthreads/current/pthreads.2/sem_timedwait.c
    vendor/pthreads/current/pthreads.2/sem_trywait.c
    vendor/pthreads/current/pthreads.2/sem_unlink.c
    vendor/pthreads/current/pthreads.2/sem_wait.c
    vendor/pthreads/current/pthreads.2/semaphore.c
    vendor/pthreads/current/pthreads.2/semaphore.h
    vendor/pthreads/current/pthreads.2/signal.c
    vendor/pthreads/current/pthreads.2/spin.c
    vendor/pthreads/current/pthreads.2/sync.c
    vendor/pthreads/current/pthreads.2/tests/
    vendor/pthreads/current/pthreads.2/tests/.once3.c.swp
    vendor/pthreads/current/pthreads.2/tests/Bmakefile
    vendor/pthreads/current/pthreads.2/tests/ChangeLog
    vendor/pthreads/current/pthreads.2/tests/Debug.dsp
    vendor/pthreads/current/pthreads.2/tests/Debug.dsw
    vendor/pthreads/current/pthreads.2/tests/Debug.plg
    vendor/pthreads/current/pthreads.2/tests/Debug.txt
    vendor/pthreads/current/pthreads.2/tests/GNUmakefile
    vendor/pthreads/current/pthreads.2/tests/Makefile
    vendor/pthreads/current/pthreads.2/tests/README.BENCHTESTS
    vendor/pthreads/current/pthreads.2/tests/SIZES.VCE
    vendor/pthreads/current/pthreads.2/tests/Wmakefile
    vendor/pthreads/current/pthreads.2/tests/barrier1.c
    vendor/pthreads/current/pthreads.2/tests/barrier2.c
    vendor/pthreads/current/pthreads.2/tests/barrier3.c
    vendor/pthreads/current/pthreads.2/tests/barrier4.c
    vendor/pthreads/current/pthreads.2/tests/barrier5.c
    vendor/pthreads/current/pthreads.2/tests/benchlib.c
    vendor/pthreads/current/pthreads.2/tests/benchtest.h
    vendor/pthreads/current/pthreads.2/tests/benchtest1.c
    vendor/pthreads/current/pthreads.2/tests/benchtest2.c
    vendor/pthreads/current/pthreads.2/tests/benchtest3.c
    vendor/pthreads/current/pthreads.2/tests/benchtest4.c
    vendor/pthreads/current/pthreads.2/tests/benchtest5.c
    vendor/pthreads/current/pthreads.2/tests/cancel1.c
    vendor/pthreads/current/pthreads.2/tests/cancel2.c
    vendor/pthreads/current/pthreads.2/tests/cancel3.c
    vendor/pthreads/current/pthreads.2/tests/cancel4.c
    vendor/pthreads/current/pthreads.2/tests/cancel5.c
    vendor/pthreads/current/pthreads.2/tests/cancel6a.c
    vendor/pthreads/current/pthreads.2/tests/cancel6d.c
    vendor/pthreads/current/pthreads.2/tests/cancel7.c
    vendor/pthreads/current/pthreads.2/tests/cancel8.c
    vendor/pthreads/current/pthreads.2/tests/cancel9.c
    vendor/pthreads/current/pthreads.2/tests/cleanup0.c
    vendor/pthreads/current/pthreads.2/tests/cleanup1.c
    vendor/pthreads/current/pthreads.2/tests/cleanup2.c
    vendor/pthreads/current/pthreads.2/tests/cleanup3.c
    vendor/pthreads/current/pthreads.2/tests/condvar1.c
    vendor/pthreads/current/pthreads.2/tests/condvar1_1.c
    vendor/pthreads/current/pthreads.2/tests/condvar1_2.c
    vendor/pthreads/current/pthreads.2/tests/condvar2.c
    vendor/pthreads/current/pthreads.2/tests/condvar2_1.c
    vendor/pthreads/current/pthreads.2/tests/condvar3.c
    vendor/pthreads/current/pthreads.2/tests/condvar3_1.c
    vendor/pthreads/current/pthreads.2/tests/condvar3_2.c
    vendor/pthreads/current/pthreads.2/tests/condvar3_3.c
    vendor/pthreads/current/pthreads.2/tests/condvar4.c
    vendor/pthreads/current/pthreads.2/tests/condvar5.c
    vendor/pthreads/current/pthreads.2/tests/condvar6.c
    vendor/pthreads/current/pthreads.2/tests/condvar7.c
    vendor/pthreads/current/pthreads.2/tests/condvar8.c
    vendor/pthreads/current/pthreads.2/tests/condvar9.c
    vendor/pthreads/current/pthreads.2/tests/context1.c
    vendor/pthreads/current/pthreads.2/tests/count1.c
    vendor/pthreads/current/pthreads.2/tests/create1.c
    vendor/pthreads/current/pthreads.2/tests/create2.c
    vendor/pthreads/current/pthreads.2/tests/create3.c
    vendor/pthreads/current/pthreads.2/tests/delay1.c
    vendor/pthreads/current/pthreads.2/tests/delay2.c
    vendor/pthreads/current/pthreads.2/tests/detach1.c
    vendor/pthreads/current/pthreads.2/tests/equal1.c
    vendor/pthreads/current/pthreads.2/tests/errno1.c
    vendor/pthreads/current/pthreads.2/tests/exception1.c
    vendor/pthreads/current/pthreads.2/tests/exception2.c
    vendor/pthreads/current/pthreads.2/tests/exception3.c
    vendor/pthreads/current/pthreads.2/tests/exit1.c
    vendor/pthreads/current/pthreads.2/tests/exit2.c
    vendor/pthreads/current/pthreads.2/tests/exit3.c
    vendor/pthreads/current/pthreads.2/tests/exit4.c
    vendor/pthreads/current/pthreads.2/tests/exit5.c
    vendor/pthreads/current/pthreads.2/tests/eyal1.c
    vendor/pthreads/current/pthreads.2/tests/inherit1.c
    vendor/pthreads/current/pthreads.2/tests/join0.c
    vendor/pthreads/current/pthreads.2/tests/join1.c
    vendor/pthreads/current/pthreads.2/tests/join2.c
    vendor/pthreads/current/pthreads.2/tests/join3.c
    vendor/pthreads/current/pthreads.2/tests/kill1.c
    vendor/pthreads/current/pthreads.2/tests/loadfree.c
    vendor/pthreads/current/pthreads.2/tests/mkdir/
    vendor/pthreads/current/pthreads.2/tests/multiPCcaBetter.c
    vendor/pthreads/current/pthreads.2/tests/mutex1.c
    vendor/pthreads/current/pthreads.2/tests/mutex1e.c
    vendor/pthreads/current/pthreads.2/tests/mutex1n.c
    vendor/pthreads/current/pthreads.2/tests/mutex1r.c
    vendor/pthreads/current/pthreads.2/tests/mutex2.c
    vendor/pthreads/current/pthreads.2/tests/mutex2e.c
    vendor/pthreads/current/pthreads.2/tests/mutex2r.c
    vendor/pthreads/current/pthreads.2/tests/mutex3.c
    vendor/pthreads/current/pthreads.2/tests/mutex3e.c
    vendor/pthreads/current/pthreads.2/tests/mutex3r.c
    vendor/pthreads/current/pthreads.2/tests/mutex4.c
    vendor/pthreads/current/pthreads.2/tests/mutex5.c
    vendor/pthreads/current/pthreads.2/tests/mutex6.c
    vendor/pthreads/current/pthreads.2/tests/mutex6e.c
    vendor/pthreads/current/pthreads.2/tests/mutex6es.c
    vendor/pthreads/current/pthreads.2/tests/mutex6n.c
    vendor/pthreads/current/pthreads.2/tests/mutex6r.c
    vendor/pthreads/current/pthreads.2/tests/mutex6rs.c
    vendor/pthreads/current/pthreads.2/tests/mutex6s.c
    vendor/pthreads/current/pthreads.2/tests/mutex7.c
    vendor/pthreads/current/pthreads.2/tests/mutex7e.c
    vendor/pthreads/current/pthreads.2/tests/mutex7n.c
    vendor/pthreads/current/pthreads.2/tests/mutex7r.c
    vendor/pthreads/current/pthreads.2/tests/mutex8.c
    vendor/pthreads/current/pthreads.2/tests/mutex8e.c
    vendor/pthreads/current/pthreads.2/tests/mutex8n.c
    vendor/pthreads/current/pthreads.2/tests/mutex8r.c
    vendor/pthreads/current/pthreads.2/tests/once1.c
    vendor/pthreads/current/pthreads.2/tests/once2.c
    vendor/pthreads/current/pthreads.2/tests/once3.c
    vendor/pthreads/current/pthreads.2/tests/once4.c
    vendor/pthreads/current/pthreads.2/tests/priority1.c
    vendor/pthreads/current/pthreads.2/tests/priority2.c
    vendor/pthreads/current/pthreads.2/tests/readme
    vendor/pthreads/current/pthreads.2/tests/reuse1.c
    vendor/pthreads/current/pthreads.2/tests/reuse2.c
    vendor/pthreads/current/pthreads.2/tests/rwlock1.c
    vendor/pthreads/current/pthreads.2/tests/rwlock2.c
    vendor/pthreads/current/pthreads.2/tests/rwlock2_t.c
    vendor/pthreads/current/pthreads.2/tests/rwlock3.c
    vendor/pthreads/current/pthreads.2/tests/rwlock3_t.c
    vendor/pthreads/current/pthreads.2/tests/rwlock4.c
    vendor/pthreads/current/pthreads.2/tests/rwlock4_t.c
    vendor/pthreads/current/pthreads.2/tests/rwlock5.c
    vendor/pthreads/current/pthreads.2/tests/rwlock5_t.c
    vendor/pthreads/current/pthreads.2/tests/rwlock6.c
    vendor/pthreads/current/pthreads.2/tests/rwlock6_t.c
    vendor/pthreads/current/pthreads.2/tests/rwlock6_t2.c
    vendor/pthreads/current/pthreads.2/tests/rwlock7.c
    vendor/pthreads/current/pthreads.2/tests/rwlock8.c
    vendor/pthreads/current/pthreads.2/tests/self1.c
    vendor/pthreads/current/pthreads.2/tests/self2.c
    vendor/pthreads/current/pthreads.2/tests/semaphore1.c
    vendor/pthreads/current/pthreads.2/tests/semaphore2.c
    vendor/pthreads/current/pthreads.2/tests/semaphore3.c
    vendor/pthreads/current/pthreads.2/tests/semaphore4.c
    vendor/pthreads/current/pthreads.2/tests/semaphore4t.c
    vendor/pthreads/current/pthreads.2/tests/semaphore5.c
    vendor/pthreads/current/pthreads.2/tests/sizes.c
    vendor/pthreads/current/pthreads.2/tests/sizes.gc
    vendor/pthreads/current/pthreads.2/tests/sizes.gce
    vendor/pthreads/current/pthreads.2/tests/sizes.vc
    vendor/pthreads/current/pthreads.2/tests/sizes.vse
    vendor/pthreads/current/pthreads.2/tests/spin1.c
    vendor/pthreads/current/pthreads.2/tests/spin2.c
    vendor/pthreads/current/pthreads.2/tests/spin3.c
    vendor/pthreads/current/pthreads.2/tests/spin4.c
    vendor/pthreads/current/pthreads.2/tests/stress1.c
    vendor/pthreads/current/pthreads.2/tests/test.h
    vendor/pthreads/current/pthreads.2/tests/tryentercs.c
    vendor/pthreads/current/pthreads.2/tests/tryentercs2.c
    vendor/pthreads/current/pthreads.2/tests/tsd1.c
    vendor/pthreads/current/pthreads.2/tests/tsd2.c
    vendor/pthreads/current/pthreads.2/tests/valid1.c
    vendor/pthreads/current/pthreads.2/tests/valid2.c
    vendor/pthreads/current/pthreads.2/tsd.c
    vendor/pthreads/current/pthreads.2/version.rc
    vendor/pthreads/current/pthreads.2/w32_CancelableWait.c

Added: vendor/pthreads/current/QueueUserAPCEx/COPYING.LIB
===================================================================
--- vendor/pthreads/current/QueueUserAPCEx/COPYING.LIB	                        (rev 0)
+++ vendor/pthreads/current/QueueUserAPCEx/COPYING.LIB	2008-02-22 17:25:55 UTC (rev 9491)
@@ -0,0 +1,504 @@
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+

Added: vendor/pthreads/current/QueueUserAPCEx/Readme.txt
===================================================================
--- vendor/pthreads/current/QueueUserAPCEx/Readme.txt	                        (rev 0)
+++ vendor/pthreads/current/QueueUserAPCEx/Readme.txt	2008-02-22 17:25:55 UTC (rev 9491)
@@ -0,0 +1,44 @@
+TEST PLATFORM:
+Windows XP Home, Microsoft Visual C++ 6.0, Drivers Development Kit
+(Windows 2000 DDK).
+
+PREBUILT DRIVER AND DLL SUPPLIED
+Exec/AlertDrv.sys
+User/quserex.dll
+
+DIRECTORIES:
+driver: Source code of the device driver
+user: Source code of QueueUserAPCEx
+testapp: Demo of QueueUserAPCEx
+execs: Binary version of the device driver
+
+INSTALLING THE DRIVER
+1. Copy the driver alertdrv.sys into the WINNT\system32\drivers directory.
+2. Execute "regedit alertdrv.reg"
+3. Reboot the system
+
+INSTALLING THE DLL
+Put User/QuserEx.dll somewhere appropriate where the system will find
+it when your application is run.
+
+LOADING AND UNLOADING THE DRIVER
+After rebooting, the driver has been installed on the system.
+Use "net start alertdrv" to load (start) the driver, 
+or "net stop alertdrv" to unload (stop) the driver.
+
+BUILDING THE DRIVER FROM SOURCE
+Click the Free Build Environment or Checked Build Environment 
+icon under your Developement Kits program group to set basic 
+environment variables needed by the build utility.
+
+Change to the directory containing the device source code. 
+Run build -ceZ. The driver alertdrv.sys will be placed in
+the platform specific subdirectory driver\i386.
+
+BUILDING QUSEREX.DLL
+Use either Makefile (MSVC nmake) or GNUmakefile (MinGW MSys make)
+supplied on the User folder, or follow your nose if using an IDE.
+
+BUILDING THE TEST APPLICATION
+1. Open the testapp.dsp file with Microsoft Visual C++.
+2. Do not forget to load (start) the driver.

Added: vendor/pthreads/current/QueueUserAPCEx/driver/MAKEFILE
===================================================================
--- vendor/pthreads/current/QueueUserAPCEx/driver/MAKEFILE	                        (rev 0)
+++ vendor/pthreads/current/QueueUserAPCEx/driver/MAKEFILE	2008-02-22 17:25:55 UTC (rev 9491)
@@ -0,0 +1,7 @@
+#
+# DO NOT EDIT THIS FILE!!!  Edit .\sources. if you want to add a new source
+# file to this component.  This file merely indirects to the real make file
+# that is shared by all the driver components of the Windows NT DDK
+#
+
+!INCLUDE $(NTMAKEENV)\makefile.def

Added: vendor/pthreads/current/QueueUserAPCEx/driver/Sources
===================================================================
--- vendor/pthreads/current/QueueUserAPCEx/driver/Sources	                        (rev 0)
+++ vendor/pthreads/current/QueueUserAPCEx/driver/Sources	2008-02-22 17:25:55 UTC (rev 9491)
@@ -0,0 +1,5 @@
+TARGETNAME=alertdrv
+TARGETPATH=.
+TARGETTYPE=DRIVER
+
+SOURCES=alertdrv.c alertdrv.rc

Added: vendor/pthreads/current/QueueUserAPCEx/driver/alertdrv.c
===================================================================
--- vendor/pthreads/current/QueueUserAPCEx/driver/alertdrv.c	                        (rev 0)
+++ vendor/pthreads/current/QueueUserAPCEx/driver/alertdrv.c	2008-02-22 17:25:55 UTC (rev 9491)
@@ -0,0 +1,262 @@
+/*
+ *      QueueUserAPCEx: Extending APCs on Windows Operating System (version 2.0)
+ *      Copyright(C) 2004 Panagiotis E. Hadjidoukas
+ *
+ *      Contact Email: peh at hpclab.ceid.upatras.gr, xdoukas at ceid.upatras.gr
+ *
+ *      QueueUserAPCEx is free software; you can redistribute it and/or
+ *      modify it under the terms of the GNU Lesser General Public
+ *      License as published by the Free Software Foundation; either
+ *      version 2 of the License, or (at your option) any later version.
+ *
+ *      QueueUserAPCEx is distributed in the hope that it will be useful,
+ *      but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *      Lesser General Public License for more details.
+ *
+ *      You should have received a copy of the GNU Lesser General Public
+ *      License along with QueueUserAPCEx in the file COPYING.LIB;
+ *      if not, write to the Free Software Foundation, Inc.,
+ *      59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ */
+
+#include "ntddk.h"
+
+#define FILE_DEVICE_ALERTDRV  0x00008005
+#define IOCTL_ALERTDRV_SET_ALERTABLE2 CTL_CODE(FILE_DEVICE_ALERTDRV, 0x800, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+
+
+#define ALERTDRV_DEVICE_NAME_U     L"\\Device\\Alertdrv"
+#define ALERTDRV_DOS_DEVICE_NAME_U L"\\DosDevices\\ALERTDRV"
+
+/*  Debugging macros */
+#ifdef DBG
+#define AlertDrvKdPrint(_x_) \
+                DbgPrint("AlertDrv.sys: ");\
+                DbgPrint _x_;
+#else
+#define AlertDrvKdPrint(_x_)
+#endif
+
+/* Function prototypes for APCs */
+void
+KeInitializeApc(
+  PKAPC Apc,
+  PKTHREAD Thread,
+  CCHAR ApcStateIndex,
+  PKKERNEL_ROUTINE KernelRoutine,
+  PKRUNDOWN_ROUTINE RundownRoutine,
+  PKNORMAL_ROUTINE NormalRoutine,
+  KPROCESSOR_MODE ApcMode,
+  PVOID NormalContext
+);
+
+
+void
+KeInsertQueueApc(
+  PKAPC Apc,
+  PVOID SystemArgument1,
+  PVOID SystemArgument2,
+  UCHAR unknown
+);
+
+
+void
+KernelApcCallBack(PKAPC Apc, PKNORMAL_ROUTINE NormalRoutine, PVOID NormalContext, PVOID SystemArgument1, PVOID SystemArgument2)
+{
+  KEVENT event;
+  LARGE_INTEGER Timeout;
+
+  AlertDrvKdPrint(("Freeing APC Object\n"));
+
+  ExFreePool(Apc);    /* free the kernel memory */
+
+  Timeout.QuadPart = 0;
+  KeDelayExecutionThread(UserMode, TRUE, &Timeout);
+
+  /*
+   * Another way for a thread to set itself in alertable state 
+   * (MSJ, Nerditorium, July 99):
+   *
+   * KeInitializeEvent(&event, SynchronizationEvent, FALSE);
+   * KeWaitForSingleObject(&event, Executive, UserMode, TRUE, &Timeout);
+   */
+
+  return;
+}
+
+
+void
+UserApcCallBack(PVOID arg1, PVOID arg2, PVOID arg3)
+{
+  return;
+}
+
+/* Function prototypes */
+
+NTSTATUS DriverEntry(IN PDRIVER_OBJECT  DriverObject,IN PUNICODE_STRING registryPath);
+NTSTATUS AlertDrvDispatch(IN PDEVICE_OBJECT DeviceObject,IN PIRP Irp);
+VOID AlertDrvUnload(IN PDRIVER_OBJECT DriverObject);
+NTSTATUS  AlertDrvSendTheSignal(PETHREAD Thread);
+
+
+NTSTATUS DriverEntry(IN PDRIVER_OBJECT  DriverObject, IN PUNICODE_STRING RegistryPath)
+{
+  PDEVICE_OBJECT deviceObject = NULL;
+  NTSTATUS       status;
+  WCHAR          deviceNameBuffer[] = ALERTDRV_DEVICE_NAME_U;
+  UNICODE_STRING deviceNameUnicodeString;
+  WCHAR          deviceLinkBuffer[] = ALERTDRV_DOS_DEVICE_NAME_U;
+  UNICODE_STRING deviceLinkUnicodeString;
+
+  AlertDrvKdPrint (("DriverEntry\n"));
+
+  RtlInitUnicodeString (&deviceNameUnicodeString, deviceNameBuffer);
+
+  status = IoCreateDevice (DriverObject,0,&deviceNameUnicodeString,
+                           FILE_DEVICE_ALERTDRV, 0,TRUE,&deviceObject);
+
+  if (!NT_SUCCESS(status))
+    {
+      AlertDrvKdPrint (("IoCreateDevice failed:%x\n", status));
+	  return status;
+	}
+
+  DriverObject->MajorFunction[IRP_MJ_CREATE]         =
+  DriverObject->MajorFunction[IRP_MJ_CLOSE]          =
+  DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = AlertDrvDispatch;
+  DriverObject->DriverUnload = AlertDrvUnload;
+
+  RtlInitUnicodeString(&deviceLinkUnicodeString,deviceLinkBuffer);
+  status = IoCreateSymbolicLink (&deviceLinkUnicodeString, &deviceNameUnicodeString);
+  if (!NT_SUCCESS(status))
+    {
+      AlertDrvKdPrint (("IoCreateSymbolicLink failed\n"));
+      IoDeleteDevice (deviceObject);
+    }
+
+  return status;
+}
+
+
+NTSTATUS AlertDrvDispatch(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
+{
+  PIO_STACK_LOCATION irpStack;
+  PVOID              ioBuffer;
+  ULONG              inputBufferLength;
+  ULONG              outputBufferLength;
+  ULONG              ioControlCode;
+  NTSTATUS           ntStatus;
+
+  PHANDLE				ph = NULL;
+  PETHREAD			uThread = NULL;
+
+  Irp->IoStatus.Status      = STATUS_SUCCESS;
+  Irp->IoStatus.Information = 0;
+
+  irpStack = IoGetCurrentIrpStackLocation(Irp);
+
+  ioBuffer           = Irp->AssociatedIrp.SystemBuffer;
+  inputBufferLength  = irpStack->Parameters.DeviceIoControl.InputBufferLength;
+  outputBufferLength = irpStack->Parameters.DeviceIoControl.OutputBufferLength;
+
+  switch (irpStack->MajorFunction)
+    {
+    case IRP_MJ_CREATE:
+      AlertDrvKdPrint (("IRP_MJ_CREATE\n"));
+      break;
+
+	case IRP_MJ_CLOSE:
+      AlertDrvKdPrint (("IRP_MJ_CLOSE\n"));
+      break;
+
+    case IRP_MJ_DEVICE_CONTROL:
+      ioControlCode = irpStack->Parameters.DeviceIoControl.IoControlCode;
+
+      switch (ioControlCode)
+        {
+        case IOCTL_ALERTDRV_SET_ALERTABLE2:
+          if (inputBufferLength >= sizeof(PVOID))
+            {
+              ph = (PHANDLE) ioBuffer;
+              Irp->IoStatus.Status = ObReferenceObjectByHandle(*((PHANDLE)ph),THREAD_ALL_ACCESS,NULL,UserMode,&uThread,NULL);
+
+              if (NT_ERROR(Irp->IoStatus.Status))
+                {
+                  AlertDrvKdPrint (("ObReferenceObjectByHandle Failed (%ld)\n", Irp->IoStatus.Status));
+                }
+              else
+                {
+                  AlertDrvKdPrint (("uThread = 0x%lx\n", uThread));
+
+                  Irp->IoStatus.Status = AlertDrvSendTheSignal(uThread);
+                  ObDereferenceObject((PVOID) uThread);
+                }
+             }
+          else
+            {
+              Irp->IoStatus.Status = STATUS_INVALID_PARAMETER;
+              AlertDrvKdPrint (("Invalid parameter passed!\n"));
+            }
+          break;
+
+        default:
+          AlertDrvKdPrint (("Unknown IRP_MJ_DEVICE_CONTROL\n"));
+          Irp->IoStatus.Status = STATUS_INVALID_PARAMETER;
+          break;
+
+        }
+
+      break;
+    }
+
+  ntStatus = Irp->IoStatus.Status;
+  IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+  return ntStatus;
+}
+
+
+VOID
+AlertDrvUnload(IN PDRIVER_OBJECT DriverObject)
+{
+  WCHAR                  deviceLinkBuffer[]  = ALERTDRV_DOS_DEVICE_NAME_U;
+  UNICODE_STRING         deviceLinkUnicodeString;
+
+  RtlInitUnicodeString (&deviceLinkUnicodeString, deviceLinkBuffer);
+  IoDeleteSymbolicLink (&deviceLinkUnicodeString);
+  IoDeleteDevice (DriverObject->DeviceObject);
+
+  AlertDrvKdPrint (("Driver has been unloaded\n"));
+
+  return;
+}
+
+
+NTSTATUS
+AlertDrvSendTheSignal(PETHREAD	uThread)
+{
+  NTSTATUS   ntStatus = STATUS_SUCCESS;
+  PKAPC      kApc;
+
+  /* Allocate an KAPC structure from NonPagedPool */
+  kApc = ExAllocatePool(NonPagedPool, sizeof(KAPC));
+  if (kApc == NULL)
+    {
+      AlertDrvKdPrint (("ExAllocatePool returned NULL\n"));
+      return !ntStatus;
+    }
+
+  KeInitializeApc(kApc,
+                  (PKTHREAD) uThread,
+                  0,
+                  (PKKERNEL_ROUTINE) &KernelApcCallBack,
+                  0,
+                  (PKNORMAL_ROUTINE) &UserApcCallBack,
+                  KernelMode,
+                  NULL);
+
+  KeInsertQueueApc (kApc, NULL, NULL, 0);
+
+  return ntStatus;
+}
\ No newline at end of file

Added: vendor/pthreads/current/QueueUserAPCEx/driver/alertdrv.ini
===================================================================
--- vendor/pthreads/current/QueueUserAPCEx/driver/alertdrv.ini	                        (rev 0)
+++ vendor/pthreads/current/QueueUserAPCEx/driver/alertdrv.ini	2008-02-22 17:25:55 UTC (rev 9491)
@@ -0,0 +1,5 @@
+\Registry\Machine\System\CurrentControlSet\Services\AlertDrv
+    Type = REG_DWORD 0x00000001
+    Start = REG_DWORD 0x00000003
+    Group = Extended Base
+    ErrorControl = REG_DWORD 0x00000001

Added: vendor/pthreads/current/QueueUserAPCEx/driver/alertdrv.rc
===================================================================
--- vendor/pthreads/current/QueueUserAPCEx/driver/alertdrv.rc	                        (rev 0)
+++ vendor/pthreads/current/QueueUserAPCEx/driver/alertdrv.rc	2008-02-22 17:25:55 UTC (rev 9491)
@@ -0,0 +1,10 @@
+#include <windows.h>
+
+#include <ntverp.h>
+
+#define	VER_FILETYPE	VFT_DRV
+#define	VER_FILESUBTYPE	VFT2_DRV_SYSTEM
+#define VER_FILEDESCRIPTION_STR     "Alert-Thread Driver 2.0"
+#define VER_INTERNALNAME_STR        "alertdrv.sys"
+
+#include "common.ver"

Added: vendor/pthreads/current/QueueUserAPCEx/driver/alertdrv.reg
===================================================================
(Binary files differ)


Property changes on: vendor/pthreads/current/QueueUserAPCEx/driver/alertdrv.reg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: vendor/pthreads/current/QueueUserAPCEx/driver/install.bat
===================================================================
--- vendor/pthreads/current/QueueUserAPCEx/driver/install.bat	                        (rev 0)
+++ vendor/pthreads/current/QueueUserAPCEx/driver/install.bat	2008-02-22 17:25:55 UTC (rev 9491)
@@ -0,0 +1,2 @@
+copy ..\execs\alertdrv.sys %windir%\system32\drivers
+regedit alertdrv.reg

Added: vendor/pthreads/current/QueueUserAPCEx/execs/alertdrv.sys
===================================================================
(Binary files differ)


Property changes on: vendor/pthreads/current/QueueUserAPCEx/execs/alertdrv.sys
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: vendor/pthreads/current/QueueUserAPCEx/testapp/QueueUserAPCEx.c
===================================================================
--- vendor/pthreads/current/QueueUserAPCEx/testapp/QueueUserAPCEx.c	                        (rev 0)
+++ vendor/pthreads/current/QueueUserAPCEx/testapp/QueueUserAPCEx.c	2008-02-22 17:25:55 UTC (rev 9491)
@@ -0,0 +1,170 @@
+/*
+ *      QueueUserAPCEx: Extending APCs on Windows Operating System (version 2.0)
+ *      Copyright(C) 2004 Panagiotis E. Hadjidoukas
+ *
+ *      Contact Email: peh at hpclab.ceid.upatras.gr, xdoukas at ceid.upatras.gr
+ *
+ *      QueueUserAPCEx is free software; you can redistribute it and/or
+ *      modify it under the terms of the GNU Lesser General Public
+ *      License as published by the Free Software Foundation; either
+ *      version 2 of the License, or (at your option) any later version.
+ *
+ *      QueueUserAPCEx is distributed in the hope that it will be useful,
+ *      but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *      Lesser General Public License for more details.
+ *
+ *      You should have received a copy of the GNU Lesser General Public
+ *      License along with QueueUserAPCEx in the file COPYING.LIB;
+ *      if not, write to the Free Software Foundation, Inc.,
+ *      59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ */
+
+#define _WIN32_WINNT 0x0500
+#include <windows.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <winioctl.h>
+
+#define FILE_DEVICE_ALERTDRV  0x00008005
+#define IOCTL_ALERTDRV_SET_ALERTABLE2 CTL_CODE(FILE_DEVICE_ALERTDRV, 0x800, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+
+
+static HANDLE hDevice = INVALID_HANDLE_VALUE;
+
+
+BOOL
+QueueUserAPCEx_Init(VOID)
+     /*
+      * ------------------------------------------------------
+      * DOCPUBLIC
+      *      This function initializes QueueUserAPCEx by opening a
+      *      handle to the kernel-mode device driver.
+      *
+      * PARAMETERS
+      *      None
+      *
+      * DESCRIPTION
+      *      This function initializes QueueUserAPCEx by opening a
+      *      handle to the kernel-mode device driver.
+      *
+      * RESULTS
+      * 	 1    Success
+      *      0    Failure: Error values can be retrieved by calling GetLastError
+      * ------------------------------------------------------
+      */
+{
+  if ((hDevice = CreateFile("\\\\.\\Global\\ALERTDRV",
+                    GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,
+                    FILE_ATTRIBUTE_NORMAL,NULL)) == INVALID_HANDLE_VALUE)
+    {
+      printf ("QueueUserAPCEx_Init failed: Can't get a handle to the ALERT driver\n");
+      return 0;
+    }
+
+  return 1;
+}
+
+
+BOOL
+QueueUserAPCEx_Fini(VOID)
+     /*
+      * ------------------------------------------------------
+      * DOCPUBLIC
+      *      This function shutdowns QueueUserAPCEx by closing the
+      *      handle to the kernel-mode device driver.
+      *
+      * PARAMETERS
+      *      None
+      *
+      * DESCRIPTION
+      *      This function shutdowns QueueUserAPCEx by closing the
+      *      handle to the kernel-mode device driver.
+      *
+      * RESULTS
+      * 	 1    Success
+      *      0    Failure: Error values can be retrieved by calling GetLastError
+      * ------------------------------------------------------
+      */
+{
+  return CloseHandle(hDevice);
+}
+
+DWORD QueueUserAPCEx(PAPCFUNC pfnApc, HANDLE hThread, DWORD dwData)
+     /*
+      * ------------------------------------------------------
+      * DOCPUBLIC
+      *      Adds a user-mode asynchronous procedure call (APC) object
+      *      to the APC queue of the specified thread AND sets this
+      *      thread in alertarte state.
+      *
+      * PARAMETERS
+      *      Uses the same parameters as QueueUserAPC.
+      *
+      * DESCRIPTION
+      *      Adds a user-mode asynchronous procedure call (APC) object
+      *      to the APC queue of the specified thread AND sets this
+      *      thread in alertarte state.
+      *
+      * RESULTS
+	  *		 1    Success
+	  *      0    Failure
+      * ------------------------------------------------------
+      */
+{
+  DWORD cbReturned;
+
+  /* trivial case */
+  if (hThread == GetCurrentThread())
+    {
+      if (!QueueUserAPC(pfnApc, hThread, dwData))
+        {
+	      return 0;
+        }
+
+      SleepEx(0, TRUE);
+      return 1;
+    }
+
+  if (INVALID_HANDLE_VALUE == hDevice
+      /* && !QueueUserAPCEx_Init() */
+      )
+    {
+      printf ("Can't get a handle to the ALERT driver\n");
+
+      return 0;
+    }
+
+  /* probably not necessary */
+  if (SuspendThread(hThread) == -1)
+    {
+      return 0;
+    }
+
+  /* Send the APC */
+  if (!QueueUserAPC(pfnApc, hThread, dwData))
+    {
+      return 0;
+    }
+
+  /* Ensure the execution of the APC */
+  if (DeviceIoControl (hDevice, (DWORD)IOCTL_ALERTDRV_SET_ALERTABLE2, &hThread, sizeof(HANDLE),
+		NULL, 0, &cbReturned, 0))
+    {
+	}
+  else
+    {
+      printf ("DeviceIoControl failed\n");
+      return 0;
+    }
+
+  /* Here, we could even cancel suspended threads */
+  ResumeThread(hThread);
+
+  return 1;
+}
+
+
+
+

Added: vendor/pthreads/current/QueueUserAPCEx/testapp/QueueUserAPCEx.h
===================================================================
--- vendor/pthreads/current/QueueUserAPCEx/testapp/QueueUserAPCEx.h	                        (rev 0)
+++ vendor/pthreads/current/QueueUserAPCEx/testapp/QueueUserAPCEx.h	2008-02-22 17:25:55 UTC (rev 9491)
@@ -0,0 +1,36 @@
+/*
+ *      QueueUserAPCEx: Extending APCs on Windows Operating System (version 2.0)
+ *      Copyright(C) 2004 Panagiotis E. Hadjidoukas
+ *
+ *      Contact Email: peh at hpclab.ceid.upatras.gr, xdoukas at ceid.upatras.gr
+ *
+ *      QueueUserAPCEx is free software; you can redistribute it and/or
+ *      modify it under the terms of the GNU Lesser General Public
+ *      License as published by the Free Software Foundation; either
+ *      version 2 of the License, or (at your option) any later version.
+ *
+ *      QueueUserAPCEx is distributed in the hope that it will be useful,
+ *      but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *      Lesser General Public License for more details.
+ *
+ *      You should have received a copy of the GNU Lesser General Public
+ *      License along with QueueUserAPCEx in the file COPYING.LIB;
+ *      if not, write to the Free Software Foundation, Inc.,
+ *      59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ */
+
+#if !defined( QUEUEUSERAPCEX_H )
+#define QUEUEUSERAPCEX_H
+
+#if !defined(_WIN32_WINNT)
+#define _WIN32_WINNT 0x0501
+#endif
+
+#include <windows.h>
+
+BOOL QueueUserAPCEx_Init(VOID);
+BOOL QueueUserAPCEx_Fini(VOID);
+DWORD QueueUserAPCEx(PAPCFUNC pfnApc, HANDLE hThread, DWORD dwData);
+
+#endif	/* QUEUEUSERAPCEX_H */
\ No newline at end of file

Added: vendor/pthreads/current/QueueUserAPCEx/testapp/testapp.c
===================================================================
--- vendor/pthreads/current/QueueUserAPCEx/testapp/testapp.c	                        (rev 0)
+++ vendor/pthreads/current/QueueUserAPCEx/testapp/testapp.c	2008-02-22 17:25:55 UTC (rev 9491)
@@ -0,0 +1,102 @@
+/*
+ *      QueueUserAPCEx: Extending APCs on Windows Operating System (version 2.0)
+ *      Copyright(C) 2004 Panagiotis E. Hadjidoukas
+ *
+ *      Contact Email: peh at hpclab.ceid.upatras.gr, xdoukas at ceid.upatras.gr
+ *
+ *      QueueUserAPCEx is free software; you can redistribute it and/or
+ *      modify it under the terms of the GNU Lesser General Public
+ *      License as published by the Free Software Foundation; either
+ *      version 2 of the License, or (at your option) any later version.
+ *
+ *      QueueUserAPCEx is distributed in the hope that it will be useful,
+ *      but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *      Lesser General Public License for more details.
+ *
+ *      You should have received a copy of the GNU Lesser General Public
+ *      License along with QueueUserAPCEx in the file COPYING.LIB;
+ *      if not, write to the Free Software Foundation, Inc.,
+ *      59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ */
+
+/* testapp.c : demo of QueueUserAPCEx */
+#define _WIN32_WINNT 0x0501
+#include <windows.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+ 
+#include "QueueUserApcEx.h"
+
+
+DWORD WINAPI TestSleep(LPVOID lpParam)
+{
+	printf("[Thread %4ld] Calling Sleep...\n", GetCurrentThreadId());
+	Sleep(INFINITE);
+	printf("[Thread %4ld] Exiting!\n", GetCurrentThreadId());
+
+	return 0;
+}
+
+DWORD WINAPI TestWait(LPVOID lpParam)
+{
+	HANDLE hEvent;
+	DWORD dwEvent;
+
+	hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
+
+	printf("[Thread %4ld] Calling WaitForSingleObject...\n", GetCurrentThreadId());
+	dwEvent = WaitForSingleObject(hEvent, INFINITE);
+	printf("[Thread %4ld] WaitForSingleObject returned %d\n", GetCurrentThreadId(), dwEvent); /* WAIT_IO_COMPLETION */
+	printf("[Thread %4ld] Exiting!\n", GetCurrentThreadId());
+
+	return 0;
+}
+
+DWORD WINAPI APCRoutine(DWORD APCParam)
+{
+	printf("[Thread %4ld] Inside APC routine with argument (%ld)\n", 
+		GetCurrentThreadId(), APCParam);
+	return 0;
+}
+ 
+int main(void)
+{
+	DWORD   APCData;
+	HANDLE  hThread;
+	ULONG   id;
+	INT     res;
+	
+	QueueUserAPCEx_Init();
+	printf("XXX [Thread %4ld] Starting\n", GetCurrentThreadId());
+
+	/* Test: send an APC to myself */ 
+	printf("[Thread %4ld] Sending an APC to myself\n", GetCurrentThreadId());
+	APCData = 33;
+	res= QueueUserAPCEx((PAPCFUNC) APCRoutine, GetCurrentThread(), APCData); 
+	
+
+	hThread= CreateThread(NULL, 0, TestSleep, NULL, 0, &id);
+	/* Sleep for a while; then send an APC to hThread */
+	Sleep(5000);
+	printf("[Thread %4ld] Sending an APC to the thread that called Sleep\n", GetCurrentThreadId());
+	APCData = 44;
+	res= QueueUserAPCEx((PAPCFUNC) APCRoutine, hThread, APCData); 
+	WaitForSingleObject(hThread, INFINITE);
+	
+
+	hThread= CreateThread(NULL, 0, TestWait, NULL, 0, &id);
+	/* Sleep for a while; then send an APC to hThread */
+	Sleep(5000);
+	printf("[Thread %4ld] Sending an APC to the thread that called WaitForSingleObject\n", GetCurrentThreadId());
+	APCData = 55;
+	res= QueueUserAPCEx((PAPCFUNC) APCRoutine, hThread, APCData); 
+	WaitForSingleObject(hThread, INFINITE);
+
+	printf("[Thread %4ld] Exiting\n", GetCurrentThreadId());
+
+	QueueUserAPCEx_Fini();
+
+	return 0;
+}

Added: vendor/pthreads/current/QueueUserAPCEx/testapp/testapp.dsp
===================================================================
--- vendor/pthreads/current/QueueUserAPCEx/testapp/testapp.dsp	                        (rev 0)
+++ vendor/pthreads/current/QueueUserAPCEx/testapp/testapp.dsp	2008-02-22 17:25:55 UTC (rev 9491)
@@ -0,0 +1,99 @@
+# Microsoft Developer Studio Project File - Name="testapp" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=testapp - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE 
+!MESSAGE NMAKE /f "testapp.mak".
+!MESSAGE 
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "testapp.mak" CFG="testapp - Win32 Debug"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "testapp - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "testapp - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE 
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+F90=df.exe
+RSC=rc.exe
+
+!IF  "$(CFG)" == "testapp - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE F90 /compile_only /include:"Release/" /nologo /warn:nofileopt
+# ADD F90 /compile_only /include:"Release/" /nologo /warn:nofileopt
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I "c:/pthread/include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x1809 /d "NDEBUG"
+# ADD RSC /l 0x1809 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+
+!ELSEIF  "$(CFG)" == "testapp - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE F90 /check:bounds /compile_only /debug:full /include:"Debug/" /nologo /warn:argument_checking /warn:nofileopt
+# ADD F90 /check:bounds /compile_only /debug:full /include:"Debug/" /nologo /warn:argument_checking /warn:nofileopt
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "c:/pthread/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x1809 /d "_DEBUG"
+# ADD RSC /l 0x1809 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib ws2_32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+
+!ENDIF 
+
+# Begin Target
+
+# Name "testapp - Win32 Release"
+# Name "testapp - Win32 Debug"
+# Begin Source File
+
+SOURCE=.\QueueUserApcEx.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\testapp.c
+# End Source File
+# End Target
+# End Project

Added: vendor/pthreads/current/QueueUserAPCEx/user/GNUmakefile
===================================================================
--- vendor/pthreads/current/QueueUserAPCEx/user/GNUmakefile	                        (rev 0)
+++ vendor/pthreads/current/QueueUserAPCEx/user/GNUmakefile	2008-02-22 17:25:55 UTC (rev 9491)
@@ -0,0 +1,66 @@
+#
+# --------------------------------------------------------------------------
+#
+#      QueueUserEx GNU make Makefile
+# 
+
+# If Running MsysDTK
+RM	= rm -f
+MV	= mv -f
+CP	= cp -f
+
+# If not.
+#RM	= erase
+#MV	= rename
+#CP	= copy
+
+AR	= ar
+
+CC	= gcc
+#OPT	= -g
+OPT	= -O3
+
+LFLAGS		= 
+
+GC_CFLAGS	= 
+GCE_CFLAGS	= 
+
+MAKE		= make
+CFLAGS	= $(OPT) -I. -D_WIN32_WINNT=0x501 -Wall
+
+DLL_INLINED_OBJS	= \
+		pthread.o
+
+# Agregate modules for inlinability
+DLL_OBJS	= QueueUserAPCEx.o
+
+DLL		= quserex.dll
+LIB		= libquserex.a
+
+$(DLL): $(DLL_OBJS)
+	$(CC) $(OPT) -shared -o $(DLL) $(DLL_OBJS) $(LFLAGS)
+	dlltool -z quserex.def $(DLL_OBJS)
+	dlltool -k --dllname $@ --output-lib $(LIB) --def quserex.def
+
+%.pre: %.c
+	$(CC) -E -o $@ $(CFLAGS) $^
+
+%.s: %.c
+	$(CC) -c $(CFLAGS) -Wa,-ahl $^ > $@
+
+.SUFFIXES: .dll .c .o
+
+.c.o:;	$(CC) -c -o $@ $(CFLAGS) $<
+
+clean:
+	-$(RM) *~
+	-$(RM) *.i
+	-$(RM) *.o
+	-$(RM) *.obj
+	-$(RM) *.exe
+	-$(RM) quserex.def
+
+realclean: clean
+	-$(RM) $(LIB)
+	-$(RM) $(DLL)
+

Added: vendor/pthreads/current/QueueUserAPCEx/user/Makefile
===================================================================
--- vendor/pthreads/current/QueueUserAPCEx/user/Makefile	                        (rev 0)
+++ vendor/pthreads/current/QueueUserAPCEx/user/Makefile	2008-02-22 17:25:55 UTC (rev 9491)
@@ -0,0 +1,31 @@
+
+DLL	= quserex.dll
+
+OPTIM	= /O2
+
+CFLAGS	= /W3 /MD /nologo /Yd /Zi /I.
+
+DLL_OBJS	= QueueUserAPCEx.obj
+
+$(DLL): $(DLL_OBJS)
+	cl /LD /Zi /nologo $(DLL_OBJS) \
+		/link /nodefaultlib:libcmt /implib:$*.lib \
+		msvcrt.lib /out:$@
+
+realclean: clean
+	if exist *.dll del *.dll
+	if exist *.lib del *.lib
+
+clean:
+	if exist *.obj del *.obj
+	if exist *.ilk del *.ilk
+	if exist *.pdb del *.pdb
+	if exist *.exp del *.exp
+	if exist *.o del *.o
+	if exist *.i del *.i
+
+.c.obj:
+	cl $(OPTIM) $(CFLAGS) -c $<
+
+.c.i:
+	cl /P /O2 /Ob1 $<

Added: vendor/pthreads/current/QueueUserAPCEx/user/QueueUserAPCEx.c
===================================================================
--- vendor/pthreads/current/QueueUserAPCEx/user/QueueUserAPCEx.c	                        (rev 0)
+++ vendor/pthreads/current/QueueUserAPCEx/user/QueueUserAPCEx.c	2008-02-22 17:25:55 UTC (rev 9491)
@@ -0,0 +1,163 @@
+/*
+ *      QueueUserAPCEx: Extending APCs on Windows Operating System (version 2.0)
+ *      Copyright(C) 2004 Panagiotis E. Hadjidoukas
+ *
+ *      Contact Email: peh at hpclab.ceid.upatras.gr, xdoukas at ceid.upatras.gr
+ *
+ *      QueueUserAPCEx is free software; you can redistribute it and/or
+ *      modify it under the terms of the GNU Lesser General Public
+ *      License as published by the Free Software Foundation; either
+ *      version 2 of the License, or (at your option) any later version.
+ *
+ *      QueueUserAPCEx is distributed in the hope that it will be useful,
+ *      but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *      Lesser General Public License for more details.
+ *
+ *      You should have received a copy of the GNU Lesser General Public
+ *      License along with QueueUserAPCEx in the file COPYING.LIB;
+ *      if not, write to the Free Software Foundation, Inc.,
+ *      59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ */
+
+#define _WIN32_WINNT 0x0500
+#include <windows.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <winioctl.h>
+
+#define FILE_DEVICE_ALERTDRV  0x00008005
+#define IOCTL_ALERTDRV_SET_ALERTABLE2 CTL_CODE(FILE_DEVICE_ALERTDRV, 0x800, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+
+
+static HANDLE hDevice = INVALID_HANDLE_VALUE;
+
+
+__declspec (dllexport) BOOL
+QueueUserAPCEx_Init(VOID)
+     /*
+      * ------------------------------------------------------
+      * DOCPUBLIC
+      *      This function initializes QueueUserAPCEx by opening a
+      *      handle to the kernel-mode device driver.
+      *
+      * PARAMETERS
+      *      None
+      *
+      * DESCRIPTION
+      *      This function initializes QueueUserAPCEx by opening a
+      *      handle to the kernel-mode device driver.
+      *
+      * RESULTS
+      * 	 1    Success
+      *      0    Failure: Error values can be retrieved by calling GetLastError
+      * ------------------------------------------------------
+      */
+{
+  if ((hDevice = CreateFile("\\\\.\\Global\\ALERTDRV",
+                    GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,
+                    FILE_ATTRIBUTE_NORMAL,NULL)) == INVALID_HANDLE_VALUE)
+    {
+      return 0;
+    }
+
+  return 1;
+}
+
+
+__declspec (dllexport) BOOL
+QueueUserAPCEx_Fini(VOID)
+     /*
+      * ------------------------------------------------------
+      * DOCPUBLIC
+      *      This function shutdowns QueueUserAPCEx by closing the
+      *      handle to the kernel-mode device driver.
+      *
+      * PARAMETERS
+      *      None
+      *
+      * DESCRIPTION
+      *      This function shutdowns QueueUserAPCEx by closing the
+      *      handle to the kernel-mode device driver.
+      *
+      * RESULTS
+      * 	 1    Success
+      *      0    Failure: Error values can be retrieved by calling GetLastError
+      * ------------------------------------------------------
+      */
+{
+  return CloseHandle(hDevice);
+}
+
+__declspec (dllexport) DWORD
+QueueUserAPCEx(PAPCFUNC pfnApc, HANDLE hThread, DWORD dwData)
+     /*
+      * ------------------------------------------------------
+      * DOCPUBLIC
+      *      Adds a user-mode asynchronous procedure call (APC) object
+      *      to the APC queue of the specified thread AND sets this
+      *      thread in alertarte state.
+      *
+      * PARAMETERS
+      *      Uses the same parameters as QueueUserAPC.
+      *
+      * DESCRIPTION
+      *      Adds a user-mode asynchronous procedure call (APC) object
+      *      to the APC queue of the specified thread AND sets this
+      *      thread in alertarte state.
+      *
+      * RESULTS
+	  *		 1    Success
+	  *      0    Failure
+      * ------------------------------------------------------
+      */
+{
+  DWORD cbReturned;
+
+  /* trivial case */
+  if (hThread == GetCurrentThread())
+    {
+      if (!QueueUserAPC(pfnApc, hThread, dwData))
+        {
+	      return 0;
+        }
+
+      SleepEx(0, TRUE);
+      return 1;
+    }
+
+  if (INVALID_HANDLE_VALUE == hDevice
+      /* && !QueueUserAPCEx_Init() */
+      )
+    {
+      return 0;
+    }
+
+  /* probably not necessary */
+  if (SuspendThread(hThread) == -1)
+    {
+      return 0;
+    }
+
+  /* Send the APC */
+  if (!QueueUserAPC(pfnApc, hThread, dwData))
+    {
+      return 0;
+    }
+
+  /* Ensure the execution of the APC */
+  if (DeviceIoControl (hDevice, (DWORD)IOCTL_ALERTDRV_SET_ALERTABLE2, &hThread, sizeof(HANDLE),
+		NULL, 0, &cbReturned, 0))
+    {
+	}
+  else
+    {
+      return 0;
+    }
+
+  /* Here, we could even cancel suspended threads */
+  ResumeThread(hThread);
+
+  return 1;
+}

Added: vendor/pthreads/current/QueueUserAPCEx/user/QueueUserAPCEx.h
===================================================================
--- vendor/pthreads/current/QueueUserAPCEx/user/QueueUserAPCEx.h	                        (rev 0)
+++ vendor/pthreads/current/QueueUserAPCEx/user/QueueUserAPCEx.h	2008-02-22 17:25:55 UTC (rev 9491)
@@ -0,0 +1,36 @@
+/*
+ *      QueueUserAPCEx: Extending APCs on Windows Operating System (version 2.0)
+ *      Copyright(C) 2004 Panagiotis E. Hadjidoukas
+ *
+ *      Contact Email: peh at hpclab.ceid.upatras.gr, xdoukas at ceid.upatras.gr
+ *
+ *      QueueUserAPCEx is free software; you can redistribute it and/or
+ *      modify it under the terms of the GNU Lesser General Public
+ *      License as published by the Free Software Foundation; either
+ *      version 2 of the License, or (at your option) any later version.
+ *
+ *      QueueUserAPCEx is distributed in the hope that it will be useful,
+ *      but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *      Lesser General Public License for more details.
+ *
+ *      You should have received a copy of the GNU Lesser General Public
+ *      License along with QueueUserAPCEx in the file COPYING.LIB;
+ *      if not, write to the Free Software Foundation, Inc.,
+ *      59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ */
+
+#if !defined( QUEUEUSERAPCEX_H )
+#define QUEUEUSERAPCEX_H
+
+#if !defined(_WIN32_WINNT)
+#define _WIN32_WINNT 0x0501
+#endif
+
+#include <windows.h>
+
+BOOL  QueueUserAPCEx_Init(VOID);
+BOOL  QueueUserAPCEx_Fini(VOID);
+DWORD QueueUserAPCEx(PAPCFUNC pfnApc, HANDLE hThread, DWORD dwData);
+
+#endif	/* QUEUEUSERAPCEX_H */

Added: vendor/pthreads/current/QueueUserAPCEx/user/quserex.lib
===================================================================
(Binary files differ)


Property changes on: vendor/pthreads/current/QueueUserAPCEx/user/quserex.lib
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: vendor/pthreads/current/pthreads.2/ANNOUNCE
===================================================================
--- vendor/pthreads/current/pthreads.2/ANNOUNCE	                        (rev 0)
+++ vendor/pthreads/current/pthreads.2/ANNOUNCE	2008-02-22 17:25:55 UTC (rev 9491)
@@ -0,0 +1,476 @@
+	     PTHREADS-WIN32 RELEASE 2.8.0 (2006-12-22)
+	     -----------------------------------------
+	 Web Site: http://sources.redhat.com/pthreads-win32/
+	FTP Site: ftp://sources.redhat.com/pub/pthreads-win32
+	 Maintainer: Ross Johnson <rpj at callisto.canberra.edu.au>
+
+
+We are pleased to announce the availability of a new release of
+Pthreads-win32, an Open Source Software implementation of the
+Threads component of the POSIX 1003.1 2001 Standard for Microsoft's
+Win32 environment. Some functions from other sections of POSIX
+1003.1 2001 are also supported including semaphores and scheduling
+functions.
+
+Some common non-portable functions are also implemented for
+additional compatibility, as are a few functions specific
+to pthreads-win32 for easier integration with Win32 applications.
+
+Pthreads-win32 is free software, distributed under the GNU Lesser
+General Public License (LGPL).
+
+
+Acknowledgements
+----------------
+This library is based originally on a Win32 pthreads
+implementation contributed by John Bossom <John.Bossom at cognos.com>.
+
+The implementation of Condition Variables uses algorithms developed
+by Alexander Terekhov and Louis Thomas.
+
+The implementation of POSIX mutexes has been improved by Thomas Pfaff
+and later by Alexander Terekhov.
+
+The implementation of Spinlocks and Barriers was contributed
+by Ross Johnson.
+
+The implementation of read/write locks was contributed by
+Aurelio Medina and improved by Alexander Terekhov.
+
+Many others have contributed significant time and effort to solve crutial
+problems in order to make the library workable, robust and reliable.
+
+Thanks to Xavier Leroy for granting permission to use and modify his
+LinuxThreads manual pages.
+
+Thanks to The Open Group for making the Single Unix Specification
+publicly available - many of the manual pages included in the package
+were extracted from it.
+
+There is also a separate CONTRIBUTORS file. This file and others are
+on the web site:
+
+	http://sources.redhat.com/pthreads-win32
+
+As much as possible, the ChangeLog file acknowledges contributions to the
+code base in more detail.
+
+
+Changes since the last release
+------------------------------
+These are now documented in the NEWS file.
+See the ChangeLog file also.
+
+
+Known Bugs
+----------
+These are now documented in the BUGS file.
+
+
+Level of standards conformance
+------------------------------
+
+The following POSIX 1003.1 2001 options are defined and set to 200112L:
+
+      _POSIX_THREADS
+      _POSIX_THREAD_SAFE_FUNCTIONS
+      _POSIX_THREAD_ATTR_STACKSIZE
+      _POSIX_THREAD_PRIORITY_SCHEDULING
+      _POSIX_SEMAPHORES
+      _POSIX_READER_WRITER_LOCKS
+      _POSIX_SPIN_LOCKS
+      _POSIX_BARRIERS
+
+
+The following POSIX 1003.1 2001 options are defined and set to -1:
+
+      _POSIX_THREAD_ATTR_STACKADDR
+      _POSIX_THREAD_PRIO_INHERIT
+      _POSIX_THREAD_PRIO_PROTECT
+      _POSIX_THREAD_PROCESS_SHARED
+
+
+The following POSIX 1003.1 2001 limits are defined and set:
+
+      _POSIX_THREAD_THREADS_MAX
+      _POSIX_SEM_VALUE_MAX
+      _POSIX_SEM_NSEMS_MAX
+      _POSIX_THREAD_KEYS_MAX
+      _POSIX_THREAD_DESTRUCTOR_ITERATIONS
+      PTHREAD_STACK_MIN
+      PTHREAD_THREADS_MAX
+      SEM_VALUE_MAX
+      SEM_NSEMS_MAX
+      PTHREAD_KEYS_MAX
+      PTHREAD_DESTRUCTOR_ITERATIONS
+
+
+The following functions are implemented:
+
+      ---------------------------
+      PThreads
+      ---------------------------
+      pthread_attr_init
+      pthread_attr_destroy
+      pthread_attr_getdetachstate
+      pthread_attr_getstackaddr
+      pthread_attr_getstacksize
+      pthread_attr_setdetachstate
+      pthread_attr_setstackaddr
+      pthread_attr_setstacksize
+
+      pthread_create
+      pthread_detach
+      pthread_equal
+      pthread_exit
+      pthread_join
+      pthread_once
+      pthread_self
+
+      pthread_cancel
+      pthread_cleanup_pop
+      pthread_cleanup_push
+      pthread_setcancelstate
+      pthread_setcanceltype
+      pthread_testcancel
+
+      ---------------------------
+      Thread Specific Data
+      ---------------------------
+      pthread_key_create
+      pthread_key_delete
+      pthread_setspecific
+      pthread_getspecific
+
+      ---------------------------
+      Mutexes
+      ---------------------------
+      pthread_mutexattr_init
+      pthread_mutexattr_destroy
+      pthread_mutexattr_getpshared
+      pthread_mutexattr_setpshared
+      pthread_mutexattr_gettype
+      pthread_mutexattr_settype (types: PTHREAD_MUTEX_DEFAULT
+					PTHREAD_MUTEX_NORMAL
+					PTHREAD_MUTEX_ERRORCHECK
+					PTHREAD_MUTEX_RECURSIVE  )
+      pthread_mutex_init
+      pthread_mutex_destroy
+      pthread_mutex_lock
+      pthread_mutex_trylock
+      pthread_mutex_timedlock
+      pthread_mutex_unlock
+
+      ---------------------------
+      Condition Variables
+      ---------------------------
+      pthread_condattr_init
+      pthread_condattr_destroy
+      pthread_condattr_getpshared
+      pthread_condattr_setpshared
+
+      pthread_cond_init
+      pthread_cond_destroy
+      pthread_cond_wait
+      pthread_cond_timedwait
+      pthread_cond_signal
+      pthread_cond_broadcast
+
+      ---------------------------
+      Read/Write Locks
+      ---------------------------
+      pthread_rwlock_init
+      pthread_rwlock_destroy
+      pthread_rwlock_tryrdlock
+      pthread_rwlock_trywrlock
+      pthread_rwlock_rdlock
+      pthread_rwlock_timedrdlock
+      pthread_rwlock_rwlock
+      pthread_rwlock_timedwrlock
+      pthread_rwlock_unlock
+      pthread_rwlockattr_init
+      pthread_rwlockattr_destroy
+      pthread_rwlockattr_getpshared
+      pthread_rwlockattr_setpshared
+
+      ---------------------------
+      Spin Locks
+      ---------------------------
+      pthread_spin_init
+      pthread_spin_destroy
+      pthread_spin_lock
+      pthread_spin_unlock
+      pthread_spin_trylock
+
+      ---------------------------
+      Barriers
+      ---------------------------
+      pthread_barrier_init
+      pthread_barrier_destroy
+      pthread_barrier_wait
+      pthread_barrierattr_init
+      pthread_barrierattr_destroy
+      pthread_barrierattr_getpshared
+      pthread_barrierattr_setpshared
+
+      ---------------------------
+      Semaphores
+      ---------------------------
+      sem_init
+      sem_destroy
+      sem_post
+      sem_wait
+      sem_trywait
+      sem_timedwait
+      sem_getvalue	     (# free if +ve, # of waiters if -ve)
+      sem_open		     (returns an error ENOSYS)
+      sem_close 	     (returns an error ENOSYS)
+      sem_unlink	     (returns an error ENOSYS)
+
+      ---------------------------
+      RealTime Scheduling
+      ---------------------------
+      pthread_attr_getschedparam
+      pthread_attr_setschedparam
+      pthread_attr_getinheritsched
+      pthread_attr_setinheritsched
+      pthread_attr_getschedpolicy (only supports SCHED_OTHER)
+      pthread_attr_setschedpolicy (only supports SCHED_OTHER)
+      pthread_getschedparam
+      pthread_setschedparam
+      pthread_getconcurrency
+      pthread_setconcurrency
+      pthread_attr_getscope
+      pthread_attr_setscope  (only supports PTHREAD_SCOPE_SYSTEM)
+      sched_get_priority_max
+      sched_get_priority_min
+      sched_rr_get_interval  (returns an error ENOTSUP)
+      sched_setscheduler     (only supports SCHED_OTHER)
+      sched_getscheduler     (only supports SCHED_OTHER)
+      sched_yield
+
+      ---------------------------
+      Signals
+      ---------------------------
+      pthread_sigmask
+      pthread_kill           (only supports zero sig value,
+                              for thread validity checking)
+
+      ---------------------------
+      Non-portable routines (see the README.NONPORTABLE file for usage)
+      ---------------------------
+      pthread_getw32threadhandle_np
+      pthread_timechange_handler_np
+      pthread_delay_np
+      pthread_mutexattr_getkind_np
+      pthread_mutexattr_setkind_np	(types: PTHREAD_MUTEX_FAST_NP,
+						PTHREAD_MUTEX_ERRORCHECK_NP,
+						PTHREAD_MUTEX_RECURSIVE_NP,
+						PTHREAD_MUTEX_ADAPTIVE_NP,
+						PTHREAD_MUTEX_TIMED_NP)
+      pthread_num_processors_np
+      pthread_win32_process_attach_np	(Required when statically linking
+                                         the library)
+      pthread_win32_process_detach_np	(Required when statically linking
+                                         the library)
+      pthread_win32_thread_attach_np	(Required when statically linking
+                                         the library)
+      pthread_win32_thread_detach_np	(Required when statically linking
+                                         the library)
+
+      ---------------------------
+      Static Initializers
+      ---------------------------
+      PTHREAD_ONCE_INIT
+      PTHREAD_MUTEX_INITIALIZER
+      PTHREAD_RECURSIVE_MUTEX_INITIALIZER
+      PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
+      PTHREAD_ERRORCHECK_MUTEX_INITIALIZER
+      PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP
+      PTHREAD_COND_INITIALIZER
+      PTHREAD_RWLOCK_INITIALIZER
+      PTHREAD_SPINLOCK_INITIALIZER
+
+      ---------------------------
+      Thread-Safe C Runtime Library (macros)
+      ---------------------------
+      strtok_r
+      asctime_r
+      ctime_r
+      gmtime_r
+      localtime_r
+      rand_r
+
+
+The following functions are not implemented:
+      
+      ---------------------------
+      RealTime Scheduling
+      ---------------------------
+      pthread_mutex_getprioceiling
+      pthread_mutex_setprioceiling
+      pthread_mutex_attr_getprioceiling
+      pthread_mutex_attr_getprotocol
+      pthread_mutex_attr_setprioceiling
+      pthread_mutex_attr_setprotocol
+
+      ---------------------------
+      Fork Handlers
+      ---------------------------
+      pthread_atfork
+
+      ---------------------------
+      Stdio
+      --------------------------- 
+      flockfile
+      ftrylockfile
+      funlockfile
+      getc_unlocked
+      getchar_unlocked	
+      putc_unlocked
+      putchar_unlocked
+
+      ---------------------------
+      Thread-Safe C Runtime Library
+      ---------------------------
+      readdir_r
+      getgrgid_r
+      getgrnam_r
+      getpwuid_r
+      getpwnam_r
+      
+      ---------------------------
+      Signals
+      ---------------------------
+      sigtimedwait
+      sigwait
+      sigwaitinfo
+
+      ---------------------------
+      General
+      ---------------------------
+      sysconf      
+
+The library includes two non-API functions for creating cancellation
+points in applications and libraries:
+      
+      pthreadCancelableWait
+      pthreadCancelableTimedWait
+
+      
+Availability
+------------ 
+
+The prebuilt DLL, export libs (for both MSVC and Mingw32), and the header
+files (pthread.h, semaphore.h, sched.h) are available along with the
+complete source code.
+
+The source code can be found at:
+
+	ftp://sources.redhat.com/pub/pthreads-win32
+
+and as individual source code files at
+
+	ftp://sources.redhat.com/pub/pthreads-win32/source
+
+The pre-built DLL, export libraries and include files can be found at:
+
+	ftp://sources.redhat.com/pub/pthreads-win32/dll-latest
+
+
+      
+Mailing List 
+------------  
+      
+There is a mailing list for discussing pthreads on Win32. To join,
+send email to:
+
+	pthreads-win32-subscribe at sourceware.cygnus.com
+      
+
+Application Development Environments
+------------------------------------
+
+See the README file for more information.
+      
+MSVC:
+MSVC using SEH works. Distribute pthreadVSE.dll with your application.
+MSVC using C++ EH works. Distribute pthreadVCE.dll with your application.
+MSVC using C setjmp/longjmp works. Distribute pthreadVC.dll with your application.
+
+
+Mingw32:
+See the FAQ, Questions 6 and 10.
+
+Mingw using C++ EH works. Distribute pthreadGCE.dll with your application.
+Mingw using C setjmp/longjmp works. Distribute pthreadGC.dll with your application.
+
+
+Cygwin: (http://sourceware.cygnus.com/cygwin/)
+Developers using Cygwin will not need pthreads-win32 since it has POSIX threads
+support. Refer to its documentation for details and extent.
+
+
+UWIN:
+UWIN is a complete Unix-like environment for Windows from AT&T. Pthreads-win32
+doesn't currently support UWIN (and vice versa), but that may change in the
+future.
+
+Generally:
+For convenience, the following pre-built files are available on the FTP site
+(see Availability above):
+
+	pthread.h	- for POSIX 1c threads
+	semaphore.h	- for POSIX 1b semaphores
+	sched.h 	- for POSIX 1b scheduling
+	pthreadVCE.dll	- built with MSVC++ compiler using C++ EH
+	pthreadVCE.lib
+	pthreadVC.dll	- built with MSVC compiler using C setjmp/longjmp
+	pthreadVC.lib
+	pthreadVSE.dll	- built with MSVC compiler using SEH
+	pthreadVSE.lib
+	pthreadGCE.dll	- built with Mingw32 G++ 2.95.2-1
+	pthreadGC.dll	- built with Mingw32 GCC 2.95.2-1 using setjmp/longjmp
+	libpthreadGCE.a - derived from pthreadGCE.dll
+	libpthreadGC.a	- derived from pthreadGC.dll
+	gcc.dll 	- needed if distributing applications that use
+			  pthreadGCE.dll (but see the FAQ Q 10 for the latest
+			  related information)
+
+These are the only files you need in order to build POSIX threads
+applications for Win32 using either MSVC or Mingw32.
+
+See the FAQ file in the source tree for additional information.
+
+
+Documentation
+-------------
+
+For the authoritative reference, see the online POSIX
+standard reference at:
+
+       http://www.OpenGroup.org
+
+For POSIX Thread API programming, several reference books are
+available:
+
+       Programming with POSIX Threads
+       David R. Butenhof
+       Addison-Wesley (pub)
+
+       Pthreads Programming
+       By Bradford Nichols, Dick Buttlar & Jacqueline Proulx Farrell
+       O'Reilly (pub)
+
+On the web: see the links at the bottom of the pthreads-win32 site:
+
+       http://sources.redhat.com/pthreads-win32/
+
+       Currently, there is no documentation included in the package apart
+       from the copious comments in the source code.
+
+
+
+Enjoy!
+
+Ross Johnson

Added: vendor/pthreads/current/pthreads.2/BUGS
===================================================================
--- vendor/pthreads/current/pthreads.2/BUGS	                        (rev 0)
+++ vendor/pthreads/current/pthreads.2/BUGS	2008-02-22 17:25:55 UTC (rev 9491)
@@ -0,0 +1,133 @@
+----------
+Known bugs
+----------
+
+1. Not strictly a bug, more of a gotcha.
+
+   Under MS VC++ (only tested with version 6.0), a term_func
+   set via the standard C++ set_terminate() function causes the
+   application to abort.
+
+   Notes from the MSVC++ manual:
+         1) A term_func() should call exit(), otherwise
+            abort() will be called on return to the caller.
+            A call to abort() raises SIGABRT and the default signal handler
+            for all signals terminates the calling program with
+            exit code 3.
+         2) A term_func() must not throw an exception. Therefore
+            term_func() should not call pthread_exit(), which
+            works by throwing an exception (pthreadVCE or pthreadVSE)
+            or by calling longjmp (pthreadVC).
+
+   Workaround: avoid using pthread_exit() in C++ applications. Exit
+   threads by dropping through the end of the thread routine.
+
+2. Cancellation problems in optimised code
+   - Milan Gardian
+
+   This is suspected to be a compiler bug in VC6.0, and also seen in
+   VC7.0 and VS .NET 2003. The GNU C++ compiler does not have a problem
+   with this, and it has been reported that the Intel C++ 8.1 compiler
+   and Visual C++ 2005 Express Edition Beta2 pass tests\semaphore4.c
+   (which exposes the bug).
+
+   Workaround [rpj - 2 Feb 2002]
+   -----------------------------
+   [Please note: this workaround did not solve a similar problem in
+   snapshot-2004-11-03 or later, even though similar symptoms were seen.
+   tests\semaphore4.c fails in that snapshot for the VCE version of the
+   DLL.]
+
+   The problem disappears when /Ob0 is used, i.e. /O2 /Ob0 works OK,
+   but if you want to use inlining optimisation you can be much more
+   specific about where it's switched off and on by using a pragma.
+
+   So the inlining optimisation is interfering with the way that cleanup
+   handlers are run. It appears to relate to auto-inlining of class methods
+   since this is the only auto inlining that is performed at /O1 optimisation
+   (functions with the "inline" qualifier are also inlined, but the problem
+   doesn't appear to involve any such functions in the library or testsuite).
+
+   In order to confirm the inlining culprit, the following use of pragmas
+   eliminate the problem but I don't know how to make it transparent, putting
+   it in, say, pthread.h where pthread_cleanup_push defined as a macro.
+
+   #pragma inline_depth(0)
+     pthread_cleanup_push(handlerFunc, (void *) &arg);
+
+        /* ... */
+
+     pthread_cleanup_pop(0);
+   #pragma inline_depth()
+
+   Note the empty () pragma value after the pop macro. This resets depth to the
+   default. Or you can specify a non-zero depth here.
+
+   The pragma is also needed (and now used) within the library itself wherever
+   cleanup handlers are used (condvar.c and rwlock.c).
+
+   Use of these pragmas allows compiler optimisations /O1 and /O2 to be
+   used for either or both the library and applications.
+
+   Experimenting further, I found that wrapping the actual cleanup handler
+   function with #pragma auto_inline(off|on) does NOT work.
+
+   MSVC6.0 doesn't appear to support the C99 standard's _Pragma directive,
+   however, later versions may. This form is embeddable inside #define
+   macros, which would be ideal because it would mean that it could be added
+   to the push/pop macro definitions in pthread.h and hidden from the
+   application programmer.
+
+   [/rpj]
+
+   Original problem description
+   ----------------------------
+
+   The cancellation (actually, cleanup-after-cancel) tests fail when using VC
+   (professional) optimisation switches (/O1 or /O2) in pthreads library. I
+   have not investigated which concrete optimisation technique causes this
+   problem (/Og, /Oi, /Ot, /Oy, /Ob1, /Gs, /Gf, /Gy, etc.), but here is a
+   summary of builds and corresponding failures:
+
+     * pthreads VSE (optimised tests): OK
+     * pthreads VCE (optimised tests): Failed "cleanup1" test (runtime)
+
+     * pthreads VSE (DLL in CRT, optimised tests): OK
+     * pthreads VCE (DLL in CRT, optimised tests): Failed "cleanup1" test
+   (runtime)
+
+   Please note that while in VSE version of the pthreads library the
+   optimisation does not really have any impact on the tests (they pass OK), in
+   VCE version addition of optimisation (/O2 in this case) causes the tests to
+   fail uniformly - either in "cleanup0" or "cleanup1" test cases.
+
+   Please note that all the tests above use default pthreads DLL (no
+   optimisations, linked with either static or DLL CRT, based on test type).
+   Therefore the problem lies not within the pthreads DLL but within the
+   compiled client code (the application using pthreads -> involvement of
+   "pthread.h").
+
+   I think the message of this section is that usage of VCE version of pthreads
+   in applications relying on cancellation/cleanup AND using optimisations for
+   creation of production code is highly unreliable for the current version of
+   the pthreads library.
+
+3. The Borland Builder 5.5 version of the library produces memory read exceptions
+in some tests.
+
+4. pthread_barrier_wait() can deadlock if the number of potential calling
+threads for a particular barrier is greater than the barrier count parameter
+given to pthread_barrier_init() for that barrier.
+
+This is due to the very lightweight implementation of pthread-win32 barriers.
+To cope with more than "count" possible waiters, barriers must effectively
+implement all the same safeguards as condition variables, making them much
+"heavier" than at present.
+
+The workaround is to ensure that no more than "count" threads attempt to wait
+at the barrier.
+
+5. Canceling a thread blocked on pthread_once appears not to work in the MSVC++
+version of the library "pthreadVCE.dll". The test case "once3.c" hangs. I have no
+clues on this at present. All other versions pass this test ok - pthreadsVC.dll,
+pthreadsVSE.dll, pthreadsGC.dll and pthreadsGCE.dll. 

Added: vendor/pthreads/current/pthreads.2/Bmakefile
===================================================================
--- vendor/pthreads/current/pthreads.2/Bmakefile	                        (rev 0)
+++ vendor/pthreads/current/pthreads.2/Bmakefile	2008-02-22 17:25:55 UTC (rev 9491)
@@ -0,0 +1,266 @@
+# This makefile is compatible with BCB make.  Use "make -fBMakefile" to compile.
+# 
+# The variables $DLLDEST and $LIBDEST hold the destination directories for the
+# dll and the lib, respectively. Probably all that needs to change is $DEVROOT.
+#
+# Currently only the recommended pthreadBC.dll is built by this makefile.
+#
+
+
+DLL_VER	= 2
+
+DEVROOT	= .
+
+DLLDEST	= $(DEVROOT)\DLL
+LIBDEST	= $(DEVROOT)\DLL
+
+DLLS	= pthreadBC$(DLL_VER).dll
+
+OPTIM	= /O2
+
+RC	= brcc32
+RCFLAGS	= -i.
+
+CFLAGS	= /q /I. /D_WIN32_WINNT=0x400 /DHAVE_CONFIG_H=1 /4 /tWD /tWM \
+	  /w-aus /w-asc /w-par
+
+#C cleanup code
+BCFLAGS	= $(PTW32_FLAGS) $(CFLAGS)
+
+# Agregate modules for inlinability
+DLL_OBJS	= \
+		attr.obj \
+		barrier.obj \
+		cancel.obj \
+		cleanup.obj \
+		condvar.obj \
+		create.obj \
+		dll.obj \
+		errno.obj \
+		exit.obj \
+		fork.obj \
+		global.obj \
+		misc.obj \
+		mutex.obj \
+		nonportable.obj \
+		private.obj \
+		rwlock.obj \
+		sched.obj \
+		semaphore.obj \
+		signal.obj \
+		spin.obj \
+		sync.obj \
+		tsd.obj
+
+INCL	= config.h implement.h semaphore.h pthread.h need_errno.h
+
+ATTR_SRCS	= \
+		pthread_attr_init.c \
+		pthread_attr_destroy.c \
+		pthread_attr_getdetachstate.c \
+		pthread_attr_setdetachstate.c \
+		pthread_attr_getstackaddr.c \
+		pthread_attr_setstackaddr.c \
+		pthread_attr_getstacksize.c \
+		pthread_attr_setstacksize.c \
+		pthread_attr_getscope.c \
+		pthread_attr_setscope.c
+
+BARRIER_SRCS = \
+		pthread_barrier_init.c \
+		pthread_barrier_destroy.c \
+		pthread_barrier_wait.c \
+		pthread_barrierattr_init.c \
+		pthread_barrierattr_destroy.c \
+		pthread_barrierattr_setpshared.c \
+		pthread_barrierattr_getpshared.c
+
+CANCEL_SRCS	= \
+		pthread_setcancelstate.c \
+		pthread_setcanceltype.c \
+		pthread_testcancel.c \
+		pthread_cancel.c 
+
+CONDVAR_SRCS	= \
+		ptw32_cond_check_need_init.c \
+		pthread_condattr_destroy.c \
+		pthread_condattr_getpshared.c \
+		pthread_condattr_init.c \
+		pthread_condattr_setpshared.c \
+		pthread_cond_destroy.c \
+		pthread_cond_init.c \
+		pthread_cond_signal.c \
+		pthread_cond_wait.c
+
+EXIT_SRCS	= \
+		pthread_exit.c
+
+MISC_SRCS	= \
+		pthread_equal.c \
+		pthread_getconcurrency.c \
+		pthread_once.c \
+		pthread_self.c \
+		pthread_setconcurrency.c \
+		ptw32_calloc.c \
+		ptw32_MCS_lock.c \
+		ptw32_new.c \
+		w32_CancelableWait.c
+
+MUTEX_SRCS	= \
+		ptw32_mutex_check_need_init.c \
+		pthread_mutex_init.c \
+		pthread_mutex_destroy.c \
+		pthread_mutexattr_init.c \
+		pthread_mutexattr_destroy.c \
+		pthread_mutexattr_getpshared.c \
+		pthread_mutexattr_setpshared.c \
+		pthread_mutexattr_settype.c \
+		pthread_mutexattr_gettype.c \
+		pthread_mutex_lock.c \
+		pthread_mutex_timedlock.c \
+		pthread_mutex_unlock.c \
+		pthread_mutex_trylock.c
+
+NONPORTABLE_SRCS = \
+		pthread_mutexattr_setkind_np.c \
+		pthread_mutexattr_getkind_np.c \
+		pthread_getw32threadhandle_np.c \
+		pthread_delay_np.c \
+		pthread_num_processors_np.c \
+		pthread_win32_attach_detach_np.c \
+		pthread_timechange_handler_np.c 
+
+PRIVATE_SRCS	= \
+		ptw32_is_attr.c \
+		ptw32_processInitialize.c \
+		ptw32_processTerminate.c \
+		ptw32_threadStart.c \
+		ptw32_threadDestroy.c \
+		ptw32_tkAssocCreate.c \
+		ptw32_tkAssocDestroy.c \
+		ptw32_callUserDestroyRoutines.c \
+		ptw32_timespec.c \
+		ptw32_relmillisecs.c \
+		ptw32_throw.c \
+		ptw32_InterlockedCompareExchange.c \
+		ptw32_getprocessors.c
+
+RWLOCK_SRCS	= \
+		ptw32_rwlock_check_need_init.c \
+		ptw32_rwlock_cancelwrwait.c \
+		pthread_rwlock_init.c \
+		pthread_rwlock_destroy.c \
+		pthread_rwlockattr_init.c \
+		pthread_rwlockattr_destroy.c \
+		pthread_rwlockattr_getpshared.c \
+		pthread_rwlockattr_setpshared.c \
+		pthread_rwlock_rdlock.c \
+		pthread_rwlock_timedrdlock.c \
+		pthread_rwlock_wrlock.c \
+		pthread_rwlock_timedwrlock.c \
+		pthread_rwlock_unlock.c \
+		pthread_rwlock_tryrdlock.c \
+		pthread_rwlock_trywrlock.c
+
+SCHED_SRCS	= \
+		pthread_attr_setschedpolicy.c \
+		pthread_attr_getschedpolicy.c \
+		pthread_attr_setschedparam.c \
+		pthread_attr_getschedparam.c \
+		pthread_attr_setinheritsched.c \
+		pthread_attr_getinheritsched.c \
+		pthread_setschedparam.c \
+		pthread_getschedparam.c \
+		sched_get_priority_max.c \
+		sched_get_priority_min.c \
+		sched_setscheduler.c \
+		sched_getscheduler.c \
+		sched_yield.c
+
+SEMAPHORE_SRCS = \
+		sem_init.c \
+		sem_destroy.c \
+		sem_trywait.c \
+		sem_timedwait.c \
+		sem_wait.c \
+		sem_post.c \
+		sem_post_multiple.c \
+		sem_getvalue.c \
+		sem_open.c \
+		sem_close.c \
+		sem_unlink.c
+
+SPIN_SRCS	= \
+		ptw32_spinlock_check_need_init.c \
+		pthread_spin_init.c \
+		pthread_spin_destroy.c \
+		pthread_spin_lock.c \
+		pthread_spin_unlock.c \
+		pthread_spin_trylock.c
+
+SYNC_SRCS	= \
+		pthread_detach.c \
+		pthread_join.c
+
+TSD_SRCS	= \
+		pthread_key_create.c \
+		pthread_key_delete.c \
+		pthread_setspecific.c \
+		pthread_getspecific.c
+
+
+all: clean $(DLLS)
+
+realclean: clean
+	if exist pthread*.dll del pthread*.dll
+	if exist pthread*.lib del pthread*.lib
+	if exist *.stamp del *.stamp
+
+clean:
+	if exist *.obj del *.obj
+	if exist *.ilk del *.ilk
+	if exist *.ilc del *.ilc
+	if exist *.ild del *.ild
+	if exist *.ilf del *.ilf
+	if exist *.ils del *.ils
+	if exist *.tds del *.tds
+	if exist *.pdb del *.pdb
+	if exist *.exp del *.exp
+	if exist *.map del *.map
+	if exist *.o del *.o
+	if exist *.i del *.i
+	if exist *.res del *.res
+
+
+install: $(DLLS)
+	copy pthread*.dll $(DLLDEST)
+	copy pthread*.lib $(LIBDEST)
+
+$(DLLS): $(DLL_OBJS) version.res
+	ilink32 /Tpd /Gi c0d32x.obj $(DLL_OBJS), \
+		$@, ,\
+		cw32mti.lib import32.lib, ,\
+		version.res
+
+.c.obj:
+	$(CC) $(OPTIM) $(BCFLAGS) -c $<
+
+.rc.res:
+	$(RC) $(RCFLAGS) $<
+
+attr.obj:	attr.c $(ATTR_SRCS) $(INCL)
+barrier.obj:	barrier.c $(BARRIER_SRCS) $(INCL)
+cancel.obj:	cancel.c $(CANCEL_SRCS) $(INCL)
+condvar.obj:	condvar.c $(CONDVAR_SRCS) $(INCL)
+exit.obj:	exit.c $(EXIT_SRCS) $(INCL)
+misc.obj:	misc.c $(MISC_SRCS) $(INCL)
+mutex.obj:	mutex.c $(MUTEX_SRCS) $(INCL)
+nonportable.obj:	nonportable.c $(NONPORTABLE_SRCS) $(INCL)
+private.obj:	private.c $(PRIVATE_SRCS) $(INCL)
+rwlock.obj:	rwlock.c $(RWLOCK_SRCS) $(INCL)
+sched.obj:	sched.c $(SCHED_SRCS) $(INCL)
+semaphore.obj:	semaphore.c $(SEMAPHORE_SRCS) $(INCL)
+spin.obj:	spin.c $(SPIN_SRCS) $(INCL)
+sync.obj:	sync.c $(SYNC_SRCS) $(INCL)
+tsd.obj:	tsd.c $(TSD_SRCS) $(INCL)
+version.res:	version.rc $(INCL)

Added: vendor/pthreads/current/pthreads.2/CONTRIBUTORS
===================================================================
--- vendor/pthreads/current/pthreads.2/CONTRIBUTORS	                        (rev 0)
+++ vendor/pthreads/current/pthreads.2/CONTRIBUTORS	2008-02-22 17:25:55 UTC (rev 9491)
@@ -0,0 +1,129 @@
+Contributors (in approximate order of appearance)
+
+[See also the ChangeLog file where individuals are
+attributed in log entries. Likewise in the FAQ file.]
+
+Ben Elliston		bje at cygnus dot com
+					Initiated the project;
+					setup the project infrastructure (CVS, web page, etc.);
+					early prototype routines.
+Ross Johnson		rpj at callisto dot canberra dot edu dot au
+					early prototype routines;
+					ongoing project coordination/maintenance;
+					implementation of spin locks and barriers;
+					various enhancements;
+					bug fixes;
+					documentation;
+					testsuite.
+Robert Colquhoun	rjc at trump dot net dot au
+					Early bug fixes.
+John E. Bossom		John dot Bossom at cognos dot com
+					Contributed substantial original working implementation;
+					bug fixes;
+					ongoing guidance and standards interpretation.
+Anders Norlander	anorland at hem2 dot passagen dot se
+					Early enhancements and runtime checking for supported
+					Win32 routines.
+Tor Lillqvist		tml at iki dot fi
+					General enhancements;
+					early bug fixes to condition variables.
+Scott Lightner		scott at curriculum dot com
+					Bug fix.
+Kevin Ruland		Kevin dot Ruland at anheuser-busch dot com
+					Various bug fixes.
+Mike Russo		miker at eai dot com
+					Bug fix.
+Mark E. Armstrong	avail at pacbell dot net
+					Bug fixes.
+Lorin Hochstein 	lmh at xiphos dot ca
+					general bug fixes; bug fixes to condition variables.
+Peter Slacik		Peter dot Slacik at tatramed dot sk
+					Bug fixes.
+Mumit Khan		khan at xraylith dot wisc dot edu
+					Fixes to work with Mingw32.
+Milan Gardian		mg at tatramed dot sk
+					Bug fixes and reports/analyses of obscure problems.
+Aurelio Medina		aureliom at crt dot com
+					First implementation of read-write locks.
+Graham Dumpleton	Graham dot Dumpleton at ra dot pad dot otc dot telstra dot com dot au
+					Bug fix in condition variables.
+Tristan Savatier	tristan at mpegtv dot com
+					WinCE port.
+Erik Hensema		erik at hensema dot xs4all dot nl
+					Bug fixes.
+Rich Peters		rpeters at micro-magic dot com
+Todd Owen		towen at lucidcalm dot dropbear dot id dot au
+					Bug fixes to dll loading.
+Jason Nye		jnye at nbnet dot nb dot ca
+					Implementation of async cancelation.
+Fred Forester		fforest at eticomm dot net
+Kevin D. Clark		kclark at cabletron dot com
+David Baggett		dmb at itasoftware dot com
+					Bug fixes.
+Paul Redondo		paul at matchvision dot com
+Scott McCaskill 	scott at 3dfx dot com
+					Bug fixes.
+Jef Gearhart		jgearhart at tpssys dot com
+					Bug fix.
+Arthur Kantor		akantor at bexusa dot com
+					Mutex enhancements.
+Steven Reddie		smr at essemer dot com dot au
+					Bug fix.
+Alexander Terekhov	TEREKHOV at de dot ibm dot com
+					Re-implemented and improved read-write locks;
+					(with Louis Thomas) re-implemented and improved
+					condition variables;
+					enhancements to semaphores;
+					enhancements to mutexes;
+					new mutex implementation in 'futex' style;
+					suggested a robust implementation of pthread_once
+					similar to that implemented by V.Kliathcko;
+					system clock change handling re CV timeouts;
+					bug fixes.
+Thomas Pfaff		tpfaff at gmx dot net
+					Changes to make C version usable with C++ applications;
+					re-implemented mutex routines to avoid Win32 mutexes
+					and TryEnterCriticalSection;
+					procedure to fix Mingw32 thread-safety issues.
+Franco Bez		franco dot bez at gmx dot de
+					procedure to fix Mingw32 thread-safety issues.
+Louis Thomas		lthomas at arbitrade dot com
+					(with Alexander Terekhov) re-implemented and improved
+					condition variables.
+David Korn		dgk at research dot att dot com
+					Ported to UWIN.
+Phil Frisbie, Jr.	phil at hawksoft dot com
+					Bug fix.
+Ralf Brese		Ralf dot Brese at pdb4 dot siemens dot de
+					Bug fix.
+prionx at juno dot com 	prionx at juno dot com
+					Bug fixes.
+Max Woodbury		mtew at cds dot duke dot edu
+					POSIX versioning conditionals;
+					reduced namespace pollution;
+					idea to separate routines to reduce statically
+					linked image sizes.
+Rob Fanner		rfanner at stonethree dot com
+					Bug fix.
+Michael Johnson 	michaelj at maine dot rr dot com
+					Bug fix.
+Nicolas Barry		boozai at yahoo dot com
+					Bug fixes.
+Piet van Bruggen	pietvb at newbridges dot nl
+					Bug fix.
+Makoto Kato		raven at oldskool dot jp
+					AMD64 port.
+Panagiotis E. Hadjidoukas	peh at hpclab dot ceid dot upatras dot gr
+					Contributed the QueueUserAPCEx package which
+					makes preemptive async cancelation possible.
+Will Bryant		will dot bryant at ecosm dot com
+					Borland compiler patch and makefile.
+Anuj Goyal		anuj dot goyal at gmail dot com
+					Port to Digital Mars compiler.
+Gottlob Frege		gottlobfrege at  gmail dot com
+					re-implemented pthread_once (version 2)
+					(pthread_once cancellation added by rpj).
+Vladimir Kliatchko	vladimir at kliatchko dot com
+					reimplemented pthread_once with the same form
+					as described by A.Terekhov (later version 2);
+					implementation of MCS (Mellor-Crummey/Scott) locks.

Added: vendor/pthreads/current/pthreads.2/COPYING
===================================================================
--- vendor/pthreads/current/pthreads.2/COPYING	                        (rev 0)
+++ vendor/pthreads/current/pthreads.2/COPYING	2008-02-22 17:25:55 UTC (rev 9491)
@@ -0,0 +1,150 @@
+	pthreads-win32 - a POSIX threads library for Microsoft Windows
+
+
+This file is Copyrighted
+------------------------
+
+    This file is covered under the following Copyright:
+
+	Copyright (C) 2001,2006 Ross P. Johnson
+	All rights reserved.
+
+	Everyone is permitted to copy and distribute verbatim copies
+	of this license document, but changing it is not allowed.
+
+Pthreads-win32 is covered by the GNU Lesser General Public License
+------------------------------------------------------------------
+
+    Pthreads-win32 is open software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public License
+    as published by the Free Software Foundation version 2.1 of the
+    License.
+
+    Pthreads-win32 is several binary link libraries, several modules,
+    associated interface definition files and scripts used to control
+    its compilation and installation.
+
+    Pthreads-win32 is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU Lesser General Public License for more details.
+
+    A copy of the GNU Lesser General Public License is distributed with
+    pthreads-win32 under the filename:
+
+	    COPYING.LIB
+
+    You should have received a copy of the version 2.1 GNU Lesser General
+    Public License with pthreads-win32; if not, write to:
+
+	    Free Software Foundation, Inc.
+	    59 Temple Place
+	    Suite 330
+	    Boston, MA	02111-1307
+	    USA
+
+    The contact addresses for pthreads-win32 is as follows:
+
+        Web:	http://sources.redhat.com/pthreads-win32
+        Email:  Ross Johnson
+                Please use: Firstname.Lastname at homemail.com.au
+
+
+
+Pthreads-win32 copyrights and exception files
+---------------------------------------------
+
+    With the exception of the files listed below, Pthreads-win32
+    is covered under the following GNU Lesser General Public License
+    Copyrights:
+
+	Pthreads-win32 - POSIX Threads Library for Win32
+	Copyright(C) 1998 John E. Bossom
+	Copyright(C) 1999,2006 Pthreads-win32 contributors
+
+	The current list of contributors is contained
+        in the file CONTRIBUTORS included with the source
+	code distribution. The current list of CONTRIBUTORS
+	can also be seen at the following WWW location:
+        http://sources.redhat.com/pthreads-win32/contributors.html
+
+    Contact Email: Ross Johnson
+                   Please use: Firstname.Lastname at homemail.com.au
+
+    These files are not covered under one of the Copyrights listed above:
+
+            COPYING
+	    COPYING.LIB
+            tests/rwlock7.c
+
+    This file, COPYING, is distributed under the Copyright found at the
+    top of this file.  It is important to note that you may distribute
+    verbatim copies of this file but you may not modify this file.
+
+    The file COPYING.LIB, which contains a copy of the version 2.1
+    GNU Lesser General Public License, is itself copyrighted by the
+    Free Software Foundation, Inc.  Please note that the Free Software
+    Foundation, Inc. does NOT have a copyright over Pthreads-win32,
+    only the COPYING.LIB that is supplied with pthreads-win32.
+
+    The file tests/rwlock7.c is derived from code written by
+    Dave Butenhof for his book 'Programming With POSIX(R) Threads'.
+    The original code was obtained by free download from his website
+    http://home.earthlink.net/~anneart/family/Threads/source.html
+    and did not contain a copyright or author notice. It is assumed to
+    be freely distributable.
+
+    In all cases one may use and distribute these exception files freely.
+    And because one may freely distribute the LGPL covered files, the
+    entire pthreads-win32 source may be freely used and distributed.
+
+
+
+General Copyleft and License info
+---------------------------------
+
+    For general information on Copylefts, see:
+
+	http://www.gnu.org/copyleft/
+
+    For information on GNU Lesser General Public Licenses, see:
+
+	http://www.gnu.org/copyleft/lesser.html
+	http://www.gnu.org/copyleft/lesser.txt
+
+
+Why pthreads-win32 did not use the GNU General Public License
+-------------------------------------------------------------
+
+    The goal of the pthreads-win32 project has been to
+    provide a quality and complete implementation of the POSIX
+    threads API for Microsoft Windows within the limits imposed
+    by virtue of it being a stand-alone library and not

@@ Diff output truncated at 100000 characters. @@

This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Pd-cvs mailing list