intrte_memzone_max_set(size_tmax)
Set the maximum number of memzones.
This function can only be called prior to rte_eal_init().
Parametersmax Maximum number of memzones.
Returns
0 on success, -1 otherwise.
size_trte_memzone_max_get(void)
Get the maximum number of memzones.
Note
: The maximum value will not change after calling rte_eal_init().
Returns
Maximum number of memzones.
conststructrte_memzone*rte_memzone_reserve(constchar*name,size_tlen,intsocket_id,unsignedflags)
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.
Note
Reserving memzones with len set to 0 will only attempt to allocate memzones from memory that is
already available. It will not trigger any new allocations.
: When reserving memzones with len set to 0, it is preferable to also set a valid socket_id. Setting
socket_id to SOCKET_ID_ANY is supported, but will likely not yield expected results. Specifically,
the resulting memzone may not necessarily be the biggest memzone available, but rather biggest
memzone available on socket id corresponding to an lcore from which reservation was called.
Parametersname 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.
• RTE_MEMZONE_IOVA_CONTIG - Ensure reserved memzone is IOVA-contiguous. This option should be used
when allocating memory intended for hardware rings etc.
Returns
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
• 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
conststructrte_memzone*rte_memzone_reserve_aligned(constchar*name,size_tlen,intsocket_id,unsignedflags,unsignedalign)
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.
Note
Reserving memzones with len set to 0 will only attempt to allocate memzones from memory that is
already available. It will not trigger any new allocations.
: When reserving memzones with len set to 0, it is preferable to also set a valid socket_id. Setting
socket_id to SOCKET_ID_ANY is supported, but will likely not yield expected results. Specifically,
the resulting memzone may not necessarily be the biggest memzone available, but rather biggest
memzone available on socket id corresponding to an lcore from which reservation was called.
Parametersname 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.
• RTE_MEMZONE_IOVA_CONTIG - Ensure reserved memzone is IOVA-contiguous. This option should be used
when allocating memory intended for hardware rings etc.
align Alignment for resulting memzone. Must be a power of 2.
Returns
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
• 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
conststructrte_memzone*rte_memzone_reserve_bounded(constchar*name,size_tlen,intsocket_id,unsignedflags,unsignedalign,unsignedbound)
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.
Note
Reserving memzones with len set to 0 will only attempt to allocate memzones from memory that is
already available. It will not trigger any new allocations.
: When reserving memzones with len set to 0, it is preferable to also set a valid socket_id. Setting
socket_id to SOCKET_ID_ANY is supported, but will likely not yield expected results. Specifically,
the resulting memzone may not necessarily be the biggest memzone available, but rather biggest
memzone available on socket id corresponding to an lcore from which reservation was called.
Parametersname 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.
• RTE_MEMZONE_IOVA_CONTIG - Ensure reserved memzone is IOVA-contiguous. This option should be used
when allocating memory intended for hardware rings etc.
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.
Returns
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
• 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
intrte_memzone_free(conststructrte_memzone*mz)
Free a memzone.
Parametersmz A pointer to the memzone
Returns
-EINVAL - invalid parameter. 0 - success
conststructrte_memzone*rte_memzone_lookup(constchar*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.
Parametersname The name of the memzone.
Returns
A pointer to a read-only memzone descriptor.
voidrte_memzone_dump(FILE*f)
Dump all reserved memzones to a file.
Parametersf A pointer to a file for output
voidrte_memzone_walk(void(*)(conststructrte_memzone*,void*arg)func,void*arg)
Walk list of all memzones
Parametersfunc Iterator function
arg Argument passed to iterator