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

FreeBSD Manual Pages

  
 
  

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

NAME
       rte_eal.h

SYNOPSIS
       #include	<stdalign.h>
       #include	<stdint.h>
       #include	<time.h>
       #include	<rte_config.h>
       #include	<rte_compat.h>
       #include	<rte_per_lcore.h>
       #include	<rte_uuid.h>
       #include	<rte_pci_dev_feature_defs.h>

   Macros
       #define RTE_MAGIC   19820526

   Typedefs
       typedef int(* rte_mp_t) (const struct rte_mp_msg	*msg, const void
	   *peer)
       typedef int(* rte_mp_async_reply_t) (const struct rte_mp_msg *request,
	   const struct	rte_mp_reply *reply)
       typedef void(* rte_usage_hook_t)	(const char *prgname)

   Enumerations
       enum rte_proc_type_t
       enum rte_iova_mode

   Functions
       enum rte_proc_type_t rte_eal_process_type (void)
       int rte_eal_iopl_init (void)
       int rte_eal_init	(int argc, char	**argv)
       int rte_eal_cleanup (void)
       int rte_eal_primary_proc_alive (const char *config_file_path)
       bool rte_mp_disable (void)
       int rte_mp_action_register (const char *name, rte_mp_t action)
       void rte_mp_action_unregister (const char *name)
       int rte_mp_sendmsg (struct rte_mp_msg *msg)
       int rte_mp_request_sync (struct rte_mp_msg *req,	struct rte_mp_reply
	   *reply, const struct	timespec *ts)
       int rte_mp_request_async	(struct	rte_mp_msg *req, const struct timespec
	   *ts,	rte_mp_async_reply_t clb)
       int rte_mp_reply	(struct	rte_mp_msg *msg, const char *peer)
       rte_usage_hook_t	rte_set_application_usage_hook (rte_usage_hook_t
	   usage_func)
       int rte_eal_has_hugepages (void)
       int rte_eal_has_pci (void)
       int rte_eal_create_uio_dev (void)
       enum rte_intr_mode rte_eal_vfio_intr_mode (void)
       void rte_eal_vfio_get_vf_token (rte_uuid_t vf_token)
       int rte_sys_gettid (void)
       static int rte_gettid (void)
       __rte_internal uint64_t rte_eal_get_baseaddr (void)
       enum rte_iova_mode rte_eal_iova_mode (void)
       const char * rte_eal_mbuf_user_pool_ops (void)
       const char * rte_eal_get_runtime_dir (void)

Detailed Description
       EAL Configuration API

       Definition in file rte_eal.h.

Macro Definition Documentation
   #define RTE_MAGIC   19820526
       Magic number written by the main	partition when ready.

       Definition at line 29 of	file rte_eal.h.

Typedef	Documentation
   typedef int(* rte_mp_t) (const struct rte_mp_msg *msg, const	void *peer)
       Action function typedef used by other components.

       As we create socket channel for primary/secondary communication,	use
       this function typedef to	register action	for coming messages.

       Note
	   When	handling IPC request callbacks,	the reply must be sent even in
	   cases of error handling. Simply returning success or	failure	will
	   not send a response to the requestor. Implementation	of error
	   signalling mechanism	is up to the application.

	   No memory allocations should	take place inside the callback.

       Definition at line 189 of file rte_eal.h.

   typedef int(* rte_mp_async_reply_t) (const struct rte_mp_msg	*request,
       const struct rte_mp_reply *reply)
       Asynchronous reply function typedef used	by other components.

       As we create socket channel for primary/secondary communication,	use
       this function typedef to	register action	for coming responses to
       asynchronous requests.

       Note
	   When	handling IPC request callbacks,	the reply must be sent even in
	   cases of error handling. Simply returning success or	failure	will
	   not send a response to the requestor. Implementation	of error
	   signalling mechanism	is up to the application.

	   No memory allocations should	take place inside the callback.

       Definition at line 205 of file rte_eal.h.

   typedef void(* rte_usage_hook_t) (const char	*prgname)
       Usage function typedef used by the application usage function.

       Use this	function typedef to define and call
       rte_set_application_usage_hook()	routine.

       Definition at line 351 of file rte_eal.h.

Enumeration Type Documentation
   enum	rte_proc_type_t
       The type	of process in a	linux, multi-process setup

       Definition at line 34 of	file rte_eal.h.

   enum	rte_iova_mode
       IOVA mapping mode.

       IOVA mapping mode is iommu programming mode of a	device.	That device
       (for example: IOMMU backed DMA device) based on rte_iova_mode will
       generate	physical or virtual address.

       Definition at line 462 of file rte_eal.h.

