In a computer system having a memory area, a secondary storage area, and a direct memory access controller for transferring data between the secondary storage area and the memory area, a method for processing a memory transfer request from an application program that specifies an amount of data and a user buffer, the user buffer being mapped to a physical memory region of the memory area and being used to hold transferred data for the application program, the method comprising the computer-implemented steps of:
- determining physical addressing limitations of the direct memory access controller;
- determining when the user buffer is mapped to a physical memory region of said memory area that conforms to the physical addressing limitations of the direct memory access controller;
- when the user buffer is mapped to a physical memory region of said memory area that conforms to the physical addressing limitations of the direct memory access controller, transferring the specified amount of data between the physical memory region and the secondary storage area via the direct memory access controller;
- and
- when the user buffer is mapped to a physical memory region of said memory area that does not conform to the physical addressing limitations of the direct memory access controller, allocating a conforming buffer in the memory area for use in transferring the specified amount of data, the conforming buffer being a buffer which conforms to the physical addressing limitations of the direct memory access controller.