Methods, systems, and computer program products that, by defining a common
interface, allow for a single implementation of operations common to both kernel
mode and user mode processing, relative to a hardware adapter. Corresponding kernel
mode and user mode implementations of the operations are provided. For a given
process, a call to the common interface is mapped to the kernel mode implementation
for kernel mode processes and to the user mode implementation for user mode processes.
The mapping may be performed at runtime or may be static. The common operation
may provide a user mode process direct access to a hardware adapter, such as for
sending and receiving information, without switching to kernel mode. A kernel mode
implementation for operations unique to kernel mode processing, such as specifying
security parameters for the hardware adapter to enforce, or initiating and terminating
communication through the hardware adapter, also may be provided.