DPDK 21.11.9
rte_interrupts.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2010-2014 Intel Corporation
3 */
4
5#ifndef _RTE_INTERRUPTS_H_
6#define _RTE_INTERRUPTS_H_
7
8#include <stdbool.h>
9
10#include <rte_bitops.h>
11#include <rte_common.h>
12#include <rte_compat.h>
13#include <rte_epoll.h>
14
22#ifdef __cplusplus
23extern "C" {
24#endif
25
27struct rte_intr_handle;
28
34#define RTE_INTR_INSTANCE_F_PRIVATE UINT32_C(0)
36#define RTE_INTR_INSTANCE_F_SHARED RTE_BIT32(0)
37
38#define RTE_MAX_RXTX_INTR_VEC_ID 512
39#define RTE_INTR_VEC_ZERO_OFFSET 0
40#define RTE_INTR_VEC_RXTX_OFFSET 1
41
58};
59
61typedef void (*rte_intr_callback_fn)(void *cb_arg);
62
67typedef void (*rte_intr_unregister_callback_fn)(struct rte_intr_handle *intr_handle,
68 void *cb_arg);
69
84int rte_intr_callback_register(const struct rte_intr_handle *intr_handle,
85 rte_intr_callback_fn cb, void *cb_arg);
86
102int rte_intr_callback_unregister(const struct rte_intr_handle *intr_handle,
103 rte_intr_callback_fn cb, void *cb_arg);
104
124__rte_experimental
125int
126rte_intr_callback_unregister_pending(const struct rte_intr_handle *intr_handle,
127 rte_intr_callback_fn cb_fn, void *cb_arg,
129
150__rte_experimental
151int
152rte_intr_callback_unregister_sync(const struct rte_intr_handle *intr_handle,
153 rte_intr_callback_fn cb, void *cb_arg);
154
165int rte_intr_enable(const struct rte_intr_handle *intr_handle);
166
177int rte_intr_disable(const struct rte_intr_handle *intr_handle);
178
196__rte_experimental
197int rte_intr_ack(const struct rte_intr_handle *intr_handle);
198
209__rte_experimental
210int
212
234__rte_experimental
235struct rte_intr_handle *
237
249__rte_experimental
250void
251rte_intr_instance_free(struct rte_intr_handle *intr_handle);
252
269__rte_experimental
270int
271rte_intr_fd_set(struct rte_intr_handle *intr_handle, int fd);
272
286__rte_experimental
287int
288rte_intr_fd_get(const struct rte_intr_handle *intr_handle);
289
306__rte_experimental
307int
308rte_intr_type_set(struct rte_intr_handle *intr_handle,
309 enum rte_intr_handle_type type);
310
324__rte_experimental
326rte_intr_type_get(const struct rte_intr_handle *intr_handle);
327
335__rte_internal
336int
337rte_intr_tls_epfd(void);
338
356__rte_internal
357int
358rte_intr_rx_ctl(struct rte_intr_handle *intr_handle,
359 int epfd, int op, unsigned int vec, void *data);
360
368__rte_internal
369void
370rte_intr_free_epoll_fd(struct rte_intr_handle *intr_handle);
371
387__rte_internal
388int
389rte_intr_efd_enable(struct rte_intr_handle *intr_handle, uint32_t nb_efd);
390
399__rte_internal
400void
401rte_intr_efd_disable(struct rte_intr_handle *intr_handle);
402
410__rte_internal
411int
412rte_intr_dp_is_en(struct rte_intr_handle *intr_handle);
413
422__rte_internal
423int
424rte_intr_allow_others(struct rte_intr_handle *intr_handle);
425
434__rte_internal
435int
436rte_intr_cap_multiple(struct rte_intr_handle *intr_handle);
437
449__rte_internal
450struct rte_intr_handle *
451rte_intr_instance_dup(const struct rte_intr_handle *src);
452
467__rte_internal
468int
469rte_intr_dev_fd_set(struct rte_intr_handle *intr_handle, int fd);
470
482__rte_internal
483int
484rte_intr_dev_fd_get(const struct rte_intr_handle *intr_handle);
485
500__rte_internal
501int
502rte_intr_max_intr_set(struct rte_intr_handle *intr_handle, int max_intr);
503
515__rte_internal
516int
517rte_intr_max_intr_get(const struct rte_intr_handle *intr_handle);
518
533__rte_internal
534int
535rte_intr_nb_efd_set(struct rte_intr_handle *intr_handle, int nb_efd);
536
549__rte_internal
550int
551rte_intr_nb_efd_get(const struct rte_intr_handle *intr_handle);
552
569__rte_internal
570int
571rte_intr_nb_intr_get(const struct rte_intr_handle *intr_handle);
572
587__rte_internal
588int
589rte_intr_efd_counter_size_set(struct rte_intr_handle *intr_handle,
590 uint8_t efd_counter_size);
591
604__rte_internal
605int
606rte_intr_efd_counter_size_get(const struct rte_intr_handle *intr_handle);
607
623__rte_internal
624int
625rte_intr_efds_index_set(struct rte_intr_handle *intr_handle, int index, int fd);
626
640__rte_internal
641int
642rte_intr_efds_index_get(const struct rte_intr_handle *intr_handle, int index);
643
660__rte_internal
661int
662rte_intr_elist_index_set(struct rte_intr_handle *intr_handle, int index,
663 struct rte_epoll_event elist);
664
679__rte_internal
680struct rte_epoll_event *
681rte_intr_elist_index_get(struct rte_intr_handle *intr_handle, int index);
682
699__rte_internal
700int
701rte_intr_vec_list_alloc(struct rte_intr_handle *intr_handle, const char *name,
702 int size);
703
720__rte_internal
721int
722rte_intr_vec_list_index_set(struct rte_intr_handle *intr_handle, int index,
723 int vec);
724
738__rte_internal
739int
740rte_intr_vec_list_index_get(const struct rte_intr_handle *intr_handle,
741 int index);
742
754__rte_internal
755void
756rte_intr_vec_list_free(struct rte_intr_handle *intr_handle);
757
776__rte_internal
777int
778rte_intr_event_list_update(struct rte_intr_handle *intr_handle, int size);
779
791__rte_internal
792void *
793rte_intr_instance_windows_handle_get(struct rte_intr_handle *intr_handle);
794
808__rte_internal
809int
810rte_intr_instance_windows_handle_set(struct rte_intr_handle *intr_handle,
811 void *windows_handle);
812
813#ifdef __cplusplus
814}
815#endif
816
817#endif
int rte_intr_disable(const struct rte_intr_handle *intr_handle)
__rte_experimental int rte_intr_callback_unregister_sync(const struct rte_intr_handle *intr_handle, rte_intr_callback_fn cb, void *cb_arg)
void(* rte_intr_callback_fn)(void *cb_arg)
__rte_experimental void rte_intr_instance_free(struct rte_intr_handle *intr_handle)
__rte_experimental int rte_intr_fd_get(const struct rte_intr_handle *intr_handle)
int rte_intr_callback_unregister(const struct rte_intr_handle *intr_handle, rte_intr_callback_fn cb, void *cb_arg)
__rte_experimental 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_intr_handle_type
@ RTE_INTR_HANDLE_EXT
@ RTE_INTR_HANDLE_UNKNOWN
@ RTE_INTR_HANDLE_MAX
@ RTE_INTR_HANDLE_VFIO_LEGACY
@ RTE_INTR_HANDLE_DEV_EVENT
@ RTE_INTR_HANDLE_UIO_INTX
@ RTE_INTR_HANDLE_UIO
@ RTE_INTR_HANDLE_VFIO_MSI
@ RTE_INTR_HANDLE_VDEV
@ RTE_INTR_HANDLE_VFIO_MSIX
@ RTE_INTR_HANDLE_VFIO_REQ
@ RTE_INTR_HANDLE_ALARM
__rte_experimental int rte_intr_type_set(struct rte_intr_handle *intr_handle, enum rte_intr_handle_type type)
__rte_experimental int rte_thread_is_intr(void)
int rte_intr_callback_register(const struct rte_intr_handle *intr_handle, rte_intr_callback_fn cb, void *cb_arg)
__rte_experimental int rte_intr_fd_set(struct rte_intr_handle *intr_handle, int fd)
void(* rte_intr_unregister_callback_fn)(struct rte_intr_handle *intr_handle, void *cb_arg)
int rte_intr_enable(const struct rte_intr_handle *intr_handle)
__rte_experimental enum rte_intr_handle_type rte_intr_type_get(const struct rte_intr_handle *intr_handle)
__rte_experimental struct rte_intr_handle * rte_intr_instance_alloc(uint32_t flags)
__rte_experimental int rte_intr_ack(const struct rte_intr_handle *intr_handle)