Browse Prior Art Database

Device Driver Communication Procedure

IP.com Disclosure Number: IPCOM000114199D
Original Publication Date: 1994-Nov-01
Included in the Prior Art Database: 2005-Mar-27
Document File: 2 page(s) / 65K

Publishing Venue

IBM

Related People

Anderson, B: AUTHOR [+3]

Abstract

Disclosed is a method for quickly and efficiently transferring data from Ring 0 to a Ring 3 application in an Operating System/2* (OS/2) environment.

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

Device Driver Communication Procedure

      Disclosed is a method for quickly and efficiently transferring
data from Ring 0 to a Ring 3 application in an Operating System/2*
(OS/2) environment.

      Ring 0 device driver programs have very limited capability for
communicating and sharing data with Ring 3 applications.  Ring 0
cannot write to a disk nor use pipes or semaphores to communicate.
In addition, hardware interrupts in this environment have even less
ability to pass data to Ring 3.  To overcome this problem, the Device
Driver Communication (DDC) procedure provides a data connection from
a Ring 0 process up to a Ring 3 application through the use of shared
memory segments.

      DDC is composed of three parts: the DDC Device Driver which
executes as a Ring 0 device driver, the DDC Daemon which executes as
a Ring 3 process, and the DDC Hardware Interrupt Table which contains
a series of hardware interrupt codes and data areas to be captured
for each.  The DDC Device Driver is a process called by a Ring 0
application for the purpose of forwarding data to Ring 3.  When
called, it is passed a memory address and length of data to be
forwarded to Ring 3.  The data is prefixed with an identification
code and routing information which is used by the DDC Daemon at Ring
3 for processing.  This data is copied into a shared memory segment
which was preallocated by the DDC Daemon at initialization time, the
memory segment is marked as "used", and then the addr...