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. --- README | 227 +++++++++++++++++++++++++++++++++++++++++------------------------ 1 file changed, 143 insertions(+), 84 deletions(-) (limited to 'README') diff --git a/README b/README index 0b6db0c..af3e421 100644 --- a/README +++ b/README @@ -1,84 +1,143 @@ -PTHREADS-WIN32 -============== - -Pthreads-win32 is free software, distributed under the GNU Library -General Public License (LGPL). See the file 'COPYING.LIB' for terms -and conditions. - -Mailing list ------------- - -There is a mailing list for discussing pthreads on Win32. To join, send email -to: - - pthreads-win32-subscribe@sourceware.cygnus.com - - -Acknowledgements ----------------- - -Pthreads-win32 is based substantially on a Win32 Pthreads implementation -contributed by John E. Bossom . - -See the 'CONTRIBUTORS' file for the list of contributors. - - -Building under Mingw32 ----------------------- - -pthread.dll can be build with the current development version of mingw32. -Use the GNUmakefile with GNU make should do the right thing. - - -Why you cannot build the library with Cygwin yet ------------------------------------------------- - -The DLL pthread.dll still cannot be built using g++ due to non thread-safe -exception handling in g++. Thanks to Kevin Ruland for researching this -one. See the FAQ Question 2 for more information. - -However, you can use the export library libpthread32.a built under -Mingw32 (not tested under Cygwin) together with the pthread.dll built -with MSVC. Thanks to Anders Norlander for pointing this out. - -For convenience, the following pre-built files can be downloaded from -the FTP site (see under "Availability" below): - - pthread.h - semaphore.h - sched.h - pthread.dll - built with MSVC cl compiler - pthread.lib - built with MSVC cl compiler - libpthread32.a - built with Mingw32 (use with MSVC pthread.dll) - -With these files in the same directory as your application myapp.c, -you could compile, link and run myapp.c under Mingw32 as follows: - - gcc -o myapp.exe myapp.c -I. -L. -lpthread32 - myapp - -Or put pthread.dll in an appropriate directory in your PATH, -put libpthread32.a in MINGW_ROOT\i386-mingw32\lib, and -put pthread.h in MINGW_ROOT\i386-mingw32\include, then use: - - gcc -o myapp.exe myapp.c -lpthread32 - myapp - - -Availability ------------- - -The complete source code in either unbundled or tar/gzipped format -can be found at: - ftp://sourceware.cygnus.com/pub/pthreads-win32 - -The pre-built DLL, export libraries and matching pthread.h can be found at: - ftp://sourceware.cygnus.com/pub/pthreads-win32/dll-latest - -Home page: - http://sourceware.cygnus.com/pthreads-win32/ - ----- -Ross Johnson - - +PTHREADS-WIN32 +============== + +Pthreads-win32 is free software, distributed under the GNU Library +General Public License (LGPL). See the file 'COPYING.LIB' for terms +and conditions. + +Mailing list +------------ + +There is a mailing list for discussing pthreads on Win32. To join, send email +to: + + pthreads-win32-subscribe@sources.redhat.com + +Unsubscribe by sending mail to: + + pthreads-win32-unsubscribe@sources.redhat.com + + +Acknowledgements +---------------- + +Pthreads-win32 is based substantially on a Win32 Pthreads implementation +contributed by John E. Bossom . Many others +have contributed important new code and bug fixes. + +See the 'CONTRIBUTORS' file for the list of contributors. + + +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 derived +from the VC++ SEH version of pthread.dll. You may have to wait until +bug(1.) is fixed. + +3. I have not been able to build with VC++ using C++ EH. This is a +maintainer problem who doesn't know how to do it. 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 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. + + +Building under Mingw32 +---------------------- + +pthread.dll can be built with the current development version of mingw32. +Run "make" in the soruce directory (uses GNUmakefile). This builds +pthread.dll and libpthread32.a. + +You can run the testsuite by changing to the "tests" directory and +running "make clean" and then "make". See the "Known bugs" section above. + + +Building under VC++ using SEH +----------------------------- + +From the source directory run "nmake". This builds pthread.dll and +pthread.lib. + +You can run the testsuite by changing to the "tests" directory and +running "nmake clean" and then "nmake". + + +Why you cannot build the library with Cygwin yet +------------------------------------------------ + +The DLL pthread.dll still cannot be built using g++ due to non thread-safe +exception handling in g++. Thanks to Kevin Ruland for researching this +one. See the FAQ Question 2 for more information. + +However, you can use the export library libpthread32.a built under +Mingw32 (not tested under Cygwin) together with the pthread.dll built +with MSVC. Thanks to Anders Norlander for pointing this out. + +For convenience, the following pre-built files can be downloaded from +the FTP site (see under "Availability" below): + + pthread.h + semaphore.h + sched.h + pthread.dll - built with MSVC cl compiler + pthread.lib - built with MSVC cl compiler + libpthread32.a - built with Mingw32 (use with MSVC pthread.dll) + +With these files in the same directory as your application myapp.c, +you could compile, link and run myapp.c under Mingw32 as follows: + + gcc -o myapp.exe myapp.c -I. -L. -lpthread32 + myapp + +Or put pthread.dll in an appropriate directory in your PATH, +put libpthread32.a in MINGW_ROOT\i386-mingw32\lib, and +put pthread.h in MINGW_ROOT\i386-mingw32\include, then use: + + gcc -o myapp.exe myapp.c -lpthread32 + myapp + + +Availability +------------ + +The complete source code in either unbundled, self-extracting +Zip file, or tar/gzipped format can be found at: + + ftp://sources.redhat.com/pub/pthreads-win32 + +The pre-built DLL, export libraries and matching pthread.h can be found at: + + ftp://sources.redhat.com/pub/pthreads-win32/dll-latest + +Home page: + + http://sources.redhat.com/pthreads-win32/ + +---- +Ross Johnson + + -- cgit v1.2.3