DPDK 22.11.6
|
#include <stdbool.h>
#include <rte_bitops.h>
#include <rte_common.h>
#include <rte_compat.h>
#include <rte_epoll.h>
Go to the source code of this file.
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) |
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) |
__rte_experimental 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) |
__rte_experimental struct rte_intr_handle * | rte_intr_instance_alloc (uint32_t flags) |
__rte_experimental void | rte_intr_instance_free (struct rte_intr_handle *intr_handle) |
__rte_experimental int | rte_intr_fd_set (struct rte_intr_handle *intr_handle, int fd) |
__rte_experimental int | rte_intr_fd_get (const struct rte_intr_handle *intr_handle) |
__rte_experimental int | rte_intr_type_set (struct rte_intr_handle *intr_handle, enum rte_intr_handle_type type) |
__rte_experimental enum rte_intr_handle_type | rte_intr_type_get (const struct rte_intr_handle *intr_handle) |
The RTE interrupt interface provides functions to register/unregister callbacks for a specific interrupt.
Definition in file rte_interrupts.h.
#define RTE_INTR_INSTANCE_F_PRIVATE UINT32_C(0) |
Interrupt instance allocation flags
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 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.
enum rte_intr_handle_type |
The interrupt source type, e.g. UIO, VFIO, ALARM etc.
Definition at line 45 of file rte_interrupts.h.
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.
intr_handle | Pointer to the interrupt handle. |
cb | callback address. |
cb_arg | address of parameter for callback. |
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.
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. |
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.
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. |
__rte_experimental 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.
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. |
int rte_intr_enable | ( | const struct rte_intr_handle * | intr_handle | ) |
It enables the interrupt for the specified handle.
intr_handle | pointer to the interrupt handle. |
int rte_intr_disable | ( | const struct rte_intr_handle * | intr_handle | ) |
It disables the interrupt for the specified handle.
intr_handle | pointer to the interrupt handle. |
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.
intr_handle | pointer to the interrupt handle. |
int rte_thread_is_intr | ( | void | ) |
Check if currently executing in interrupt context
__rte_experimental 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.
flags | See RTE_INTR_INSTANCE_F_* flags definitions. |
__rte_experimental void rte_intr_instance_free | ( | struct rte_intr_handle * | intr_handle | ) |
Free the memory allocated for interrupt handle resources.
intr_handle | Interrupt handle allocated with rte_intr_instance_alloc(). If intr_handle is NULL, no operation is performed. |
__rte_experimental 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.
intr_handle | pointer to the interrupt handle. |
fd | file descriptor value provided by user. |
__rte_experimental int rte_intr_fd_get | ( | const struct rte_intr_handle * | intr_handle | ) |
Returns the fd field of the given interrupt handle instance.
intr_handle | pointer to the interrupt handle. |
__rte_experimental 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.
intr_handle | pointer to the interrupt handle. |
type | interrupt type |
__rte_experimental 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.
intr_handle | pointer to the interrupt handle. |