Patent ID: 7908457

Claim:
A method, in a data processing system, for registering memory space, the method comprising: receiving, by a device driver, one or more open calls from an application to access one or more input/output (I/O) devices, wherein the one or more open calls specify an address range to be associated with each of the one or more I/O devices; responsive to receiving the one or more open calls, sending, by the device driver, one or more I/O map and pin calls to an operating system; registering, by the operating system, memory space for a command response queue, an input buffer, and an output buffer for each of the one or more I/O devices within at least one storage area that will be accessed by the application in response to receiving the one or more I/O map and pin calls; verifying, by the operating system, that the memory space to be registered is associated with the application; responsive to the memory space being associated with the application, receiving, by the device driver, one or more starting I/O bus addresses for each registered memory space of the one or more I/O devices; and executing, by the device driver, at least one I/O command associated with an I/O device using a corresponding starting I/O bus address associated with the I/O device without intervention by the operating system or an operating system image, wherein registering the memory space for each of the one or more I/O devices in the one or more I/O devices within the at least one storage area comprises translating a virtual address for each I/O device that will be used by the application by: searching, by the operating system, a translation control entry (TCE) table to identify a set of consecutive translation control entries equal in length to the address range being requested by the application for the I/O device; allocating, by the operating system, for each of the command response queue, the input buffer, and the output buffer, a corresponding translation set of consecutive translation control entries from the set of consecutive translation control entries; and loading, by the operating system, for each of the command response queue, the input buffer, and the output buffer, real page numbers corresponding to buffer pages associated with the command response queue, the input buffer, and the output buffer, respectively, into the corresponding translation set of consecutive translation control entries.