Function Documentation
   enum	rte_proc_type_t	rte_eal_process_type (void)
       Get the process type in a multi-process setup

       Returns
	   The process type

   int rte_eal_iopl_init (void)
       Request iopl privilege for all RPL.

       This function should be called by pmds which need access	to ioports.

       Returns

	    On	success, returns 0.

	    On	failure, returns -1.

   int rte_eal_init (int argc, char ** argv)
       Initialize the Environment Abstraction Layer (EAL).

       This  function  is  to  be  executed on the MAIN	lcore only, as soon as
       possible	in the application's  main()  function.	 It  puts  the	WORKER
       lcores in the WAIT state.

       Parameters
	   argc	 A  non-negative  value.  If  it  is greater than 0, the array
	   members  for	 argv[0]  through  argv[argc]  (non-inclusive)	 shall
	   contain pointers to strings.
	   argv	An array of strings. The contents of the array,	as well	as the
	   strings  which are pointed to by the	array, may be modified by this
	   function. The program name pointer argv[0] is copied	into the  last
	   parsed  argv	 so  that argv[0] is still the same after deducing the
	   parsed arguments.

       Returns

	    On	success, the number of parsed arguments, which is  greater  or
	     equal  to	zero.  After the call to rte_eal_init(), all arguments
	     argv[x] with x < ret may have been	modified by this function call
	     and should	not be further interpreted by the application. The EAL
	     does not take any ownership of the	memory	used  for  either  the
	     argv array, or its	members.

	    On	 failure,  -1  and  rte_errno is set to	a value	indicating the
	     cause for failure.	In some	instances, the application  will  need
	     to	be restarted as	part of	clearing the issue.

       Error  codes  returned  via  rte_errno:	EACCES indicates a permissions
       issue.

       EAGAIN indicates	either a bus or	system	resource  was  not  available,
       setup may be attempted again.

       EALREADY	 indicates  that  the  rte_eal_init  function has already been
       called, and cannot be called again.

       EFAULT indicates	the tailq configuration	name was not found  in	memory
       configuration.

       EINVAL indicates	invalid	parameters were	passed as argv/argc.

       ENOMEM indicates	failure	likely caused by an out-of-memory condition.

       ENODEV indicates	memory setup issues.

       ENOTSUP indicates that the EAL cannot initialize	on this	system.

       EPROTO  indicates  that	the  PCI  bus is either	not present, or	is not
       readable	by the eal.

       ENOEXEC indicates that a	service	core failed to launch successfully.

   int rte_eal_cleanup (void)
       Clean up	the Environment	Abstraction Layer (EAL)

       This function must be called to release any internal resources that EAL
       has allocated during rte_eal_init(). After this call, no	DPDK  function
       calls may be made. It is	expected that common usage of this function is
       to call it just before terminating the process.

       Returns

	    0 Successfully released all internal EAL resources.

	    -EFAULT There was an error	in releasing all resources.

   int rte_eal_primary_proc_alive (const char *	config_file_path)
       Check if	a primary process is currently alive

       This function returns true when a primary process is currently active.

       Parameters
	   config_file_path  The  config_file_path  argument  provided	should
	   point at the	location that the  primary  process  will  create  its
	   config file.	If NULL, the default config file path is used.

       Returns

	    If	alive, returns 1.

	    If	dead, returns 0.

   bool	rte_mp_disable (void)
       Disable multiprocess.

       This function can be called to indicate that multiprocess won't be used
       for the rest of the application life.

       Returns

	    true  if  called  from  a	primary	 process that had no secondary
	     processes attached,

	    false, otherwise.

   int rte_mp_action_register (const char * name, rte_mp_t action)
       Register	an action function for primary/secondary communication.

       Call this function to register an  action,  if  the  calling  component
       wants  to response the messages from the	corresponding component	in its
       primary process or secondary processes.

       Note
	   IPC may be unsupported in certain circumstances, so	caller	should
	   check for ENOTSUP error.

       Parameters
	   name	 The  name  argument plays as the nonredundant key to find the
	   action.
	   action The action argument is the function pointer  to  the	action
	   function.

       Returns

	    0 on success.

	    (<0) on failure.

   void	rte_mp_action_unregister (const	char * name)
       Unregister an action function for primary/secondary communication.

       Call  this  function  to	 unregister an action if the calling component
       does not	want to	response the messages from the corresponding component
       in its primary process or secondary processes.

       Note
	   IPC may be unsupported in certain circumstances, so	caller	should
	   check for ENOTSUP error.

       Parameters
	   name	 The  name  argument plays as the nonredundant key to find the
	   action.

   int rte_mp_sendmsg (struct rte_mp_msg * msg)
       Send a message to the peer process.

       This function will send a message which will be responded by the	action
       identified by name in the peer process.

       Parameters
	   msg The msg argument	contains the customized	message.

       Returns

	    On	success, return	0.

	    On	 failure,  return  -1,	and  the  reason  will	be  stored  in
	     rte_errno.

   int	rte_mp_request_sync  (struct  rte_mp_msg  * req, struct	rte_mp_reply *
       reply, const struct timespec * ts)
       Send a request to the peer process and expect a reply.

       This function sends a request message to	the  peer  process,  and  will
       block until receiving reply message from	the peer process.

       Note
	   The caller is responsible to	free reply->replies.

	   This	 API  must not be used inside memory-related or	IPC callbacks,
	   and no memory allocations should take place inside such callback.

	   IPC may be unsupported in certain circumstances, so	caller	should
	   check for ENOTSUP error.

       Parameters
	   req The req argument	contains the customized	request	message.
	   reply  The  reply  argument	will  be  for  storing all the replied
	   messages; the caller	is responsible for free	reply->msgs.
	   ts The ts argument specifies	how long we can	wait for  the  peer(s)
	   to reply.

       Returns

	    On	success, return	0.

	    On	 failure,  return  -1,	and  the  reason  will	be  stored  in
	     rte_errno.

   int rte_mp_request_async (struct rte_mp_msg * req, const struct timespec  *
       ts, rte_mp_async_reply_t	clb)
       Send  a	request	 to  the peer process and expect a reply in a separate
       callback.

       This function sends a request message to	the peer process, and will not
       block. Instead, reply will be received in a separate callback.

       Note
	   IPC may be unsupported in certain circumstances, so	caller	should
	   check for ENOTSUP error.

       Parameters
	   req The req argument	contains the customized	request	message.
	   ts  The  ts argument	specifies how long we can wait for the peer(s)
	   to reply.
	   clb The callback to trigger when all	 responses  for	 this  request
	   have	arrived.

       Returns

	    On	success, return	0.

	    On	 failure,  return  -1,	and  the  reason  will	be  stored  in
	     rte_errno.

   int rte_mp_reply (struct rte_mp_msg * msg, const char * peer)
       Send a reply to the peer	process.

       This function will send a  reply	 message  in  response	to  a  request
       message received	previously.

       Note
	   When	handling IPC request callbacks,	the reply must be sent even in
	   cases  of  error handling. Simply returning success or failure will
	   not send a response	to  the	 requestor.  Implementation  of	 error
	   signalling mechanism	is up to the application.

       Parameters
	   msg The msg argument	contains the customized	message.
	   peer	The peer argument is the pointer to the	peer socket path.

       Returns

	    On	success, return	0.

	    On	 failure,  return  -1,	and  the  reason  will	be  stored  in
	     rte_errno.

   rte_usage_hook_t	 rte_set_application_usage_hook	     (rte_usage_hook_t
       usage_func)
       Add application usage routine callout from the eal_usage() routine.

       This  function  allows  the application to include its usage message in
       the	EAL	 system	     usage	message.      The      routine
       rte_set_application_usage_hook()	  needs	  to   be  called  before  the
       rte_eal_init() routine in the application.

       This routine is optional	for the	application and	will behave as if  the
       set routine was never called as the default behavior.

       Parameters
	   usage_func	The  func  argument  is	 a  function  pointer  to  the
	   application	usage  routine.	 Called	 function  is  defined	 using
	   rte_usage_hook_t    typedef,	   which   is	of   the   form	  void
	   rte_usage_func(const	char * prgname).

       Calling this routine with a  NULL  value	 will  reset  the  usage  hook
       routine and return the current value, which could be NULL.

       Returns

	    Returns the current value of the rte_application_usage pointer to
	     allow  the	 caller	 to  daisy chain the usage routines if needing
	     more then one.

   int rte_eal_has_hugepages (void)
       Whether EAL is using huge pages (disabled by --no-huge option). The no-
       huge mode is not	compatible with	all drivers or features.

       Returns
	   Nonzero if hugepages	are enabled.

   int rte_eal_has_pci (void)
       Whether EAL is using PCI	bus. Disabled by --no-pci option.

       Returns
	   Nonzero if the PCI bus is enabled.

   int rte_eal_create_uio_dev (void)
       Whether the EAL was asked to create UIO device.

       Returns
	   Nonzero if true.

   enum	rte_intr_mode rte_eal_vfio_intr_mode (void)
       The user-configured vfio	interrupt mode.

       Returns
	   Interrupt mode configured with the command line, RTE_INTR_MODE_NONE
	   by default.

   void	rte_eal_vfio_get_vf_token (rte_uuid_t vf_token)
       Copy the	user-configured	vfio VF	token.

       Parameters
	   vf_token vfio VF token configured with the command line  is	copied
	   into	this parameter,	zero uuid by default.

   int rte_sys_gettid (void)
       A wrap API for syscall gettid.

       Returns
	   On  success,	returns	the thread ID of calling process. It is	always
	   successful.

   static int rte_gettid (void)	[inline],  [static]
       Get system unique thread	id.

       Returns
	   On success, returns the thread ID of	calling	process. It is	always
	   successful.

       Definition at line 439 of file rte_eal.h.

   __rte_internal uint64_t rte_eal_get_baseaddr	(void)
       Get the OS-specific EAL base address.

       Returns
	   The base address.

   enum	rte_iova_mode rte_eal_iova_mode	(void)
       Get the iova mode

       Returns
	   enum	rte_iova_mode value.

   const char *	rte_eal_mbuf_user_pool_ops (void)
       Get user	provided pool ops name for mbuf

       Returns
	   returns user	provided pool ops name.

   const char *	rte_eal_get_runtime_dir	(void)
       Get the runtime directory of DPDK

       Returns
	   The runtime directory path of DPDK

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

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

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

home | help