DPDK
24.07.0
|
Go to the source code of this file.
Data Structures | |
struct | rte_memzone |
Macros | |
#define | RTE_MEMZONE_2MB 0x00000001 |
#define | RTE_MEMZONE_1GB 0x00000002 |
#define | RTE_MEMZONE_16MB 0x00000100 |
#define | RTE_MEMZONE_16GB 0x00000200 |
#define | RTE_MEMZONE_256KB 0x00010000 |
#define | RTE_MEMZONE_256MB 0x00020000 |
#define | RTE_MEMZONE_512MB 0x00040000 |
#define | RTE_MEMZONE_4GB 0x00080000 |
#define | RTE_MEMZONE_SIZE_HINT_ONLY 0x00000004 |
#define | RTE_MEMZONE_IOVA_CONTIG 0x00100000 |
#define | RTE_MEMZONE_NAMESIZE 32 |
Functions | |
__rte_experimental int | rte_memzone_max_set (size_t max) |
__rte_experimental size_t | rte_memzone_max_get (void) |
const struct rte_memzone * | rte_memzone_reserve (const char *name, size_t len, int socket_id, unsigned flags) |
const struct rte_memzone * | rte_memzone_reserve_aligned (const char *name, size_t len, int socket_id, unsigned flags, unsigned align) |
const struct rte_memzone * | rte_memzone_reserve_bounded (const char *name, size_t len, int socket_id, unsigned flags, unsigned align, unsigned bound) |
int | rte_memzone_free (const struct rte_memzone *mz) |
const struct rte_memzone * | rte_memzone_lookup (const char *name) |
void | rte_memzone_dump (FILE *f) |
void | rte_memzone_walk (void(*func)(const struct rte_memzone *, void *arg), void *arg) |
RTE Memzone
The goal of the memzone allocator is to reserve contiguous portions of physical memory. These zones are identified by a name.
The memzone descriptors are shared by all partitions and are located in a known place of physical memory. This zone is accessed using rte_eal_get_configuration(). The lookup (by name) of a memory zone can be done in any partition and returns the same physical address.
A reserved memory zone cannot be unreserved. The reservation shall be done at initialization time only.
Definition in file rte_memzone.h.
#define RTE_MEMZONE_2MB 0x00000001 |
Use 2MB pages.
Definition at line 33 of file rte_memzone.h.
#define RTE_MEMZONE_1GB 0x00000002 |
#define RTE_MEMZONE_16MB 0x00000100 |
Use 16MB pages.
Definition at line 35 of file rte_memzone.h.
#define RTE_MEMZONE_16GB 0x00000200 |
Use 16GB pages.
Definition at line 36 of file rte_memzone.h.
#define RTE_MEMZONE_256KB 0x00010000 |
Use 256KB pages.
Definition at line 37 of file rte_memzone.h.
#define RTE_MEMZONE_256MB 0x00020000 |
Use 256MB pages.
Definition at line 38 of file rte_memzone.h.
#define RTE_MEMZONE_512MB 0x00040000 |
Use 512MB pages.
Definition at line 39 of file rte_memzone.h.
#define RTE_MEMZONE_4GB 0x00080000 |
Use 4GB pages.
Definition at line 40 of file rte_memzone.h.
#define RTE_MEMZONE_SIZE_HINT_ONLY 0x00000004 |
Use available page size
Definition at line 41 of file rte_memzone.h.
#define RTE_MEMZONE_IOVA_CONTIG 0x00100000 |
Ask for IOVA-contiguous memzone.
Definition at line 42 of file rte_memzone.h.
#define RTE_MEMZONE_NAMESIZE 32 |
Maximum length of memory zone name.
Definition at line 50 of file rte_memzone.h.
__rte_experimental int rte_memzone_max_set | ( | size_t | max | ) |
Set the maximum number of memzones.
This function can only be called prior to rte_eal_init().
max | Maximum number of memzones. |
__rte_experimental size_t rte_memzone_max_get | ( | void | ) |
Get the maximum number of memzones.
const struct rte_memzone* rte_memzone_reserve | ( | const char * | name, |
size_t | len, | ||
int | socket_id, | ||
unsigned | flags | ||
) |
Reserve a portion of physical memory.
This function reserves some memory and returns a pointer to a correctly filled memzone descriptor. If the allocation cannot be done, return NULL.
name | The name of the memzone. If it already exists, the function will fail and return NULL. |
len | The size of the memory to be reserved. If it is 0, the biggest contiguous zone will be reserved. |
socket_id | The socket identifier in the case of NUMA. The value can be SOCKET_ID_ANY if there is no NUMA constraint for the reserved zone. |
flags | The flags parameter is used to request memzones to be taken from specifically sized hugepages.
|
const struct rte_memzone* rte_memzone_reserve_aligned | ( | const char * | name, |
size_t | len, | ||
int | socket_id, | ||
unsigned | flags, | ||
unsigned | align | ||
) |
Reserve a portion of physical memory with alignment on a specified boundary.
This function reserves some memory with alignment on a specified boundary, and returns a pointer to a correctly filled memzone descriptor. If the allocation cannot be done or if the alignment is not a power of 2, returns NULL.
name | The name of the memzone. If it already exists, the function will fail and return NULL. |
len | The size of the memory to be reserved. If it is 0, the biggest contiguous zone will be reserved. |
socket_id | The socket identifier in the case of NUMA. The value can be SOCKET_ID_ANY if there is no NUMA constraint for the reserved zone. |
flags | The flags parameter is used to request memzones to be taken from specifically sized hugepages.
|
align | Alignment for resulting memzone. Must be a power of 2. |
const struct rte_memzone* rte_memzone_reserve_bounded | ( | const char * | name, |
size_t | len, | ||
int | socket_id, | ||
unsigned | flags, | ||
unsigned | align, | ||
unsigned | bound | ||
) |
Reserve a portion of physical memory with specified alignment and boundary.
This function reserves some memory with specified alignment and boundary, and returns a pointer to a correctly filled memzone descriptor. If the allocation cannot be done or if the alignment or boundary are not a power of 2, returns NULL. Memory buffer is reserved in a way, that it wouldn't cross specified boundary. That implies that requested length should be less or equal then boundary.
name | The name of the memzone. If it already exists, the function will fail and return NULL. |
len | The size of the memory to be reserved. If it is 0, the biggest contiguous zone will be reserved. |
socket_id | The socket identifier in the case of NUMA. The value can be SOCKET_ID_ANY if there is no NUMA constraint for the reserved zone. |
flags | The flags parameter is used to request memzones to be taken from specifically sized hugepages.
|
align | Alignment for resulting memzone. Must be a power of 2. |
bound | Boundary for resulting memzone. Must be a power of 2 or zero. Zero value implies no boundary condition. |
int rte_memzone_free | ( | const struct rte_memzone * | mz | ) |
Free a memzone.
mz | A pointer to the memzone |
const struct rte_memzone* rte_memzone_lookup | ( | const char * | name | ) |
Lookup for a memzone.
Get a pointer to a descriptor of an already reserved memory zone identified by the name given as an argument.
name | The name of the memzone. |
void rte_memzone_dump | ( | FILE * | f | ) |
Dump all reserved memzones to a file.
f | A pointer to a file for output |
void rte_memzone_walk | ( | void(*)(const struct rte_memzone *, void *arg) | func, |
void * | arg | ||
) |
Walk list of all memzones
func | Iterator function |
arg | Argument passed to iterator |