1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2010-2014 Intel Corporation
3  */
4 
5 #ifndef MALLOC_HEAP_H_
6 #define MALLOC_HEAP_H_
7 
8 #include <stdbool.h>
9 
10 #include <rte_malloc.h>
11 #include <rte_malloc_heap.h>
12 
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16 
17 static inline unsigned
18 malloc_get_numa_socket(void)
19 {
20 	unsigned socket_id = rte_socket_id();
21 
22 	if (socket_id == (unsigned)SOCKET_ID_ANY)
23 		return 0;
24 
25 	return socket_id;
26 }
27 
28 void *
29 malloc_heap_alloc(const char *type, size_t size, int socket, unsigned int flags,
30 		size_t align, size_t bound, bool contig);
31 
32 void *
33 malloc_heap_alloc_biggest(const char *type, int socket, unsigned int flags,
34 		size_t align, bool contig);
35 
36 int
37 malloc_heap_create(struct malloc_heap *heap, const char *heap_name);
38 
39 int
40 malloc_heap_destroy(struct malloc_heap *heap);
41 
42 int
43 malloc_heap_add_external_memory(struct malloc_heap *heap, void *va_addr,
44 		rte_iova_t iova_addrs[], unsigned int n_pages, size_t page_sz);
45 
46 int
47 malloc_heap_remove_external_memory(struct malloc_heap *heap, void *va_addr,
48 		size_t len);
49 
50 int
51 malloc_heap_free(struct malloc_elem *elem);
52 
53 int
54 malloc_heap_resize(struct malloc_elem *elem, size_t size);
55 
56 int
57 malloc_heap_get_stats(struct malloc_heap *heap,
58 		struct rte_malloc_socket_stats *socket_stats);
59 
60 void
61 malloc_heap_dump(struct malloc_heap *heap, FILE *f);
62 
63 int
64 malloc_socket_to_heap_id(unsigned int socket_id);
65 
66 int
67 rte_eal_malloc_heap_init(void);
68 
69 #ifdef __cplusplus
70 }
71 #endif
72 
73 #endif /* MALLOC_HEAP_H_ */
74