eal: make u64 reciprocal divisor const
[dpdk.git] / lib / librte_eal / common / malloc_heap.h
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 struct rte_memseg_list *
43 malloc_heap_create_external_seg(void *va_addr, rte_iova_t iova_addrs[],
44                 unsigned int n_pages, size_t page_sz, const char *seg_name,
45                 unsigned int socket_id);
46
47 struct rte_memseg_list *
48 malloc_heap_find_external_seg(void *va_addr, size_t len);
49
50 int
51 malloc_heap_destroy_external_seg(struct rte_memseg_list *msl);
52
53 int
54 malloc_heap_add_external_memory(struct malloc_heap *heap,
55                 struct rte_memseg_list *msl);
56
57 int
58 malloc_heap_remove_external_memory(struct malloc_heap *heap, void *va_addr,
59                 size_t len);
60
61 int
62 malloc_heap_free(struct malloc_elem *elem);
63
64 int
65 malloc_heap_resize(struct malloc_elem *elem, size_t size);
66
67 int
68 malloc_heap_get_stats(struct malloc_heap *heap,
69                 struct rte_malloc_socket_stats *socket_stats);
70
71 void
72 malloc_heap_dump(struct malloc_heap *heap, FILE *f);
73
74 int
75 malloc_socket_to_heap_id(unsigned int socket_id);
76
77 int
78 rte_eal_malloc_heap_init(void);
79
80 #ifdef __cplusplus
81 }
82 #endif
83
84 #endif /* MALLOC_HEAP_H_ */