logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

rte_interrupts.h

Author

       Generated automatically by Doxygen for DPDK from the source code.

DPDK                                             Version 24.11.2                             rte_interrupts.h(3)

Detailed Description

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

       Definition in file rte_interrupts.h.

Enumeration Type Documentation

enumrte_intr_handle_type
       The interrupt source type, e.g. UIO, VFIO, ALARM etc.

       EnumeratorRTE_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

intrte_intr_callback_register(conststructrte_intr_handle*intr_handle,rte_intr_callback_fncb,void*cb_arg)
       It registers the callback for the specific interrupt. Multiple callbacks can be registered  at  the  same
       time.

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

   intrte_intr_callback_unregister(conststructrte_intr_handle*intr_handle,rte_intr_callback_fncb,void*cb_arg)
       It unregisters the callback according to the specified interrupt handle.

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

   intrte_intr_callback_unregister_pending(conststructrte_intr_handle*intr_handle,rte_intr_callback_fncb_fn,void*cb_arg,rte_intr_unregister_callback_fnucb_fn)
       Unregister the callback according to the specified interrupt handle, after it's no longer active. Fail if
       source is not active.

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

   intrte_intr_callback_unregister_sync(conststructrte_intr_handle*intr_handle,rte_intr_callback_fncb,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.

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

   intrte_intr_enable(conststructrte_intr_handle*intr_handle)
       It enables the interrupt for the specified handle.

       Parametersintr_handle pointer to the interrupt handle.

       Returns

           • On success, zero.

           • On failure, a negative value.

   intrte_intr_disable(conststructrte_intr_handle*intr_handle)
       It disables the interrupt for the specified handle.

       Parametersintr_handle pointer to the interrupt handle.

       Returns

           • On success, zero.

           • On failure, a negative value.

   intrte_intr_ack(conststructrte_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.

       Parametersintr_handle pointer to the interrupt handle.

       Returns

           • On success, zero.

           • On failure, a negative value.

   intrte_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

   structrte_intr_handle*rte_intr_instance_alloc(uint32_tflags)
       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.

       Parametersflags See RTE_INTR_INSTANCE_F_* flags definitions.

       Returns

           • On success, address of interrupt handle.

           • On failure, NULL.

   voidrte_intr_instance_free(structrte_intr_handle*intr_handle)
       Free the memory allocated for interrupt handle resources.

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

   intrte_intr_fd_set(structrte_intr_handle*intr_handle,intfd)
       Set the fd field of interrupt handle with user provided file descriptor.

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

   intrte_intr_fd_get(conststructrte_intr_handle*intr_handle)
       Returns the fd field of the given interrupt handle instance.

       Parametersintr_handle pointer to the interrupt handle.

       Returns

           • On success, fd field.

           • On failure, a negative value.

   intrte_intr_type_set(structrte_intr_handle*intr_handle,enumrte_intr_handle_typetype)
       Set the type field of interrupt handle with user provided interrupt type.

       Parametersintr_handle pointer to the interrupt handle.
           type interrupt type

       Returns

           • On success, zero.

           • On failure, a negative value and rte_errno is set.

   enumrte_intr_handle_typerte_intr_type_get(conststructrte_intr_handle*intr_handle)
       Returns the type field of the given interrupt handle instance.

       Parametersintr_handle pointer to the interrupt handle.

       Returns

           • On success, interrupt type

           • On failure, RTE_INTR_HANDLE_UNKNOWN.

Macro Definition Documentation

#defineRTE_INTR_INSTANCE_F_PRIVATEUINT32_C(0)
       Interrupt instance allocation flags

       Seealsorte_intr_instance_alloc Interrupt instance will not be shared between primary and secondary
           processes.

       Definition at line 34 of file rte_interrupts.h.

   #defineRTE_INTR_INSTANCE_F_SHAREDRTE_BIT32(0)
       Interrupt instance will be shared between primary and secondary processes.

       Definition at line 36 of file rte_interrupts.h.

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_PRIVATEUINT32_C(0)
       #define RTE_INTR_INSTANCE_F_SHAREDRTE_BIT32(0)

   Typedefstypedef 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_typerte_intr_type_get (const struct rte_intr_handle *intr_handle)

Typedef Documentation

typedefvoid(*rte_intr_callback_fn)(void*cb_arg)
       Function to be registered for the specific interrupt

       Definition at line 61 of file rte_interrupts.h.

   typedefvoid(*rte_intr_unregister_callback_fn)(structrte_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.

See Also