From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.5-pre1 (2020-06-20) on ip-172-31-74-118.ec2.internal X-Spam-Level: X-Spam-Status: No, score=-1.9 required=3.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.5-pre1 Date: 25 Jan 93 20:09:01 GMT From: mailer.cc.fsu.edu!delta!mueller@gatech.edu (Frank Mueller) Subject: POSIX threads for SPARC Message-ID: <1993Jan25.200901.11700@mailer.cc.fsu.edu> List-Id: On request by Dave Emery (emery@d74sun.mitre.org), I'll post this msg here as well. -------------------------------------------------------------------------- ``A Library Implementation of POSIX Threads under UNIX'', Version 1.15 The PART (POSIX / Ada-Runtime Project) is happy to announce that we will be able to make the sources of a C Pthreads library available for non-commercial use (and for limited commercial use in the future, see paragraph before copyright). ftp-site: ftp.cs.fsu.edu internet#: 128.186.121.27 directory: /pub/PART files: pthreads.tar.Z, pthreads_serf92.ps.Z, pthreads_usenix93.ps.Z There is also a Pthreads mailing list distributing information about new releases, bug patches and related issues. You can subscribe to the mailing list by sending mail to "mueller@uzu.cs.fsu.edu" with the subject line "subscribe-pthreads". As part of the PART project we have been designing and implementing a library package of preemptive threads which is compliant with POSIX 1003.4a Draft 6. Our implementation is limited to the Sun SPARC architecture and SunOS 4.1 or later. We do not make any use of Sun's light-weight processes to achieve better performance (with one I/O-related exception). What's NEW: .round-robin scheduling .faster Pthreads kernel mode .asynchronous I/O for threads .perverted scheduling for debugging (MUT_SWITCH, RR_SWITCH, RAND_SWITCH) .stack overflow check causes signal (optional) .support for attribute inheritsched and for detachstate The following features are included in the current implementation: -from POSIX.4a: .thread management: initializing, creating, joining, exiting, and destroying threads .synchronization: mutual exclusion, condition variables .thread-specific data .thread priority scheduling: priority management, preemptive priority scheduling (FIFO, RR) .signals: signal handlers, asynchronous wait, masking of signals, long jumps .cancellation: cleanup handlers, asynchronous, synchronous, and disabled interruptability. -from POSIX.4: .timers: sleep, nanosleep, read clock -from POSIX.1: .synchronous I/O for threads (I/O only blocks current thread, not process) The support is currently being extended to include: -from POSIX.4a: .mutex priority inheritance and ceilings .reentrant functions .process control: fork, wait, waitpid (The above functions are not supported for threads. Their semantics is whatever UNIX semantics for processes is. Consequently, a fork will fork another process with ALL threads being duplicated, not just the executing thread as required by POSIX.4a. The functions exec and _exit behave as required without any change, i.e. the UNIX process level semantics for these functions is also adequate for threads.) -from POSIX.4: .asynchronous I/O for threads .asynchronous timer objects -other: .heap memory pools .port to SunOS 5.1 / Solaris 2.1 .GNU-like copyright The current scheduling policies are strict priority scheduling (according to POSIX.4a FIFO scheduling) which preempts when signals are caught or round-robin (RR scheduling) which changes context to another thread of the same priority after a time-slice of 20usec. Besides asynchronous delivery of signals, context switches only occur where required by the priority policy, e.g. when resources (mutexes) are locked etc. The current implementation has been tested and used as a base to implement our own (new) runtime-system for an Ada compiler (Verdix). But we do not make any claims about the completeness or correctness of this implementation. Unfortunately, our lawyers have not had the time to approve a GNU-like copyright for libraries. We hope to fix this in the next release. (C)OPYRIGHT NOTICE: General permission to copy and distribute this code and to execute it within a computer, without fee, is granted provided that this is not done for commercial advantage, and that this copyright notice is included. All other rights are reserved. Please let us know if you have any questions or suggestions. Frank Mueller mueller@alpha.cs.fsu.edu