SPIN Documentation Template

This file is a possible template to use in writing documentation for a SPIN extension or service. The topics included are just ideas -- they can be expanded or pruned where appropriate.

Motivation

Why have this service? What are its goals? What services are provided to meet these goals? Why is the SPIN version of this service different from any other OS?

Overview

Where does this service fit into SPIN? Is it a core service? Extension? Language feature? Library?

What is the basic design? What important algorithms or data structures are used? Code snippets or pointers may be appropriate here. In addition, some low-level details may be of interest. For instance, the strand documentation can mention RAS regions and FastLists.

Using the service

What are the interfaces provided? (once again, code snippets or pointers may be appropriate). If there is more than one interface, what purpose does each serve? (e.g. Sched as opposed to Strand as opposed to ThreadExtra).

An example of how to use the interface may help out. For instance, how would a dispatcher client install a handler on the syscall event?

The service might require some build or link instructions. For instance, dlib and the Unix server documentation will need to contain more than descriptions of interfaces.

Finally, some services, like Strands and Plexus, are specifically designed to be extended. Instructions, caveats, and examples may be appropriate.

Remaining Issues

Where does this design or implementation fall short? Which features are designed but not yet implemented? What features have not yet been designed, but will be added in future work?
ddion@cs.washington.edu