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

  
 
  

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_HAN-
	 DLE_UIO,     RTE_INTR_HANDLE_UIO_INTX,     RTE_INTR_HANDLE_VFIO_LEGACY,
	 RTE_INTR_HANDLE_VFIO_MSI,   RTE_INTR_HANDLE_VFIO_MSIX,    RTE_INTR_HAN-
	 DLE_ALARM,   RTE_INTR_HANDLE_EXT,  RTE_INTR_HANDLE_VDEV,  RTE_INTR_HAN-
	 DLE_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_han-
	 dle, 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_unreg-
	 ister_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 call-
     backs 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_unregis-
     ter_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 unreg-
     istered.

     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 alloca-
     tion 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 Aug 27 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_callback_unregister_sync&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help