|struct rte_memzone * ||rte_memzone_reserve (const char *name, size_t len, int socket_id, unsigned flags)|
|struct rte_memzone * ||rte_memzone_reserve_aligned (const char *name, size_t len, int socket_id, unsigned flags, unsigned align)|
|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)|
|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)|
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.
|struct rte_memzone* rte_memzone_reserve_bounded
||const char *
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.|
- RTE_MEMZONE_2MB - Reserved from 2MB pages
- RTE_MEMZONE_1GB - Reserved from 1GB pages
- RTE_MEMZONE_16MB - Reserved from 16MB pages
- RTE_MEMZONE_16GB - Reserved from 16GB pages
- RTE_MEMZONE_256KB - Reserved from 256KB pages
- RTE_MEMZONE_256MB - Reserved from 256MB pages
- RTE_MEMZONE_512MB - Reserved from 512MB pages
- RTE_MEMZONE_4GB - Reserved from 4GB pages
- RTE_MEMZONE_SIZE_HINT_ONLY - Allow alternative page size to be used if the requested page size is unavailable. If this flag is not set, the function will return error on an unavailable size request.
|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. |
- A pointer to a correctly-filled read-only memzone descriptor, or NULL on error. On error case, rte_errno will be set appropriately:
- E_RTE_NO_CONFIG - function could not get pointer to rte_config structure
- E_RTE_SECONDARY - function was called from a secondary process instance
- ENOSPC - the maximum number of memzones has already been allocated
- EEXIST - a memzone with the same name already exists
- ENOMEM - no appropriate memory area found in which to create memzone
- EINVAL - invalid parameters