beacc04b62420599d404bf299bf4ccbfa7d88958
[dpdk.git] / lib / eal / common / eal_interrupts.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2010-2014 Intel Corporation
3  */
4
5 #ifndef EAL_INTERRUPTS_H
6 #define EAL_INTERRUPTS_H
7
8 struct rte_intr_handle {
9         RTE_STD_C11
10         union {
11                 struct {
12                         RTE_STD_C11
13                         union {
14                                 /** VFIO device file descriptor */
15                                 int vfio_dev_fd;
16                                 /** UIO cfg file desc for uio_pci_generic */
17                                 int uio_cfg_fd;
18                         };
19                         int fd; /**< interrupt event file descriptor */
20                 };
21                 void *windows_handle; /**< device driver handle */
22         };
23         uint32_t alloc_flags;   /**< flags passed at allocation */
24         enum rte_intr_handle_type type;  /**< handle type */
25         uint32_t max_intr;             /**< max interrupt requested */
26         uint32_t nb_efd;               /**< number of available efd(event fd) */
27         uint8_t efd_counter_size;      /**< size of efd counter, used for vdev */
28         uint16_t nb_intr;
29                 /**< Max vector count, default RTE_MAX_RXTX_INTR_VEC_ID */
30         int efds[RTE_MAX_RXTX_INTR_VEC_ID];  /**< intr vectors/efds mapping */
31         struct rte_epoll_event elist[RTE_MAX_RXTX_INTR_VEC_ID];
32                                        /**< intr vector epoll event */
33         uint16_t vec_list_size;
34         int *intr_vec;                 /**< intr vector number array */
35 };
36
37 #endif /* EAL_INTERRUPTS_H */