Browse Prior Art Database

Separation of Ring 3 and Ring 0 APIs

IP.com Disclosure Number: IPCOM000121907D
Original Publication Date: 1991-Oct-01
Included in the Prior Art Database: 2005-Apr-04
Document File: 1 page(s) / 40K

Publishing Venue

IBM

Related People

Bartek, B: AUTHOR [+3]

Abstract

A method is described to improve the performance of an OS/2* component which supports both a ring 3 and ring 0 Application Programming Interface (API). Many components of OS/2 have this requirement. They must provide interfaces for both application programs (ring 3) and device drivers (ring 0). The code to support these two APIs is structured as OS/2 dll and device driver modules. Prior to this method, these modules as a whole supported both APIs. For example, the device driver handles completions of asynchronous events for both interfaces. Notification of asynchronous command completions and events is typically substantially different for the two interfaces.

This text was extracted from an ASCII text file.
This is the abbreviated version, containing approximately 79% of the total text.

Separation of Ring 3 and Ring 0 APIs

      A method is described to improve the performance of an
OS/2* component which supports both a ring 3 and ring 0 Application
Programming Interface (API). Many components of OS/2 have this
requirement. They must provide interfaces for both application
programs (ring 3) and device drivers (ring 0). The code to support
these two APIs is structured as OS/2 dll and device driver modules.
Prior to this method, these modules as a whole supported both APIs.
For example, the device driver handles completions of asynchronous
events for both interfaces. Notification of asynchronous command
completions and events is typically substantially different for the
two interfaces. When a command completes, the device driver must
check which interface the command was initiated from and notify the
user application with the appropriate completion method. Performance
is degraded because the device driver is constantly checking which
completion method to use. There are other differences between the
ring 0 and ring 3 API which the device driver must handle. One
example is the addressing of user memory. This also results in a
degradation of performance.

      To improve the performance of a component supporting both a
ring 3 and ring 0 API, the component is structured such that there is
a clear separation of support for the ring 0 and ring 3 APIs. One
device driver supports the ring 0 API. A second device driver
supports the ring 3 API. The second dev...