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
systems.
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
needed.
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
discussion.
If you'd like more details on the UDI interfaces, you can obtain the
UDI Specification and other documentation via the URL
ftp://telford.nsa.hp.com/pub/hp_stds/udi/docs.html
The UDI PIO interfaces are defined in the UDI Specification, Book 4,
Chapter 9.
Sincerely,
Project UDI
Chair: Kevin Quick, +1 214 654 5173, kquick@iphase.com
Vice Chair: Mark Evenson, +1 408 447 5601, mevenson@cup.hp.com
Editor: Kurt Gollhardt, +1 908 790 2277, kdg@sco.com
Secretary: John Lee, +1 415 336 4870 John.Lee@eng.sun.com
The following companies are involved with the UDI Specification:
Adaptec
Digital Equipment Corporation
Hewlett Packard
IBM
Interphase Corporation
Lockheed Martin
NCR
SCO
Sun Microsystems
--------------461577C8750A--