From eb45ddca732b7e919ec54e5c524fd1e128fc84a4 Mon Sep 17 00:00:00 2001 From: rpj Date: Fri, 11 Aug 2000 05:49:39 +0000 Subject: 2000-08-10 Ross Johnson * cleanup.c (pthread_pop_cleanup): Remove _pthread prefix from __except and catch keywords; implement.h now simply undefines _pthread__except and _pthread_catch if defined; VC++ was not textually substituting _pthread_catch etc back to catch as it was redefined; the reason for using the prefixed version was to make it clear that it was not using the pthread.h redefined catch keyword. * private.c (_pthread_threadStart): Ditto. (_pthread_callUserDestroyRoutines): Ditto. * implement.h (_pthread__except): Remove #define. (_pthread_catch): Remove #define. * GNUmakefile (pthread.a): New target to build libpthread32.a from pthread.dll using dlltool. * buildlib.bat: Duplicate cl commands with args to build C++ EH version of pthread.dll; use of .bat files is redundant now that nmake compatible Makefile is included; used as a kludge only now. * Makefile: Localise some macros and fix up the clean: target to extend it and work properly. * CONTRIBUTORS: Add contributors. * ANNOUNCE: Updated. * README: Updated. tests/ChangeLog: 2000-08-10 Ross Johnson * eyal1.c (main): Change implicit cast to explicit cast when passing "print_server" function pointer; G++ no longer allows implicit func parameter casts. * cleanup1.c: Remove unused "waitLock". (main): Fix implicit parameter cast. * cancel2.c (main): Fix implicit parameter cast. * cancel4.c (main): Fix implicit parameter cast. * cancel3.c (main): Fix implicit parameter cast. * GNUmakefile: Renamed from Makefile; Add missing cancel1 and cancel2 test targets. * Makefile: Converted for use with MS nmake. --- ANNOUNCE | 774 +++++++++++++++++++++++++++++++++------------------------------ 1 file changed, 403 insertions(+), 371 deletions(-) (limited to 'ANNOUNCE') diff --git a/ANNOUNCE b/ANNOUNCE index 2986e9f..47d2ece 100644 --- a/ANNOUNCE +++ b/ANNOUNCE @@ -1,371 +1,403 @@ - - PTHREADS-WIN32 SNAPSHOT 2000-??-?? - ---------------------------------- - Web Site: http://sourceware.cygnus.com/pthreads-win32/ - FTP Site: ftp://sourceware.cygnus.com/pub/pthreads-win32 - Coordinator: Ross Johnson - - -We are pleased to announce the availability of a new snapshot of -Pthreads-win32, an Open Source Software (OSS) implementation of the -Threads component of the POSIX 1003.1c 1995 Standard for Microsoft's -Win32 environment. Some functions from POSIX 1003.1b are also -supported including semaphores. - -Pthreads-win32 is free software, distributed under the GNU Library -General Public License (LGPL). - -Please see the 'Acknowledgements' section at the end of this -announcement for the list of contributors. - - -Change Summary (since the last snapshot) ----------------------------------------- - -(See the ChangeLog file for details.) - -New: -- asynchronous cancelation (Jason Nye) -- Makefile compatible with MS nmake to replace - buildlib.bat - -Bugs fixed: -- kernel32 load/free problem, -- attempt to hide internel exceptions from application - exception handlers (__try/__except and try/catch blocks) - -Some new tests have been added. - - -Level of standards conformance ------------------------------- - -The following POSIX 1003.1c 1995 options are defined: - - _POSIX_THREADS - _POSIX_THREAD_SAFE_FUNCTIONS - _POSIX_THREAD_ATTR_STACKSIZE - - -The following POSIX 1003.1c 1995 options are not defined: - - _POSIX_THREAD_ATTR_STACKADDR - _POSIX_THREAD_PRIORITY_SCHEDULING - _POSIX_THREAD_PRIO_INHERIT - _POSIX_THREAD_PRIO_PROTECT - _POSIX_THREAD_PROCESS_SHARED - -The following POSIX 1003.1b option is defined: - - _POSIX_SEMAPHORES - -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_mutex_init - pthread_mutex_destroy - pthread_mutex_lock - pthread_mutex_trylock - 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_rwlock - pthread_rwlock_unlock - - --------------------------- - Semaphores - --------------------------- - sem_init (POSIX 1b) - sem_destroy (POSIX 1b) - sem_post (POSIX 1b) - sem_wait (POSIX 1b) - sem_trywait (POSIX 1b) - sem_open (POSIX 1b - returns an error ENOSYS) - sem_close (POSIX 1b - returns an error ENOSYS) - sem_unlink (POSIX 1b - returns an error ENOSYS) - sem_getvalue (POSIX 1b - returns an error ENOSYS) - - --------------------------- - RealTime Scheduling - --------------------------- - pthread_attr_getschedparam - pthread_attr_setschedparam - pthread_getschedparam - pthread_setschedparam - sched_get_priority_max (POSIX 1b) - sched_get_priority_min (POSIX 1b) - sched_yield (POSIX 1b) - - --------------------------- - Signals - --------------------------- - pthread_sigmask - - --------------------------- - Static Initializers (macros) - --------------------------- - PTHREAD_ONCE_INIT - PTHREAD_MUTEX_INITIALIZER - PTHREAD_COND_INITIALIZER - PTHREAD_RWLOCK_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_attr_getinheritsched - pthread_attr_getschedpolicy - pthread_attr_getscope - pthread_attr_setinheritsched - pthread_attr_setschedpolicy - pthread_attr_setscope - 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 - --------------------------- - pthread_kill - sigtimedwait - sigwait - sigwaitinfo - - -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://sourceware.cygnus.com/pub/pthreads-win32 - -and as individual source code files at - - ftp://sourceware.cygnus.com/pub/pthreads-win32/source - -The pre-built DLL, export libraries and include files can be found at: - - ftp://sourceware.cygnus.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@sourceware.cygnus.com - - -Application Development Environments ------------------------------------- - -MSVC: -MSVC works. - -Mingw32: (ftp://ftp.xraylith.wisc.edu/pub/khan/gnu-win32/mingw32/egcs-1.1.1/) -Mingw32 must use the thread-safe MSVCRT library (see the FAQ). You can link -against the export library libpthread32.a built under Mingw32 -but you must run your application with the version of pthread.dll built -with MSVC. - -Cygwin: (http://sourceware.cygnus.com/cygwin/) -Cygwin aims to provide a complete POSIX environment on top of Win32, including -threads. When this is complete, developers using Cygwin will not need -pthreads-win32. At this time, Cygwin has preliminary support for multithreaded -development, however, this is not turned on by default. We have not tested -pthreads-win32 against Cygwin. - -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 - pthread.dll - built with MSVC cl compiler on NT4.0 - pthread.lib - built with MSVC cl compiler on NT4.0 - libpthread32.a - built with Mingw32 on Win98 (use with - MSVC pthread.dll for runtime) - -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. - - -Why you can't build the DLL itself with Mingw32 (yet) ------------------------------------------------------ - -The library makes use of exception handling internally (Win32 SEH if -compiled with MSVC and C++ EH otherwise). Unfortunately, current -versions of egcs (g++) do not have thread-safe exception handling -and therefore the DLL pthread.dll cannot be built. - -However, it is possible to build applications which make use of -pthreads-win32, using Mingw32's gcc or g++. - - -Building the library with MSVC ------------------------------- - -A simple makefile for building the library with MSVC is available. The -Makefile by default links the library to MSVCRT.DLL. If your application -uses another C runtime library like LIBCMT.LIB, please edit the Makefile to -avoid conflicts between C-libraries. - -There is also a batch file "buildlib.bat" which will build the library. - - -Documentation -------------- - -Currently, there is no documentation included in the package apart -from the copious comments in the source code. - -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) - - -Acknowledgements ----------------- - -This library is based substantially on a Win32 pthreads -implementation contributed by John Bossom . - -The implementation of condition variables is derived from the work -of Douglas Schmidt et al -(http://www.cs.wustl.edu/~schmidt/win32-cv-1.html). - -There is also a separate CONTRIBUTORS file. This file and others are -on the web site: - - http://sourceware.cygnus.com/pthreads-win32 - -Enjoy! - -Ross Johnson + + PTHREADS-WIN32 SNAPSHOT 2000-08-10 + ---------------------------------- + Web Site: http://sources.redhat.com/pthreads-win32/ + FTP Site: ftp://sources.redhat.com/pub/pthreads-win32 + Coordinator: Ross Johnson + + +We are pleased to announce the availability of a new snapshot of +Pthreads-win32, an Open Source Software (OSS) implementation of the +Threads component of the POSIX 1003.1c 1995 Standard for Microsoft's +Win32 environment. Some functions from POSIX 1003.1b are also +supported including semaphores. Other related functions include +the set of read-write lock functions. + +Pthreads-win32 is free software, distributed under the GNU Library +General Public License (LGPL). + +Please see the 'Acknowledgements' section at the end of this +announcement for the list of contributors. + + +Change Summary (since the last snapshot) +---------------------------------------- + +(See the ChangeLog file for details.) + +New: +- asynchronous cancelation on X86 (Jason Nye) +- Makefile compatible with MS nmake to replace + buildlib.bat +- GNUmakefile for Mingw32 +- tests/Makefile for MS nmake replaces runall.bat +- tests/GNUmakefile for Mingw32 + +Bugs fixed: +- kernel32 load/free problem +- attempt to hide internel exceptions from application + exception handlers (__try/__except and try/catch blocks) +- Win32 thread handle leakage bug + (David Baggett/Paul Redondo/Eyal Lebedinsky) + +Some new tests have been added. + + +Known bugs in this snapshot +--------------------------- + +1. Running the test "join1.c" with the library built with Mingw32 +and the GNUmakefile included, the test fails with a segmentation (invalid +page access) exception. The fault appears to be in the assembler code +emmitted by the compiler [to handle exception contexts] at the +end of the try block in _pthread_threadStart(). + +2. There are problems with using the libpthread32.a file with the +VC++ SEH version of pthread.dll. The cleanup1.c test fails and the +eyal1.c test gives suspect results. + +3. I have not been able to build with VC++ using C++ EH. This is a +maintainer problem who doesn't think he's doing it right. Consequently +there may also be basic parser errors and warnings to be cleaned +up in the code. + +4. Due to what is believed to be a C++ compliance error in VC++, +if your application contains catch(...) blocks in your POSIX threads +then you will need to replace the "catch(...)" with the macro +"PtW32Catch", eg. + + #ifdef PtW32Catch + PtW32Catch { + ... + } + #else + catch(...) { + ... + } + #endif + +Otherwise neither pthreads cancelation nor pthread_exit() will work +reliably. + + +Level of standards conformance +------------------------------ + +The following POSIX 1003.1c 1995 options are defined: + + _POSIX_THREADS + _POSIX_THREAD_SAFE_FUNCTIONS + _POSIX_THREAD_ATTR_STACKSIZE + + +The following POSIX 1003.1c 1995 options are not defined: + + _POSIX_THREAD_ATTR_STACKADDR + _POSIX_THREAD_PRIORITY_SCHEDULING + _POSIX_THREAD_PRIO_INHERIT + _POSIX_THREAD_PRIO_PROTECT + _POSIX_THREAD_PROCESS_SHARED + +The following POSIX 1003.1b option is defined: + + _POSIX_SEMAPHORES + +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_mutex_init + pthread_mutex_destroy + pthread_mutex_lock + pthread_mutex_trylock + 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_rwlock + pthread_rwlock_unlock + + --------------------------- + Semaphores + --------------------------- + sem_init (POSIX 1b) + sem_destroy (POSIX 1b) + sem_post (POSIX 1b) + sem_wait (POSIX 1b) + sem_trywait (POSIX 1b) + sem_open (POSIX 1b - returns an error ENOSYS) + sem_close (POSIX 1b - returns an error ENOSYS) + sem_unlink (POSIX 1b - returns an error ENOSYS) + sem_getvalue (POSIX 1b - returns an error ENOSYS) + + --------------------------- + RealTime Scheduling + --------------------------- + pthread_attr_getschedparam + pthread_attr_setschedparam + pthread_getschedparam + pthread_setschedparam + sched_get_priority_max (POSIX 1b) + sched_get_priority_min (POSIX 1b) + sched_yield (POSIX 1b) + + --------------------------- + Signals + --------------------------- + pthread_sigmask + + --------------------------- + Static Initializers (macros) + --------------------------- + PTHREAD_ONCE_INIT + PTHREAD_MUTEX_INITIALIZER + PTHREAD_COND_INITIALIZER + PTHREAD_RWLOCK_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_attr_getinheritsched + pthread_attr_getschedpolicy + pthread_attr_getscope + pthread_attr_setinheritsched + pthread_attr_setschedpolicy + pthread_attr_setscope + 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 + --------------------------- + pthread_kill + sigtimedwait + sigwait + sigwaitinfo + + +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://sourcs.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@sourceware.cygnus.com + + +Application Development Environments +------------------------------------ + +MSVC: +MSVC using SEH works. +MSVC using C++ EH not tested. + +Mingw32: (ftp://ftp.xraylith.wisc.edu/pub/khan/gnu-win32/mingw32/egcs-1.1.1/) +Mingw32 must use the thread-safe MSVCRT library (see the FAQ). You can link +against the export library libpthread32.a built under Mingw32 +but you must run your application with the version of pthread.dll built +with MSVC. See the "Known bugs" section above. + +Cygwin: (http://sourceware.cygnus.com/cygwin/) +Cygwin aims to provide a complete POSIX environment on top of Win32, including +threads. When this is complete, developers using Cygwin will not need +pthreads-win32. At this time, Cygwin has preliminary support for multithreaded +development, however, this is not turned on by default. We have not tested +pthreads-win32 against Cygwin. + +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 + pthread.dll - built with MSVC cl compiler on NT4.0 + pthread.lib - built with MSVC cl compiler on NT4.0 + libpthread32.a - built with Mingw32 on Win98 (use with + MSVC pthread.dll for runtime) + +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. + + +Building the library with MSVC +------------------------------ + +A simple makefile for building the library with MSVC is available. The +Makefile by default links the library to MSVCRT.DLL. If your application +uses another C runtime library like LIBCMT.LIB, please edit the Makefile to +avoid conflicts between C-libraries. + +There is also a batch file "buildlib.bat" which will build the library. + + +Documentation +------------- + +Currently, there is no documentation included in the package apart +from the copious comments in the source code. + +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) + + +Acknowledgements +---------------- + +This library is based substantially on a Win32 pthreads +implementation contributed by John Bossom . + +The implementation of condition variables is derived from the work +of Douglas Schmidt et al +(http://www.cs.wustl.edu/~schmidt/win32-cv-1.html). + +There is also a separate CONTRIBUTORS file. This file and others are +on the web site: + + http://sources.redhat.com/pthreads-win32 + +Enjoy! + +Ross Johnson -- cgit v1.2.3