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

FreeBSD Manual Pages

  
 
  

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

NAME
       rte_interrupts.h

SYNOPSIS
       #include	<stdbool.h>
       #include	<rte_bitops.h>
       #include	<rte_common.h>
       #include	<rte_compat.h>
       #include	<rte_epoll.h>

   Macros
       #define RTE_INTR_INSTANCE_F_PRIVATE   UINT32_C(0)
       #define RTE_INTR_INSTANCE_F_SHARED   RTE_BIT32(0)

   Typedefs
       typedef void(* rte_intr_callback_fn) (void *cb_arg)
       typedef void(* rte_intr_unregister_callback_fn) (struct rte_intr_handle
	   *intr_handle, void *cb_arg)

   Enumerations
       enum rte_intr_handle_type { RTE_INTR_HANDLE_UNKNOWN = 0,
	   RTE_INTR_HANDLE_UIO,	RTE_INTR_HANDLE_UIO_INTX,
	   RTE_INTR_HANDLE_VFIO_LEGACY,	RTE_INTR_HANDLE_VFIO_MSI,
	   RTE_INTR_HANDLE_VFIO_MSIX, RTE_INTR_HANDLE_ALARM,
	   RTE_INTR_HANDLE_EXT,	RTE_INTR_HANDLE_VDEV,
	   RTE_INTR_HANDLE_DEV_EVENT, RTE_INTR_HANDLE_VFIO_REQ,
	   RTE_INTR_HANDLE_MAX }

   Functions
       int rte_intr_callback_register (const struct rte_intr_handle
	   *intr_handle, rte_intr_callback_fn cb, void *cb_arg)
       int rte_intr_callback_unregister	(const struct rte_intr_handle
	   *intr_handle, rte_intr_callback_fn cb, void *cb_arg)
       int rte_intr_callback_unregister_pending	(const struct rte_intr_handle
	   *intr_handle, rte_intr_callback_fn cb_fn, void *cb_arg,
	   rte_intr_unregister_callback_fn ucb_fn)
       int rte_intr_callback_unregister_sync (const struct rte_intr_handle
	   *intr_handle, rte_intr_callback_fn cb, void *cb_arg)
       int rte_intr_enable (const struct rte_intr_handle *intr_handle)
       int rte_intr_disable (const struct rte_intr_handle *intr_handle)
       int rte_intr_ack	(const struct rte_intr_handle *intr_handle)
       int rte_thread_is_intr (void)
       struct rte_intr_handle *	rte_intr_instance_alloc	(uint32_t flags)
       void rte_intr_instance_free (struct rte_intr_handle *intr_handle)
       int rte_intr_fd_set (struct rte_intr_handle *intr_handle, int fd)
       int rte_intr_fd_get (const struct rte_intr_handle *intr_handle)
       int rte_intr_type_set (struct rte_intr_handle *intr_handle, enum
	   rte_intr_handle_type	type)
       enum rte_intr_handle_type rte_intr_type_get (const struct
	   rte_intr_handle *intr_handle)

Detailed Description
       The RTE interrupt interface provides functions to register/unregister
       callbacks for a specific	interrupt.

       Definition in file rte_interrupts.h.

Macro Definition Documentation
   #define RTE_INTR_INSTANCE_F_PRIVATE	 UINT32_C(0)
       Interrupt instance allocation flags

       See also
	   rte_intr_instance_alloc Interrupt instance will not be shared
	   between primary and secondary processes.

       Definition at line 34 of	file rte_interrupts.h.

   #define RTE_INTR_INSTANCE_F_SHARED	RTE_BIT32(0)
       Interrupt instance will be shared between primary and secondary
       processes.

       Definition at line 36 of	file rte_interrupts.h.

Typedef	Documentation
   typedef void(* rte_intr_callback_fn)	(void *cb_arg)
       Function	to be registered for the specific interrupt

       Definition at line 61 of	file rte_interrupts.h.

   typedef void(* rte_intr_unregister_callback_fn) (struct rte_intr_handle
       *intr_handle, void *cb_arg)
       Function	to call	after a	callback is unregistered. Can be used to close
       fd and free cb_arg.

       Definition at line 67 of	file rte_interrupts.h.

Enumeration Type Documentation
   enum	rte_intr_handle_type
       The interrupt source type, e.g. UIO, VFIO, ALARM	etc.

       Enumerator

       RTE_INTR_HANDLE_UNKNOWN
	      generic unknown handle

       RTE_INTR_HANDLE_UIO
	      uio device handle

       RTE_INTR_HANDLE_UIO_INTX
	      uio generic handle

       RTE_INTR_HANDLE_VFIO_LEGACY
	      vfio device handle (legacy)

       RTE_INTR_HANDLE_VFIO_MSI
	      vfio device handle (MSI)

       RTE_INTR_HANDLE_VFIO_MSIX
	      vfio device handle (MSIX)

       RTE_INTR_HANDLE_ALARM
	      alarm handle

       RTE_INTR_HANDLE_EXT
	      external handler

       RTE_INTR_HANDLE_VDEV
	      virtual device

       RTE_INTR_HANDLE_DEV_EVENT
	      device event handle

       RTE_INTR_HANDLE_VFIO_REQ
	      VFIO request handle

       RTE_INTR_HANDLE_MAX
	      count of elements

       Definition at line 45 of	file rte_interrupts.h.

