head 1.15; access; symbols PTH_2_0_7:1.15 PTH_2_0_6:1.15 PTH_2_0_5:1.15 PTH_2_0_4:1.15 PTH_2_0_3:1.15 PTH_2_0_2:1.15 PTH_2_0_1:1.15 PTH_2_0_0:1.15 PTH_2_0b2:1.14 PTH_2_0b1:1.14 PTH_2_0b0:1.14 PTH_1_4:1.13.0.2 PTH_1_4_1:1.13 PTH_1_4_0:1.13 PTH_1_3_7:1.11 PTH_1_4a3:1.12 PTH_1_3_6:1.11 PTH_1_4a2:1.12 PTH_1_3_5:1.11 PTH_1_4a1:1.12 PTH_1_3_4:1.11 PTH_1_3:1.11.0.2 PTH_1_3_3:1.11 PTH_1_3_2:1.10 PTH_1_3_1:1.9 PTH_1_3_0:1.9 PTH_1_3b3:1.6 PTH_1_2_3:1.1 PTH_1_3b2:1.6 PTH_1_3b1:1.3 PTH_1_3a5:1.3 PTH_1_3a4:1.3 PTH_1_3a3:1.3 PTH_1_2_2:1.1 PTH_1_3a2:1.3 PTH_1_2_1:1.1 PTH_1_3a1:1.2 PTH_1_2:1.1.0.2 PTH_1_2_0:1.1; locks; strict; comment @# @; 1.15 date 2003.02.17.10.49.02; author rse; state Exp; branches; next 1.14; 1.14 date 2002.10.15.20.34.22; author rse; state Exp; branches; next 1.13; 1.13 date 2001.03.24.16.33.33; author rse; state Exp; branches; next 1.12; 1.12 date 2000.03.23.19.32.40; author rse; state Exp; branches; next 1.11; 1.11 date 2000.03.10.07.31.27; author rse; state Exp; branches; next 1.10; 1.10 date 2000.02.20.19.15.00; author rse; state Exp; branches; next 1.9; 1.9 date 2000.02.19.16.51.39; author rse; state Exp; branches; next 1.8; 1.8 date 2000.02.19.16.48.45; author rse; state Exp; branches; next 1.7; 1.7 date 2000.02.15.19.18.23; author rse; state Exp; branches; next 1.6; 1.6 date 2000.01.27.19.06.17; author rse; state Exp; branches; next 1.5; 1.5 date 2000.01.27.19.05.30; author rse; state Exp; branches; next 1.4; 1.4 date 2000.01.27.12.53.01; author rse; state Exp; branches; next 1.3; 1.3 date 99.11.09.08.11.29; author rse; state Exp; branches; next 1.2; 1.2 date 99.11.02.08.38.57; author rse; state Exp; branches; next 1.1; 1.1 date 99.10.31.14.56.33; author rse; state Exp; branches; next ; desc @@ 1.15 log @final polishing before release @ text @ ____ _ _ | _ \| |_| |__ | |_) | __| '_ \ ``Only those who attempt | __/| |_| | | | the absurd can achieve |_| \__|_| |_| the impossible.'' GNU Pth - The GNU Portable Threads Version 2.0 Pth is a very portable POSIX/ANSI-C based library for Unix platforms which provides non-preemptive priority-based scheduling for multiple threads of execution (aka "multi-threading") inside event-driven applications. All threads run in the same address space of the server application, but each thread has its own individual program-counter, run-time stack, signal mask and errno variable. The thread scheduling itself is done in a cooperative way, i.e., the threads are managed and dispatched by a priority- and event-driven non-preemptive scheduler. The intention is that this way both better portability and run-time performance is achieved than with preemptive scheduling. The event facility allows threads to wait until various types of internal and external events occur, including pending I/O on file descriptors, asynchronous signals, elapsed timers, pending I/O on message ports, thread and process termination, and even results of customized callback functions. Pth also provides an optional emulation API for POSIX.1c threads ("Pthreads") which can be used for backward compatibility to existing multi-threaded applications. NEW IN PTH 2.0 Pth 2.0 provides more strict POSIX.1-2001/SUSv3 compliant wrapper functions in its high-level I/O API. Most notable, the implementations of pth_poll(3) and pth_select(3) were completely worked off in order to achieve POSIX semantics. A Pth variant of the new POSIX pselect(2) function was introduced, too. Pth now has support for arbitrary (usually higher than the default) FD_SETSIZE values to support larger-scale server applications. A new environment attribute PTH_ATTR_DISPATCHES allows the application to query the total number of machine context dispatches Pth performed since the last attribute reset. Pth's internal machine context implementation is now exported in a sub-API pth_uctx in order to allow applications to use raw user-space context switching. This can be used to implement co-routines, exception handling or even an alternative multi-threading environment with the help of Pth. The "hard syscall mapping" functionality was completely rewritten from scratch. Previously, the internal system call exit points were based on syscall(2) only. This was problematic because it by-passed the C library glue code which often performs necessary glue code in order to call the code in the kernel correctly. Now the internal exit points are based on a by-system-call dynamically selected combination of RTLD_NEXT+dlsym(2), dlopen(2)+dlsym(2) and the known syscall(2) (in this fallback order). This way the "hard syscall mapping" became a lot more portable and flexible. Optional support for OSSP ex based exception handling was added which allows ISO C applications to use fully multi-threading aware ISO C++ style exception handling. Finally, the Pth build environment was upgraded to be now based on GNU autoconf 2.57, GNU shtool 1.6.2 and GNU libtool 1.4.3. MORE INFORMATION More details about Pth can be found at the following locations from the GNU and OSSP projects: o GNU: http://www.gnu.org/software/pth/ o GNU: ftp://ftp.gnu.org/gnu/pth/ o OSSP: http://www.ossp.org/pkg/lib/pth/ o OSSP: ftp://ftp.ossp.org/pkg/lib/pth/ Ralf S. Engelschall rse@@engelschall.com www.engelschall.com @ 1.14 log @remove trailing whitespaces @ text @d8 1 a8 1 Version 1.4 d12 1 a12 1 threads of execution (aka "multithreading") inside event-driven d29 1 a29 1 multithreaded applications. d31 47 a77 19 Pth 1.4 has an even more extensive support for auto-configuring the package to work on the different Unix platforms without the requirement for the end user to manually adjust the package. Additionally the underlying thread creation and dispatching mechanism was greatly enhanced and cleaned up, too. With this, version 1.4 now was successfully built and tested on numerous Unix platforms, ranging from the major ones like GNU/Linux, FreeBSD, NetBSD, OpenBSD, BSDI, Solaris, HPUX, Tru64, AIX, IRIX, UnixWare and SCO, to more esoteric flavors like SINIX, ReliantUNIX, ISC, SCO, NCR, AmigaOS, Rhapsody (MacOS X), FTX, AUX and Win32/Cygwin. Additionally the auto-configuration mechanism allows GNU Pth to automatically adjusts itself to run also on mostly all remaining Unix platforms, including ancient versions for which a multi-threading environment never existed before. This is especially achieved in Pth by not using any assembly code or platform specific solutions and by using a very tricky but portable thread creation fallback approach which will be published in great detail on the USENIX 2000 Annual Conference this summer. a78 2 http://www.gnu.org/software/pth/ ftp://ftp.gnu.org/gnu/pth/ @ 1.13 log @*** empty log message *** @ text @d41 1 a41 1 @ 1.12 log @*** empty log message *** @ text @d8 1 a8 1 Version 1.3 d31 1 a31 1 Pth 1.3 has an even more extensive support for auto-configuring d35 1 a35 1 was greatly enhanced and cleaned up, too. With this, version 1.3 now @ 1.11 log @*** empty log message *** @ text @d40 1 a40 1 (MacOS X), FTX and AUX. @ 1.10 log @*** empty log message *** @ text @d39 2 a40 2 flavors like SINIX, ReliantUNIX, ISC, SCO, NCR, AmigaOS, Rhapsody, FTX and AUX. @ 1.9 log @*** empty log message *** @ text @d39 2 a40 2 flavors like SINIX, ReliantUNIX, ISC, SCO, NCR, AmigaOS, Rhapsody and AUX. @ 1.8 log @*** empty log message *** @ text @d36 1 a36 1 was successfully built and tested on numerious Unix platforms, ranging d44 1 a44 1 platforms, including anchient versions for which a multi-threading d56 1 @ 1.7 log @*** empty log message *** @ text @d19 1 a19 1 non-preemptive scheduler. The intention is, that this way both better d31 19 a49 4 Pth was successfully tested on FreeBSD, NetBSD, OpenBSD, BSDI, GNU/Linux, Solaris, HPUX, Tru64 (OSF/1), AIX, IRIX, UnixWare, SINIX, ReliantUNIX, ISC, SCO, NCR, AmigaOS, Rhapsody and AUX. And it automatically adjusts itself to remaining Unix platforms, too. @ 1.6 log @*** empty log message *** @ text @d33 2 a34 2 ReliantUNIX, ISC, SCO, NCR, AmigaOS, Rhapsody and AUX. And it should should automatically adjust itself to remaining Unix platforms, too. @ 1.5 log @*** empty log message *** @ text @d33 2 a34 2 ReliantUNIX, ISC, AmigaOS, Rhapsody and AUX. And it should should automatically adjust itself to remaining Unix platforms, too. @ 1.4 log @*** empty log message *** @ text @d27 3 a29 3 Pth also provides an optional emulation API for POSIX.1c threads ("Pthreads") which can be used for backward compatibility to existing multithreaded applications. @ 1.3 log @*** empty log message *** @ text @d8 1 a8 1 Version 1.2 d12 1 a12 1 threads of execution (aka `multithreading') inside event-driven d18 8 a25 7 threads are managed by a priority- and event-based non-preemptive scheduler. The intention is, that this way one can achieve better portability and run-time performance than with preemptive scheduling. The event facility allows threads to wait until various types of events occur, including pending I/O on filedescriptors, asynchronous signals, elapsed timers, pending I/O on message ports, thread and process termination, and even customized callback functions. d27 2 a28 2 Additionally Pth provides an optional emulation API for POSIX.1c threads (`Pthreads') which can be used for backward compatibility to @ 1.2 log @*** empty log message *** @ text @d1 2 a2 2 ____ _ _ | _ \| |_| |__ @ 1.1 log @*** empty log message *** @ text @d31 1 a31 1 GNU/Linux, Solaris, HPUX, Tru63 (OSF/1), AIX, IRIX, UnixWare, SINIX, @