
                  Answers to frequently asked questions
                  for my implementation of POSIX threads

-------------------------------------------------------------------------------
1. Pthreads

(1.0) What is Pthreads?
(1.1) Where can I get info on Pthreads?

2. Getting, Building, Installing and Using proven's Pthreads

(2.0) Where can I get the latest version of proven's Pthreads?
(2.1) What platforms does proven's Pthreads run on?
(2.2) What do I need to build proven's Pthreads?
(2.3) How do I install proven's Pthreads?

3. Known Problems

(3.0) Tests
(3.1) Installation
(3.2) Missing functionality
(3.3) Signals

-------------------------------------------------------------------------------
1. Pthreads

(1.0) What is Pthreads?

Pthreads stands for POSIX threads and is based on the POSIX 1003.1c 1995 
thread standard. This standard passed international Standards Organization 
(ISO) Committee Document (CD) balloting in February 1995 and got the 
IEEE Standards Board approval in June 1995.


(1.1) Where can I get info on Pthreads?

You can call IEEE (908) 562-3800 which is the organization which POSIX 
belongs, and ask for POSIX 1003.1c (not 1003.4a) draft 10 (the standard
won't be out until sometime in 1996). The draft costs $30.00 plus shipping 
which for me was $4.00. The IEEE doesn't make any of the standards available 
online. 

I have made documentation for some of the functions available online.
To reference these use http://www.mit.edu:8001/people/proven/pthreads.html

-------------------------------------------------------------------------------
2. Getting, Building, Installing and Using proven's Pthreads

(2.0) Where can I get the latest version of proven's Pthreads?

The latest version is pthreads-1_60_beta6 was release on November 16, 1996
and is available from sipb.mit.edu:/pub/pthreads.


(2.1) What platforms does proven's Pthreads run on?

Lot's! It should run on the following platforms; the i386 processor
running NetBSD-1.x, FreeBSD-2.x, BSDOS-2.0, Linux-1.2 and Linux-1.3; 
the r2000 (DECstation) running Ultrix-4.2; the Sparc running NetBSD-1.x, 
SunOS-4.1.3, Solaris-2.3, and Solaris-2.4; the alpha running OSF-2.3 and 
OSF-3.x; the SGI running IRIX-5.2; and the HPPA running HP/UX-9.x.

Because it runs on so many platforms I don't get to compile and test every 
platform for every release. If you have a problem send mail to
pthreads-bugs@mit.edu with the processor, OS, and version number along with
a description of the bug.


(2.2) What do I need to build proven's Pthreads?

You will need gcc and gmake to build for all but NetBSD, FreeBSD and BSDOS.
For those you may use either gmake or pmake (the native make).


(2.3) How do I install proven's Pthreads?

Installing pthreads is real easy. At the top level of pthreads do

configure
make
make install

It will be installed into the directory /usr/local/pthreads. If you don't 
like the location add a --prefix=<dir> option to configure. That's it.


-------------------------------------------------------------------------------
3. Known problems.

(3.0) Tests

Under SunOS-4.1.x there is a bug in the kernel that prevents test_sock_1
from passing. This bug has to do with a process tring to connect to itself.
In respose I wrote test_sock_2 to test the socket code for SunOS which 
does work. You should have no problems using the socket code in SunOS
so long as you don't write a program that need to connect to itself.


(3.1) Installation

The only know problem is on the SGI. You will need to use GNU tar instead
of the native supplied one or edit the config.flags file and remove the -h
option to tar. Aparently the -h option on IRIX 5.3 version of tar does the
exact opposite of all the other versions of tar I've used and instead of
following symbolic links and getting the file it archives the link.


(3.2) Missing functionality

The current release is missing cancelation, priority mutexes and others.
I'm continuing to develope pthreads and I plan to put cancelation and 
priority mutexes and as much other stuff as I can into the 1_70 release


(3.3) Signals

Currently to intermix signals with pthreads you need to rename all calls
to signal() and sigaction() to pthread_signal() and pthread_sigaction().
I plan to write real wrapper routines for signal() and sigaction() for
the 1_70 release.

