ISO/ IEC JTC1/SC22/WG14 N719

						N719    J11/97-082

         Response of the Uniform Driver Interface (UDI) Committee 
	        to the ISO C Committee's draft proposal 
           "Standardization of Basic I/O Hardware Addressing"

The Uniform Driver Interface (UDI), an industry standard device driver API
Specification, defines a set of APIs for device drivers which allow them
to be completely portable across both hardware platforms and operating

The UDI Committee has several problems with the proposal to define device 
driver APIs within the C Language Specification.  The major problem with 
these proposed ISO C APIs is that it doesn't make sense to define general 
purpose APIs (eg. file system APIs, device driver APIs, etc.) in a language 
specification, any more than it would make sense to define language type 
qualifiers in a file system API.  

Of course, the C language should provide mechanisms that allow high level 
code to operate correctly across different platforms.  The volatile type 
qualifier is an example of a mechanism that is needed to allow drivers
to be written in C.  Other qualifiers may need to be standardized in the
future to handle more specific requirements of volatile objects in weakly 
ordered memory models.  But actual device driver APIs should be defined in
a separate device driver specification such as UDI, not in the C language.

Furthermore, there's much more to defining APIs which provide device
driver portability than what is being proposed here, even within the
limited scope of the PIO (Programmed I/O - a term for host access of 
device memory) access interfaces being proposed.  For driver portability
across different machine architectures, device driver APIs must include
mechanisms for dealing with device endianness, weakly ordered memory 
models, synchronization of PIO operations with respect to system 
operations, bridge issues, architectures/buses/address-modes which don't
allow for direct access (eg. require intervention by a bridge driver), etc.
Additionally, interfaces for mapping device memory for host access are

This is a brief overview of some of the issues involved with defining
such interfaces.  We'd like to invite the ISO C Committee to meet with
us to discuss this in more detail if you have further questions or
concerns.  So please feel free to contact the UDI Committee via the
UDI officers listed below and we can set something up for a joint

If you'd like more details on the UDI interfaces, you can obtain the
UDI Specification and other documentation via the URL
The UDI PIO interfaces are defined in the UDI Specification, Book 4, 
Chapter 9.

Project UDI

Chair:      Kevin Quick, +1 214 654 5173,
Vice Chair: Mark Evenson, +1 408 447 5601,
Editor:     Kurt Gollhardt, +1 908 790 2277, 
Secretary:  John Lee, +1 415 336 4870

The following companies are involved with the UDI Specification:
   Digital Equipment Corporation
   Hewlett Packard
   Interphase Corporation
   Lockheed Martin
   Sun Microsystems