Table of Contents for this Directory uSystem.tar.Z - Contains all the source code and documentation to construct and use uSystem-Version 4.3.2 and its companion monitor preprocessor. Retrieve this file and execute the commands: zcat uSystem.tar.Z | tar -xf - INSTALL uSystem.ps - 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 formatting the documentation that comes with the uSystem distribution locally. Normally, it is unnecessary to retrieve this file. ======================================================================== Version 4.3.2 has several minor fixes from version 4.3.1, which was made available on Dec 11, 1990. 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@cs.su.oz.au Algemene Hogeschool Amsterdam, Amsterdam, The Netherlands, contact Andre v.d. Vlies, andre@maestro.htsa.aha.nl