numam-dpdk/lib/librte_eal/common/malloc_heap.h
Anatoly Burakov 75185aa5fe malloc: allow removing memory from named heaps
Add an API to remove memory from specified heaps. This will first
check if all elements within the region are free, and that the
region is the original region that was added to the heap (by
comparing its length to length of memory addressed by the
underlying memseg list).

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
2018-10-11 11:56:55 +02:00

74 lines
1.4 KiB
C

/* SPDX-License-Identifier: BSD-3-Clause
* Copyright(c) 2010-2014 Intel Corporation
*/
#ifndef MALLOC_HEAP_H_
#define MALLOC_HEAP_H_
#include <stdbool.h>
#include <rte_malloc.h>
#include <rte_malloc_heap.h>
#ifdef __cplusplus
extern "C" {
#endif
static inline unsigned
malloc_get_numa_socket(void)
{
unsigned socket_id = rte_socket_id();
if (socket_id == (unsigned)SOCKET_ID_ANY)
return 0;
return socket_id;
}
void *
malloc_heap_alloc(const char *type, size_t size, int socket, unsigned int flags,
size_t align, size_t bound, bool contig);
void *
malloc_heap_alloc_biggest(const char *type, int socket, unsigned int flags,
size_t align, bool contig);
int
malloc_heap_create(struct malloc_heap *heap, const char *heap_name);
int
malloc_heap_destroy(struct malloc_heap *heap);
int
malloc_heap_add_external_memory(struct malloc_heap *heap, void *va_addr,
rte_iova_t iova_addrs[], unsigned int n_pages, size_t page_sz);
int
malloc_heap_remove_external_memory(struct malloc_heap *heap, void *va_addr,
size_t len);
int
malloc_heap_free(struct malloc_elem *elem);
int
malloc_heap_resize(struct malloc_elem *elem, size_t size);
int
malloc_heap_get_stats(struct malloc_heap *heap,
struct rte_malloc_socket_stats *socket_stats);
void
malloc_heap_dump(struct malloc_heap *heap, FILE *f);
int
malloc_socket_to_heap_id(unsigned int socket_id);
int
rte_eal_malloc_heap_init(void);
#ifdef __cplusplus
}
#endif
#endif /* MALLOC_HEAP_H_ */