#include "gm_call_trace.h"
#include "gm_compiler.h"
#include "gm_debug.h"
#include "gm_internal.h"
#include "gm_io.h"
#include "gm_debug_mem_register.h"
#include "gm_lanai_command.h"
Functions | |
GM_ENTRY_POINT gm_status_t | gm_register_memory_ex (gm_port_t *p, void *_ptr, gm_size_t length, void *_pvma) |
GM_ENTRY_POINT gm_status_t | gm_register_memory (gm_port_t *p, void *ptr, gm_size_t length) |
This file contains the GM API function gm_register_memory().
|
gm_register_memory_ex() registers length bytes of user virtual memory starting at ptr for DMA transfers, associating the memory with port virtual address pvma. The memory is locked down (made nonpageable) and DMAs on the region of memory are enabled. Memory may be registered multiple times. Memory may be deregistered using matching calls to gm_deregister_memory(). Note that memory registration is an expensive operation relative to sending and receiving packets, so you should use persistent memory registrations wherever possible. Also note that memory registration is not supported on Solaris 2.7 and earlier due to operating system limitations. Note that pvma must be used in all subsequent GM API calls to refer to the registered memory region. gm_register_memory(p,ptr,len) is equivalent to gm_register_memory_ex(p,ptr,len,ptr).
|
|
gm_register_memory() registers length bytes of user virtual memory starting at ptr for DMA transfers. The memory is locked down (made nonpageable) and DMAs on the region of memory are enabled. Memory may be registered multiple times. Memory may be deregistered using matching calls to gm_deregister_memory(). Note that memory registration is an expensive operation relative to sending and receiving packets, so you should use persistent memory registrations wherever possible. Also note that memory registration is not supported on Solaris 2.7 and earlier due to operating system limitations.
|