home *** CD-ROM | disk | FTP | other *** search
-
- *** PCthreads (tm) release 0.9.2 (beta) README file ***
-
- INSTALLATION:
-
- STEP I HOWTO INSTALL THE LIBRARIES AND HEADER FILES
-
- Edit the Make.defs file so that the TOPDIR variable points to the
- current directory (i.e., the directory in which this file resides).
- For example:
-
- TOPDIR = $(HOME)/pthreads-0.9.2
-
- Once the Make.defs file is edited, the just type "make install" as
- illustrated below:
-
- prompt> make install
-
- This procedure does nothing more than make a set of links in the
- the pthreads-0.9.2 source tree. If you want the pthread libraries
- available on a system wide basis, you'll have to wait until the
- final release, sometime in January. For now, you can build
- and experiment with POSIX threads in this directory.
-
- Of course, nothing except your spirit of adventure should prevent you
- from installing these libraries and header files system-wide yourself.
- [:-)
-
- STEP II HOWTO BUILD THE ANCILLARY LIBRARIES AND EXECUTABLE TESTS
-
- To build the libraries and executables issue the following
- commands:
-
- 1) To build A.OUT formatted libraries and executables:
-
- prompt> make all
-
-
- 2) To build ELF formatted libraries and executables:
-
- prompt> make ISELF="yes"
-
- If you want to support both A.OUT and ELF, just issue both commands
- (in no particular order). At the conclusion you should have the
- following libraries and header files (the .so.1 libraries are
- symbolic links to appropriately versioned ELF-shared libraries):
-
- ./include
- pthread.h
- typedefs.h
- utils.h
- locks.h
- pthread_socket.h
-
- ./lib
- libpthreads.a POSIX .1 threads for linux
- libpthreads.so.1
-
- libpthreads_dce.a Draft 4 threads for DCE
- libpthreads_dce.so.1
- libpthreads-ext.a Exception handling I/F for DCE
- libpthreads-ext.so.1
-
- liblocks.a Library of shared and priority lock
- liblocks.so.1 services
-
- libsock_r.a Thread blocking socket I/O
- libsock_r.so.1
- libc_r.a Some thread-safe stdlib routines
- libc_r.so.1
-
-
- NOTE: I've left A.OUT as the default because most ELF systems will
- support both ELF and A.OUT formats, while A.OUT systems will not.
-
- STEP III HOWTO INSTALL THE MAN PAGES
-
- To install the man pages, you will have to have root privileges. Change
- to the root account (if not already) and type
-
- prompt> make install.man
-
- This step will install the libraries, header files, and man pages.
- NOTE: The man pages are "hard-wired" to be copied into the directory
-
- /usr/local/man/man3
-
- If this directory path doesn't exist, the installation procedure will
- fail and ask you to make this directory path. To install these man
- pages in another directory, feel free to modify the .install_man.sh
- script. It's dirt simple.
-
- NOTE: If your MANPATH variable doesn't include this directory, set the
- MANPATH variable in your .cshrc, .login, or .profile depending on your
- shell preference. For example, I use the csh so in my .cshrc file I
- have
-
- setenv MANPATH /usr/local/man:$MANPATH
-
- NEW FEATURES THIS RELEASE:
- -------------------------
- 1) PCthreads now supports both A.OUT and ELF formats. Since most ELF systems
- can accomodate A.OUT, but not vice-versa, the default format is A.OUT.
-
- 2) Multithreaded applications built with PCthreads may now be dynamically
- configured with respect to:
-
- - Timer interrupt interval (from 10 milliseconds to ... )
- - Timer idle interval (from 10 milliseconds to ... )
- - Default scheduling policy
- - Default quantum.
- - Default thread stack size
- - Default thread execution priority.
-
- These parameters are simply specified in the initialization file,
- ".pthread_initrc". This file behaves according to the usual precedence
- rules, i.e., the .pthread_initrc file in the startup directory takes
- precedence over one in the $HOME directory. If neither directory contains an
- initialization file, the library uses its hardcoded defaults. See the man
- page pthread_info
-
- 3) All man pages complete.
-
- FIXED BUGS:
- -----------
- 1) Fixed floating-point context-switch bug. PCthreads was incorrectly
- restoring floating-point context under some circumstances.
-
- KNOWN BUGS AND RESTRICTIONS:
- ----------------------------
- 1) Non-blocking sendmsg() and recvmsg() are not supported in libtbio.a because
- Linux does not yet support these services (although their system call
- counterparts are stubbed out in versions of Linux after 1.3.22). To build
- the libtbio.a library for your system, you must define the SENDMSG
- constant in the makefile in ./socklib.
-
- 2) If an application built against PCthreads forks, all threads and data in the
- process are copied into the child. I believe POSIX specifies that only the
- thread issuing the fork() be [re]instantiated in the child.
-
- I have decided to support this feature, but will not have time to complete
- pthread_atfork() until sometime after V1.0 ships. Mayber V1.1?
-
- 3) Asynchronous cancellations are dangerous and I am still not sure if they are
- working properly. If you must use async cancellation, make sure that you
- enable cancellation *only* when the target thread doesn't hold one or more
- mutexes. If a thread is cancelled while holding a mutex PCthreads will
- attempt to unlock the mutex after all of the threads cleanup and
- cancellation handlers have completed, if possible.
-
- 4) Compiling with the PRODUCTION flags (see Make.defs) causes the volatile
- qualifiers in the exception handling code (libpthreads-ext.a) to be
- discarded. This means that after a return from [sig]longjmp (and other
- non-local gotos) a variable declared as volatile can not be relied upon.
-
- I've tested this extensively, and so far have not ran into any problems.
- But that doesn't mean one of you won't. If you do, please let me know.
-
- Reporting Bugs:
- --------------
- Please report all problems (and questions) via email to mtp@big.aa.net.
-