Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
rte_memzone.h(3)		     DPDK		      rte_memzone.h(3)

NAME
       rte_memzone.h

SYNOPSIS
       #include	<stdio.h>
       #include	<rte_memory.h>
       #include	<rte_common.h>

   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
       int rte_memzone_max_set (size_t max)
       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)

Detailed Description
       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.

Macro Definition Documentation
   #define RTE_MEMZONE_2MB   0x00000001
       Use 2MB pages.

       Definition at line 33 of	file rte_memzone.h.

   #define RTE_MEMZONE_1GB   0x00000002
       Use 1GB pages.

       Definition at line 34 of	file rte_memzone.h.

   #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.

Function Documentation
   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().

       Parameters
	   max Maximum number of memzones.

       Returns
	   0 on	success, -1 otherwise.

   size_t rte_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.

   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.

       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.

       Parameters
	   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.

	    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

   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.

       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.

       Parameters
	   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.

	    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

   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.

       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.

       Parameters
	   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.

	    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

   int rte_memzone_free	(const struct rte_memzone * mz)
       Free a memzone.

       Parameters
	   mz A	pointer	to the memzone

       Returns
	   -EINVAL - invalid parameter.	0 - success

   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.

       Parameters
	   name	The name of the	memzone.

       Returns
	   A pointer to	a read-only memzone descriptor.

   void	rte_memzone_dump (FILE * f)
       Dump all	reserved memzones to a file.

       Parameters
	   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

       Parameters
	   func	Iterator function
	   arg Argument	passed to iterator

Author
       Generated automatically by Doxygen for DPDK from	the source code.

Version	25.11.0			Thu Jun	11 2026		      rte_memzone.h(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=RTE_MEMZONE_4GB&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help