env: Adding socket variants for malloc and zmalloc

Signed-off-by: Vishal Verma <vishal4.verma@intel.com>
Change-Id: I2399842cf7bb80aefb6c511e167157502ba9018a
This commit is contained in:
Vishal Verma 2017-05-04 10:31:53 -07:00 committed by Daniel Verkamp
parent e48e569d83
commit 578c0d550d
3 changed files with 40 additions and 4 deletions

View File

@ -80,12 +80,24 @@ void spdk_env_init(const struct spdk_env_opts *opts);
*/ */
void *spdk_malloc(size_t size, size_t align, uint64_t *phys_addr); void *spdk_malloc(size_t size, size_t align, uint64_t *phys_addr);
/**
* Allocate a pinned, physically contiguous memory buffer with the
* given size, alignment and socket id.
*/
void *spdk_malloc_socket(size_t size, size_t align, uint64_t *phys_addr, int socket_id);
/** /**
* Allocate a pinned, physically contiguous memory buffer with the * Allocate a pinned, physically contiguous memory buffer with the
* given size and alignment. The buffer will be zeroed. * given size and alignment. The buffer will be zeroed.
*/ */
void *spdk_zmalloc(size_t size, size_t align, uint64_t *phys_addr); void *spdk_zmalloc(size_t size, size_t align, uint64_t *phys_addr);
/**
* Allocate a pinned, physically contiguous memory buffer with the
* given size, alignment and socket id. The buffer will be zeroed.
*/
void *spdk_zmalloc_socket(size_t size, size_t align, uint64_t *phys_addr, int socket_id);
/** /**
* Resize the allocated and pinned memory buffer with the given * Resize the allocated and pinned memory buffer with the given
* new size and alignment. Existing contents are preserved. * new size and alignment. Existing contents are preserved.

View File

@ -44,9 +44,9 @@
#include <rte_version.h> #include <rte_version.h>
void * void *
spdk_malloc(size_t size, size_t align, uint64_t *phys_addr) spdk_malloc_socket(size_t size, size_t align, uint64_t *phys_addr, int socket_id)
{ {
void *buf = rte_malloc(NULL, size, align); void *buf = rte_malloc_socket(NULL, size, align, socket_id);
if (buf && phys_addr) { if (buf && phys_addr) {
*phys_addr = rte_malloc_virt2phy(buf); *phys_addr = rte_malloc_virt2phy(buf);
} }
@ -54,15 +54,27 @@ spdk_malloc(size_t size, size_t align, uint64_t *phys_addr)
} }
void * void *
spdk_zmalloc(size_t size, size_t align, uint64_t *phys_addr) spdk_zmalloc_socket(size_t size, size_t align, uint64_t *phys_addr, int socket_id)
{ {
void *buf = spdk_malloc(size, align, phys_addr); void *buf = spdk_malloc_socket(size, align, phys_addr, socket_id);
if (buf) { if (buf) {
memset(buf, 0, size); memset(buf, 0, size);
} }
return buf; return buf;
} }
void *
spdk_malloc(size_t size, size_t align, uint64_t *phys_addr)
{
return spdk_malloc_socket(size, align, phys_addr, SPDK_ENV_SOCKET_ID_ANY);
}
void *
spdk_zmalloc(size_t size, size_t align, uint64_t *phys_addr)
{
return spdk_zmalloc_socket(size, align, phys_addr, SPDK_ENV_SOCKET_ID_ANY);
}
void * void *
spdk_realloc(void *buf, size_t size, size_t align, uint64_t *phys_addr) spdk_realloc(void *buf, size_t size, size_t align, uint64_t *phys_addr)
{ {

View File

@ -62,6 +62,18 @@ spdk_zmalloc(size_t size, size_t align, uint64_t *phys_addr)
return buf; return buf;
} }
void *
spdk_malloc_socket(size_t size, size_t align, uint64_t *phys_addr, int socket_id)
{
return spdk_malloc(size, align, phys_addr);
}
void *
spdk_zmalloc_socket(size_t size, size_t align, uint64_t *phys_addr, int socket_id)
{
return spdk_zmalloc(size, align, phys_addr);
}
void * void *
spdk_realloc(void *buf, size_t size, size_t align, uint64_t *phys_addr) spdk_realloc(void *buf, size_t size, size_t align, uint64_t *phys_addr)
{ {