home *** CD-ROM | disk | FTP | other *** search
/ Peanuts NeXT Software Archives / Peanuts-3.iso / OpenStep / systems / gnustep / sources / alpha-snapshots / pthreads.0.9.2.README < prev    next >
Encoding:
Text File  |  1996-03-09  |  6.5 KB  |  162 lines

  1.  
  2.              *** PCthreads (tm) release 0.9.2 (beta) README file ***
  3.  
  4. INSTALLATION:
  5.  
  6.     STEP I      HOWTO INSTALL THE LIBRARIES AND HEADER FILES
  7.  
  8.         Edit the Make.defs file so that the TOPDIR variable points to the
  9.         current directory (i.e., the directory in which this file resides).
  10.         For example:
  11.         
  12.             TOPDIR  = $(HOME)/pthreads-0.9.2
  13.  
  14.         Once the Make.defs file is edited, the just type "make install" as
  15.         illustrated below:
  16.  
  17.             prompt> make install
  18.  
  19.         This procedure does nothing more than make a set of links in the
  20.         the pthreads-0.9.2 source tree.  If you want the pthread libraries
  21.         available on a system wide basis, you'll have to wait until the
  22.         final release, sometime in January.  For now, you can build
  23.         and experiment with POSIX threads in this directory.
  24.         
  25.         Of course, nothing except your spirit of adventure should prevent you
  26.         from installing these libraries and header files system-wide yourself.
  27.         [:-)
  28.  
  29.     STEP II     HOWTO BUILD THE ANCILLARY LIBRARIES AND EXECUTABLE TESTS
  30.  
  31.         To build the libraries and executables issue the following
  32.         commands:
  33.         
  34.             1)  To build A.OUT formatted libraries and executables:
  35.  
  36.                 prompt> make all
  37.             
  38.  
  39.             2)  To build ELF formatted libraries and executables:
  40.  
  41.                 prompt> make ISELF="yes"
  42.  
  43.         If you want to support both A.OUT and ELF, just issue both commands
  44.         (in no particular order).  At the conclusion you should have the
  45.         following libraries and header files (the .so.1 libraries are
  46.         symbolic links to appropriately versioned ELF-shared libraries):
  47.         
  48.             ./include
  49.                 pthread.h
  50.                 typedefs.h
  51.                 utils.h
  52.                 locks.h
  53.                 pthread_socket.h
  54.  
  55.             ./lib
  56.                 libpthreads.a           POSIX .1 threads for linux
  57.                 libpthreads.so.1
  58.  
  59.                 libpthreads_dce.a       Draft 4 threads for DCE
  60.                 libpthreads_dce.so.1
  61.                 libpthreads-ext.a       Exception handling I/F for DCE
  62.                 libpthreads-ext.so.1
  63.  
  64.                 liblocks.a              Library of shared and priority lock
  65.                 liblocks.so.1           services
  66.  
  67.                 libsock_r.a             Thread blocking socket I/O
  68.                 libsock_r.so.1
  69.                 libc_r.a                Some thread-safe stdlib routines
  70.                 libc_r.so.1
  71.  
  72.  
  73.         NOTE: I've left A.OUT as the default because most ELF systems will
  74.         support both ELF and A.OUT formats, while A.OUT systems will not.
  75.  
  76.     STEP III    HOWTO INSTALL THE MAN PAGES
  77.  
  78.         To install the man pages, you will have to have root privileges.  Change
  79.         to the root account (if not already) and type
  80.  
  81.             prompt> make install.man
  82.  
  83.         This step will install the libraries, header files, and man pages.
  84.         NOTE:  The man pages are "hard-wired" to be copied into the directory
  85.    
  86.             /usr/local/man/man3 
  87.         
  88.         If this directory path doesn't exist, the installation procedure will
  89.         fail and ask you to make this directory path.  To install these man
  90.         pages in another directory, feel free to modify the .install_man.sh
  91.         script.  It's dirt simple.
  92.     
  93.         NOTE: If your MANPATH variable doesn't include this directory, set the
  94.         MANPATH variable in your .cshrc, .login, or .profile depending on your
  95.         shell preference.  For example, I use the csh so in my .cshrc file I
  96.         have
  97.  
  98.             setenv MANPATH /usr/local/man:$MANPATH
  99.  
  100. NEW FEATURES THIS RELEASE:
  101. -------------------------
  102. 1) PCthreads now supports both A.OUT and ELF formats.  Since most ELF systems
  103.    can accomodate A.OUT, but not vice-versa, the default format is A.OUT.
  104.  
  105. 2) Multithreaded applications built with PCthreads may now be dynamically
  106.    configured with respect to:
  107.  
  108.        - Timer interrupt interval (from 10 milliseconds to ... )
  109.        - Timer idle interval (from 10 milliseconds to ... )
  110.        - Default scheduling policy
  111.        - Default quantum.
  112.        - Default thread stack size
  113.        - Default thread execution priority.
  114.  
  115.    These parameters are simply specified in the initialization file,
  116.    ".pthread_initrc".  This file behaves according to the usual precedence
  117.    rules, i.e., the .pthread_initrc file in the startup directory takes
  118.    precedence over one in the $HOME directory.  If neither directory contains an
  119.    initialization file, the library uses its hardcoded defaults.  See the man
  120.    page pthread_info
  121.  
  122. 3) All man pages complete.
  123.  
  124. FIXED BUGS:
  125. -----------
  126. 1) Fixed floating-point context-switch bug.  PCthreads was incorrectly
  127.    restoring floating-point context under some circumstances.
  128.  
  129. KNOWN BUGS AND RESTRICTIONS:
  130. ----------------------------
  131. 1)  Non-blocking sendmsg() and recvmsg() are not supported in libtbio.a because
  132.     Linux does not yet support these services (although their system call
  133.     counterparts are stubbed out in versions of Linux after 1.3.22).  To build
  134.     the libtbio.a library for your system, you must define the SENDMSG 
  135.     constant in the makefile in ./socklib.
  136.  
  137. 2)  If an application built against PCthreads forks, all threads and data in the
  138.     process are copied into the child.  I believe POSIX specifies that only the
  139.     thread issuing the fork() be [re]instantiated in the child.
  140.  
  141.     I have decided to support this feature, but will not have time to complete
  142.     pthread_atfork() until sometime after V1.0 ships.  Mayber V1.1?
  143.  
  144. 3)  Asynchronous cancellations are dangerous and I am still not sure if they are
  145.     working properly.  If you must use async cancellation, make sure that you
  146.     enable cancellation *only* when the target thread doesn't hold one or more
  147.     mutexes.  If a thread is cancelled while holding a mutex PCthreads will
  148.     attempt to unlock the mutex after all of the threads cleanup and
  149.     cancellation handlers have completed, if possible.
  150.  
  151. 4)  Compiling with the PRODUCTION flags (see Make.defs) causes the volatile
  152.     qualifiers in the exception handling code (libpthreads-ext.a) to be
  153.     discarded.  This means that after a return from [sig]longjmp (and other
  154.     non-local gotos) a variable declared as volatile can not be relied upon.
  155.  
  156.     I've tested this extensively, and so far have not ran into any problems.
  157.     But that doesn't mean one of you won't.  If you do, please let me know.
  158.  
  159. Reporting Bugs:
  160. --------------
  161. Please report all problems (and questions) via email to mtp@big.aa.net.
  162.