DPDK
17.11.10
|
Go to the source code of this file.
Data Structures | |
struct | rte_malloc_socket_stats |
Functions | |
void * | rte_malloc (const char *type, size_t size, unsigned align) |
void * | rte_zmalloc (const char *type, size_t size, unsigned align) |
void * | rte_calloc (const char *type, size_t num, size_t size, unsigned align) |
void * | rte_realloc (void *ptr, size_t size, unsigned align) |
void * | rte_malloc_socket (const char *type, size_t size, unsigned align, int socket) |
void * | rte_zmalloc_socket (const char *type, size_t size, unsigned align, int socket) |
void * | rte_calloc_socket (const char *type, size_t num, size_t size, unsigned align, int socket) |
void | rte_free (void *ptr) |
int | rte_malloc_validate (const void *ptr, size_t *size) |
int | rte_malloc_get_socket_stats (int socket, struct rte_malloc_socket_stats *socket_stats) |
void | rte_malloc_dump_stats (FILE *f, const char *type) |
int | rte_malloc_set_limit (const char *type, size_t max) |
rte_iova_t | rte_malloc_virt2iova (const void *addr) |
RTE Malloc. This library provides methods for dynamically allocating memory from hugepages.
Definition in file rte_malloc.h.
void* rte_malloc | ( | const char * | type, |
size_t | size, | ||
unsigned | align | ||
) |
This function allocates memory from the huge-page area of memory. The memory is not cleared. In NUMA systems, the memory allocated resides on the same NUMA socket as the core that calls this function.
type | A string identifying the type of allocated objects (useful for debug purposes, such as identifying the cause of a memory leak). Can be NULL. |
size | Size (in bytes) to be allocated. |
align | If 0, the return is a pointer that is suitably aligned for any kind of variable (in the same manner as malloc()). Otherwise, the return is a pointer that is a multiple of align. In this case, it must be a power of two. (Minimum alignment is the cacheline size, i.e. 64-bytes) |
void* rte_zmalloc | ( | const char * | type, |
size_t | size, | ||
unsigned | align | ||
) |
Allocate zero'ed memory from the heap.
Equivalent to rte_malloc() except that the memory zone is initialised with zeros. In NUMA systems, the memory allocated resides on the same NUMA socket as the core that calls this function.
type | A string identifying the type of allocated objects (useful for debug purposes, such as identifying the cause of a memory leak). Can be NULL. |
size | Size (in bytes) to be allocated. |
align | If 0, the return is a pointer that is suitably aligned for any kind of variable (in the same manner as malloc()). Otherwise, the return is a pointer that is a multiple of align. In this case, it must obviously be a power of two. (Minimum alignment is the cacheline size, i.e. 64-bytes) |
void* rte_calloc | ( | const char * | type, |
size_t | num, | ||
size_t | size, | ||
unsigned | align | ||
) |
Replacement function for calloc(), using huge-page memory. Memory area is initialised with zeros. In NUMA systems, the memory allocated resides on the same NUMA socket as the core that calls this function.
type | A string identifying the type of allocated objects (useful for debug purposes, such as identifying the cause of a memory leak). Can be NULL. |
num | Number of elements to be allocated. |
size | Size (in bytes) of a single element. |
align | If 0, the return is a pointer that is suitably aligned for any kind of variable (in the same manner as malloc()). Otherwise, the return is a pointer that is a multiple of align. In this case, it must obviously be a power of two. (Minimum alignment is the cacheline size, i.e. 64-bytes) |
void* rte_realloc | ( | void * | ptr, |
size_t | size, | ||
unsigned | align | ||
) |
Replacement function for realloc(), using huge-page memory. Reserved area memory is resized, preserving contents. In NUMA systems, the new area may not reside on the same NUMA node as the old one.
ptr | Pointer to already allocated memory |
size | Size (in bytes) of new area. If this is 0, memory is freed. |
align | If 0, the return is a pointer that is suitably aligned for any kind of variable (in the same manner as malloc()). Otherwise, the return is a pointer that is a multiple of align. In this case, it must obviously be a power of two. (Minimum alignment is the cacheline size, i.e. 64-bytes) |
void* rte_malloc_socket | ( | const char * | type, |
size_t | size, | ||
unsigned | align, | ||
int | socket | ||
) |
This function allocates memory from the huge-page area of memory. The memory is not cleared.
type | A string identifying the type of allocated objects (useful for debug purposes, such as identifying the cause of a memory leak). Can be NULL. |
size | Size (in bytes) to be allocated. |
align | If 0, the return is a pointer that is suitably aligned for any kind of variable (in the same manner as malloc()). Otherwise, the return is a pointer that is a multiple of align. In this case, it must be a power of two. (Minimum alignment is the cacheline size, i.e. 64-bytes) |
socket | NUMA socket to allocate memory on. If SOCKET_ID_ANY is used, this function will behave the same as rte_malloc(). |
void* rte_zmalloc_socket | ( | const char * | type, |
size_t | size, | ||
unsigned | align, | ||
int | socket | ||
) |
Allocate zero'ed memory from the heap.
Equivalent to rte_malloc() except that the memory zone is initialised with zeros.
type | A string identifying the type of allocated objects (useful for debug purposes, such as identifying the cause of a memory leak). Can be NULL. |
size | Size (in bytes) to be allocated. |
align | If 0, the return is a pointer that is suitably aligned for any kind of variable (in the same manner as malloc()). Otherwise, the return is a pointer that is a multiple of align. In this case, it must obviously be a power of two. (Minimum alignment is the cacheline size, i.e. 64-bytes) |
socket | NUMA socket to allocate memory on. If SOCKET_ID_ANY is used, this function will behave the same as rte_zmalloc(). |
void* rte_calloc_socket | ( | const char * | type, |
size_t | num, | ||
size_t | size, | ||
unsigned | align, | ||
int | socket | ||
) |
Replacement function for calloc(), using huge-page memory. Memory area is initialised with zeros.
type | A string identifying the type of allocated objects (useful for debug purposes, such as identifying the cause of a memory leak). Can be NULL. |
num | Number of elements to be allocated. |
size | Size (in bytes) of a single element. |
align | If 0, the return is a pointer that is suitably aligned for any kind of variable (in the same manner as malloc()). Otherwise, the return is a pointer that is a multiple of align. In this case, it must obviously be a power of two. (Minimum alignment is the cacheline size, i.e. 64-bytes) |
socket | NUMA socket to allocate memory on. If SOCKET_ID_ANY is used, this function will behave the same as rte_calloc(). |
void rte_free | ( | void * | ptr | ) |
Frees the memory space pointed to by the provided pointer.
This pointer must have been returned by a previous call to rte_malloc(), rte_zmalloc(), rte_calloc() or rte_realloc(). The behaviour of rte_free() is undefined if the pointer does not match this requirement.
If the pointer is NULL, the function does nothing.
ptr | The pointer to memory to be freed. |
int rte_malloc_validate | ( | const void * | ptr, |
size_t * | size | ||
) |
If malloc debug is enabled, check a memory block for header and trailer markers to indicate that all is well with the block. If size is non-null, also return the size of the block.
ptr | pointer to the start of a data block, must have been returned by a previous call to rte_malloc(), rte_zmalloc(), rte_calloc() or rte_realloc() |
size | if non-null, and memory block pointer is valid, returns the size of the memory block |
int rte_malloc_get_socket_stats | ( | int | socket, |
struct rte_malloc_socket_stats * | socket_stats | ||
) |
Get heap statistics for the specified heap.
socket | An unsigned integer specifying the socket to get heap statistics for |
socket_stats | A structure which provides memory to store statistics |
void rte_malloc_dump_stats | ( | FILE * | f, |
const char * | type | ||
) |
Dump statistics.
Dump for the specified type to a file. If the type argument is NULL, all memory types will be dumped.
f | A pointer to a file for output |
type | A string identifying the type of objects to dump, or NULL to dump all objects. |
int rte_malloc_set_limit | ( | const char * | type, |
size_t | max | ||
) |
Set the maximum amount of allocated memory for this type.
This is not yet implemented
type | A string identifying the type of allocated objects. |
max | The maximum amount of allocated bytes for this type. |
rte_iova_t rte_malloc_virt2iova | ( | const void * | addr | ) |
Return the IO address of a virtual address obtained through rte_malloc
addr | Address obtained from a previous rte_malloc call |