Protected control of devices by user applications in multiprogramming environments
First Claim
1. A method of accessing storage from an untrusted application program executing in a computer system, comprising:
- in a trusted process in the computer system, creating a private interface between the application program and a storage entity allocated for use by the application program, the interface having associated therewith (i) storage entity identification information identifying the storage entity, and (ii) a command data structure operative to receive storage access commands from the application program for accessing the storage entity, the command data structure and private interface being usable by the application program and not usable by other application programs executing in the computer system;
in the application program, (i) creating a storage access command containing command information identifying a storage access operation to be performed with respect to the storage entity, and (ii) posting the storage access command to the command data structure; and
in a process other than the trusted process and the application program, (i) monitoring the command data structure for the presence of storage access commands posted thereto, and (ii) upon encountering the storage access command posted by the application program, accessing the storage entity as specified by the command information contained therein.
0 Assignments
0 Petitions
Accused Products
Abstract
A user program directly accesses a storage device for I/O operations, bypassing the operating system. The user registers a virtual memory region and an “extent”, or region, of the storage device with a host bus adapter. A virtual interface is created between the user and the storage device including a queue for transmitting commands from the user to the storage device. To perform I/O, the user creates a descriptor including command information identifying the type of I/O operation, a buffer handle identifying the registered virtual memory region, virtual memory address information identifying the locations of data buffers in the registered virtual memory region to be used for the I/O operation, an extent handle identifying the registered extent, and disk address information identifying an area within the registered extent to or from which data is to be written or read. The user posts this descriptor to the virtual interface by placed it on the associated queue.
The adapter reads the descriptor and verifies that the descriptor and the data buffers are located within the registered virtual memory region identified by the buffer handle. The adapter also verifies that the area on the storage device identified by the disk address information is within the registered extent identified by the extent handle. If both of these verification steps succeed, then the I/O command is forwarded to the storage device. If either verification step fails, then the command is not forwarded, and an indication of the failure is returned to the user or the operating system.
159 Citations
6 Claims
-
1. A method of accessing storage from an untrusted application program executing in a computer system, comprising:
-
in a trusted process in the computer system, creating a private interface between the application program and a storage entity allocated for use by the application program, the interface having associated therewith (i) storage entity identification information identifying the storage entity, and (ii) a command data structure operative to receive storage access commands from the application program for accessing the storage entity, the command data structure and private interface being usable by the application program and not usable by other application programs executing in the computer system;
in the application program, (i) creating a storage access command containing command information identifying a storage access operation to be performed with respect to the storage entity, and (ii) posting the storage access command to the command data structure; and
in a process other than the trusted process and the application program, (i) monitoring the command data structure for the presence of storage access commands posted thereto, and (ii) upon encountering the storage access command posted by the application program, accessing the storage entity as specified by the command information contained therein. - View Dependent Claims (2, 3, 4, 5, 6)
-
Specification