numam-dpdk/lib/eal/common/malloc_mp.h
Bruce Richardson 99a2dd955f lib: remove librte_ prefix from directory names
There is no reason for the DPDK libraries to all have 'librte_' prefix on
the directory names. This prefix makes the directory names longer and also
makes it awkward to add features referring to individual libraries in the
build - should the lib names be specified with or without the prefix.
Therefore, we can just remove the library prefix and use the library's
unique name as the directory name, i.e. 'eal' rather than 'librte_eal'

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
2021-04-21 14:04:09 +02:00

87 lines
1.8 KiB
C

/* SPDX-License-Identifier: BSD-3-Clause
* Copyright(c) 2018 Intel Corporation
*/
#ifndef MALLOC_MP_H
#define MALLOC_MP_H
#include <stdbool.h>
#include <stdint.h>
#include <rte_common.h>
#include <rte_random.h>
#include <rte_spinlock.h>
#include <rte_tailq.h>
/* forward declarations */
struct malloc_heap;
struct rte_memseg;
/* multiprocess synchronization structures for malloc */
enum malloc_req_type {
REQ_TYPE_ALLOC, /**< ask primary to allocate */
REQ_TYPE_FREE, /**< ask primary to free */
REQ_TYPE_SYNC /**< ask secondary to synchronize its memory map */
};
enum malloc_req_result {
REQ_RESULT_SUCCESS,
REQ_RESULT_FAIL
};
struct malloc_req_alloc {
uint32_t malloc_heap_idx;
uint64_t page_sz;
size_t elt_size;
int socket;
unsigned int flags;
size_t align;
size_t bound;
bool contig;
};
struct malloc_req_free {
RTE_STD_C11
union {
void *addr;
uint64_t addr_64;
};
size_t len;
};
struct malloc_mp_req {
enum malloc_req_type t;
RTE_STD_C11
union {
struct malloc_req_alloc alloc_req;
struct malloc_req_free free_req;
};
uint64_t id; /**< not to be populated by caller */
enum malloc_req_result result;
};
int
register_mp_requests(void);
int
request_to_primary(struct malloc_mp_req *req);
/* synchronous memory map sync request */
int
request_sync(void);
/* functions from malloc_heap exposed here */
int
malloc_heap_free_pages(void *aligned_start, size_t aligned_len);
struct malloc_elem *
alloc_pages_on_heap(struct malloc_heap *heap, uint64_t pg_sz, size_t elt_size,
int socket, unsigned int flags, size_t align, size_t bound,
bool contig, struct rte_memseg **ms, int n_segs);
void
rollback_expand_heap(struct rte_memseg **ms, int n_segs,
struct malloc_elem *elem, void *map_addr, size_t map_len);
#endif /* MALLOC_MP_H */