uSystem Version 4.3.2

Peter A. Buhr pabuhr at maytag.waterloo.edu
Wed Apr 3 04:16:19 AEST 1991


One more time ... I would like to announce, to any interested parties, the
availability of Version 4.3.2 of the uSystem (pronounced micro-system), a
library of C routines that provide light-weight concurrency on uniprocessor
and multiprocessor computers running the UNIX operating system.

Version 4.3.2 has several minor fixes from version 4.3.1, which was made
available on Dec 11, 1990. We should probably be releasing a diff or patch
with the changes but currently we are not set up to do this. We apologize
for clogging up the internet with large ftps.


Fixes:

1. Added C++ checks around all .h files in library.

2. Fixed a nasty bug in uFgets. It would hang or segment fault if it did a
non-blocking read.

3. Made several corrections in the uSystem documentation (people are
actually reading it. :-)

4. Added C preprocessor variable __U_MONITOR__ when compiling using moncc
and C preprocessor variable __U_SYSTEM__ when compiling using concc.

5. Fixed a bug in concc with -profile and -debug.  The code to process the
debug flag and the profile flag were written in the wrong order.

6. Fixed a colossal screw up in the library "make" file, which was making
2 versions of the library with UNIX return codes instead of one with UNIX
return codes and one with uSystem exceptions. If you were trying to use
exceptions with file operations and they were not working, that's why.
Sorry.

7. Added ANSI C I/O routines uFreopen, uFread, uFwrite, uFseek, uRewind.

8. Made a small change in the way that the return codes from calls to
system() were handled.  Apparently, the actual return value is contained in
bits 8..15.  So the value returned from system() must be shifted right 8
bits before being returned to the invoking routine.  This should make
concc return the same return codes that were returned to it by the host
compiler so that "make" files will work properly.

9. Added the boolean routine uReadyQueue, which indicates it there are
tasks on the ready queue of the cluster that the task is currently
executing on. This makes it possible to write a conditional delay.

10. The uMigrate routine now returns the identifier of the cluster
that a task was previously on.

11. Re-wrote all the stream and file I/O so that it affords maximum
concurrency and "select" blocks when all tasks are directly or indirectly
waiting for I/O to complete. (Don't you just hate the I/O in UNIX. Makes
you want to communicate with your processes by writing letters.)

12. We decided that we could not correctly support out-of-band data so we
have removed routines uSsend, uSendto, uSendmsg, uRecv, uRecvfrom,
uRecvmsg.

13. Rewrote the research and educational license agreements for the
uSystem.  It is no longer necessary to send a $1.00 for the research
license.

The I/O rewrite was necessary before we could add new facilities such as
allowing multiple open files on an I/O cluster or I/O timeouts.  Soon the
default will be to open a file on the system cluster instead creating a new
cluster for each open file. The new routines "uLongFopen" and "uLongOpen"
will allow files to be opened on separate I/O clusters.  If we can find the
time, these features will appear in version 4.4 along with asynchronous
exception handling, which has just started to work. BTW, there will be some
small changes in the exception handling in version 4.4, but nothing too
drastic.


Version 4.3.2 of the uSystem can be obtained by anonymous ftp from the
following location:

   watmsg.waterloo.edu (129.97.129.9)   pub/uSystem/uSystem.tar.Z

The distribution file is in compressed tar format. Execute the following
command to unpack the source:

   % zcat uSystem.tar.Z | tar -xf -

The README file contains all the installation instructions. Good luck and
happy concurrency.

A postscript version of the uSystem manual is available in the same ftp
directory as the uSystem, called uSystem.ps.  It contains a copy of the
uSystem documentation that has been formatted for 8.5x11 paper using LaTeX
and then converted to postscript.  This has been made available because
some people have had problems LaTeXing the documentation that comes with
the uSystem distribution. Normally, it is unnecessary to retrieve this
file.


The uSystem runs on the following processors: M68000 series, NS32000
series, VAX, MIPS, Intel 386, Sparc, and the following UNIX operating
systems:

- generic BSD 4.{2,3}
- UNIX System V that has BSD system calls "setitimer" and a "sigcontext"
  passed to signal handlers which contains the location of the interrupted
  program
- Apollo SR10 BSD
- Sun OS 4.0
- Tahoe BSD 4.3
- Ultrix 3.0/4.0
- DYNIX
- Umax 4.3
- IRIX 3.3

The uSystem requires at least GNU C 1.37.1. For the Encore and Sequent
Balance, GNU C version 1.37.1 must be patched with the supplied patches.
The uSystem will NOT compile using other compilers. (Don't even think about
it!)

There is an Software-Practice and Experience paper about version 4.1 of the
uSystem in the Sept 1990 issue.

The uSystem is being used to build a highly concurrent post-relational
database here at Waterloo. It is also being used for teaching purposes here
and at:

University of Sydney, Australia, 
	contact Michael Wise, michaelw at cs.su.oz.au

Algemene Hogeschool Amsterdam, Amsterdam, The Netherlands,
	contact Andre v.d. Vlies, andre at maestro.htsa.aha.nl



More information about the Comp.unix mailing list