summaryrefslogtreecommitdiff
path: root/README
diff options
context:
space:
mode:
authorrpj <rpj>2000-08-11 05:49:39 +0000
committerrpj <rpj>2000-08-11 05:49:39 +0000
commiteb45ddca732b7e919ec54e5c524fd1e128fc84a4 (patch)
treeecf9e04c1f57dd9a93e7a64236d11570d1aa6773 /README
parent9aa68dd9d05e3080f1963b3a2abaa595c532945e (diff)
2000-08-10 Ross Johnson <rpj@special.ise.canberra.edu.au>snap-2000-08-10
* 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 <rpj@special.ise.canberra.edu.au> * 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.
Diffstat (limited to 'README')
-rw-r--r--README227
1 files changed, 143 insertions, 84 deletions
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 <jebossom@cognos.com>.
-
-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
-<rpj@ise.canberra.edu.au>
-
+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 <jebossom@cognos.com>. 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
+<rpj@ise.canberra.edu.au>
+