Function Documentation
   int rte_intr_callback_register (const struct	rte_intr_handle	* intr_handle,
       rte_intr_callback_fn cb,	void * cb_arg)
       It   registers  the  callback  for  the	specific  interrupt.  Multiple
       callbacks can be	registered at the same time.

       Parameters
	   intr_handle Pointer to the interrupt	handle.
	   cb callback address.
	   cb_arg address of parameter for callback.

       Returns

	    On	success, zero.

	    On	failure, a negative value.

   int	 rte_intr_callback_unregister	(const	 struct	  rte_intr_handle    *
       intr_handle, rte_intr_callback_fn cb, void * cb_arg)
       It  unregisters	the  callback  according  to  the  specified interrupt
       handle.

       Parameters
	   intr_handle pointer to the interrupt	handle.
	   cb callback address.
	   cb_arg address of parameter	for  callback,	(void  *)-1  means  to
	   remove all registered which has the same callback address.

       Returns

	    On	success, return	the number of callback entities	removed.

	    On	failure, a negative value.

   int	rte_intr_callback_unregister_pending  (const  struct rte_intr_handle *
       intr_handle,    rte_intr_callback_fn    cb_fn,	 void	 *     cb_arg,
       rte_intr_unregister_callback_fn ucb_fn)
       Unregister  the	callback  according to the specified interrupt handle,
       after it's no longer active. Fail if source is not active.

       Parameters
	   intr_handle pointer to the interrupt	handle.
	   cb_fn callback address.
	   cb_arg address of parameter	for  callback,	(void  *)-1  means  to
	   remove all registered which has the same callback address.
	   ucb_fn  callback  to	call before cb is unregistered (optional). can
	   be used to close fd and free	cb_arg.

       Returns

	    On	success, return	the number of  callback	 entities  marked  for
	     remove.

	    On	failure, a negative value.

   int	 rte_intr_callback_unregister_sync  (const  struct  rte_intr_handle  *
       intr_handle, rte_intr_callback_fn cb, void * cb_arg)
       Loop until rte_intr_callback_unregister() succeeds.  After  a  call  to
       this  function, the callback provided by	the specified interrupt	handle
       is unregistered.

       Parameters
	   intr_handle pointer to the interrupt	handle.
	   cb callback address.
	   cb_arg address of parameter	for  callback,	(void  *)-1  means  to
	   remove all registered which has the same callback address.

       Returns

	    On	success, return	the number of callback entities	removed.

	    On	failure, a negative value.

   int rte_intr_enable (const struct rte_intr_handle * intr_handle)
       It enables the interrupt	for the	specified handle.

       Parameters
	   intr_handle pointer to the interrupt	handle.

       Returns

	    On	success, zero.

	    On	failure, a negative value.

   int rte_intr_disable	(const struct rte_intr_handle *	intr_handle)
       It disables the interrupt for the specified handle.

       Parameters
	   intr_handle pointer to the interrupt	handle.

       Returns

	    On	success, zero.

	    On	failure, a negative value.

   int rte_intr_ack (const struct rte_intr_handle * intr_handle)
       It acknowledges an interrupt raised for the specified handle.

       This  function  should  be  called at the end of	each interrupt handler
       either from application or driver, so that currently  raised  interrupt
       is acked	and further new	interrupts are raised.

       Parameters
	   intr_handle pointer to the interrupt	handle.

       Returns

	    On	success, zero.

	    On	failure, a negative value.

   int rte_thread_is_intr (void)
       Check if	currently executing in interrupt context

       Returns

	    non zero in case of interrupt context

	    zero in case of process context

   struct rte_intr_handle * rte_intr_instance_alloc (uint32_t flags)
       It  allocates  memory  for  interrupt  instance.	 API  takes flag as an
       argument	which define from where	memory should be allocated i.e.	 using
       DPDK  memory management library APIs or normal heap allocation. Default
       memory allocation for event fds and event list array is done which  can
       be  realloced later based on size of MSIX interrupts supported by a PCI
       device.

       This function should be	called	from  application  or  driver,	before
       calling any of the interrupt APIs.

       Parameters
	   flags See RTE_INTR_INSTANCE_F_* flags definitions.

       Returns

	    On	success, address of interrupt handle.

	    On	failure, NULL.

   void	rte_intr_instance_free (struct rte_intr_handle * intr_handle)
       Free the	memory allocated for interrupt handle resources.

       Parameters
	   intr_handle	     Interrupt	     handle	  allocated	  with
	   rte_intr_instance_alloc(). If intr_handle is	NULL, no operation  is
	   performed.

   int rte_intr_fd_set (struct rte_intr_handle * intr_handle, int fd)
       Set   the  fd  field  of	 interrupt  handle  with  user	provided  file
       descriptor.

       Parameters
	   intr_handle pointer to the interrupt	handle.
	   fd file descriptor value provided by	user.

       Returns

	    On	success, zero.

	    On	failure, a negative value and rte_errno	is set.

   int rte_intr_fd_get (const struct rte_intr_handle * intr_handle)
       Returns the fd field of the given interrupt handle instance.

       Parameters
	   intr_handle pointer to the interrupt	handle.

       Returns

	    On	success, fd field.

	    On	failure, a negative value.

   int	rte_intr_type_set  (struct   rte_intr_handle   *   intr_handle,	  enum
       rte_intr_handle_type type)
       Set  the	 type  field  of interrupt handle with user provided interrupt
       type.

       Parameters
	   intr_handle pointer to the interrupt	handle.
	   type	interrupt type

       Returns

	    On	success, zero.

	    On	failure, a negative value and rte_errno	is set.

   enum	rte_intr_handle_type rte_intr_type_get (const struct rte_intr_handle *
       intr_handle)
       Returns the type	field of the given interrupt handle instance.

       Parameters
	   intr_handle pointer to the interrupt	handle.

       Returns

	    On	success, interrupt type

	    On	failure, RTE_INTR_HANDLE_UNKNOWN.

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

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

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

home | help