numam-dpdk/lib/librte_eal/common/malloc_heap.h
Anatoly Burakov 39ff94e71c malloc: separate destroying memseg list and heap data
Currently, destroying external heap chunk and its memseg list is
part of one process. When we will gain the ability to unregister
external memory from DPDK that doesn't have any heap structures
associated with it, we need to be able to find and destroy
memseg lists as well as heap data separately.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Yongseok Koh <yskoh@mellanox.com>
2018-12-20 18:10:08 +01:00

85 lines
1.7 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);
struct rte_memseg_list *
malloc_heap_create_external_seg(void *va_addr, rte_iova_t iova_addrs[],
unsigned int n_pages, size_t page_sz, const char *seg_name,
unsigned int socket_id);
struct rte_memseg_list *
malloc_heap_find_external_seg(void *va_addr, size_t len);
int
malloc_heap_destroy_external_seg(struct rte_memseg_list *msl);
int
malloc_heap_add_external_memory(struct malloc_heap *heap,
struct rte_memseg_list *msl);
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_ */