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--