> DeviceFS

Title: DeviceFS
Author: David De Vorchik 
History:
        27-Apr-91 DDV Created.

NB: This document forms part of a set of documents describing DeviceFS, its
    SWIs and service calls.


DeviceFS
--------

DeviceFS provides a standardised interface to devices within the RISC OS
environment.  Device drivers are declared within the system and they are
seen as objects within the 'devices:' filing system.

Streams can be opened for input or output (as supported) onto these objects
within the directory structure.  A device is given the device file type of
&FCC.  A device adopts the access rights relevant to its input or output
capabilities.

A device driver is simply a set of routines that handle the input or output
of data.  The device can specifiy if it would like to be buffered, but it
will never know if this is the case.  Devices have access to the special
field passed on opening a stream, this can be used to pass extra information
about opening streams and configuration required, for instance a serial
device may contain its setup within the special field string.

DeviceFS provides a way of calling devices, DeviceFS_CallDevice with a
reason code and control registers.  All devices have to support a set of
system specific calls, but have a range of reason codes available for their
own use.  This could be used for controlling a scanner or what ever.

DeviceFS currently only supports stream devices, block devices have yet to
be implemented.

The kernel based device drivers have now been exported to use the DeviceFS
interface, this includes serial and parallel.  These devices are replaceable
modules within the RISC OS ROM set and provide working examples of how
device drivers should be developed.

Most filing system operations can be performed on objects, it is not
possible to create objects within the directory structure which are not
devices, nor is it possible to delete objects.   Data transfer operations
are supported though.

