DPDK  23.07.0
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
23 extern "C" {
24 #endif
25 
27 struct rte_intr_handle;
28 
34 #define RTE_INTR_INSTANCE_F_PRIVATE UINT32_C(0)
35 
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 
61 typedef void (*rte_intr_callback_fn)(void *cb_arg);
62 
67 typedef void (*rte_intr_unregister_callback_fn)(struct rte_intr_handle *intr_handle,
68  void *cb_arg);
69 
84 int rte_intr_callback_register(const struct rte_intr_handle *intr_handle,
85  rte_intr_callback_fn cb, void *cb_arg);
86 
102 int rte_intr_callback_unregister(const struct rte_intr_handle *intr_handle,
103  rte_intr_callback_fn cb, void *cb_arg);
104 
124 int
125 rte_intr_callback_unregister_pending(const struct rte_intr_handle *intr_handle,
126  rte_intr_callback_fn cb_fn, void *cb_arg,
128 
149 __rte_experimental
150 int
151 rte_intr_callback_unregister_sync(const struct rte_intr_handle *intr_handle,
152  rte_intr_callback_fn cb, void *cb_arg);
153 
164 int rte_intr_enable(const struct rte_intr_handle *intr_handle);
165 
176 int rte_intr_disable(const struct rte_intr_handle *intr_handle);
177 
192 int rte_intr_ack(const struct rte_intr_handle *intr_handle);
193 
201 int rte_thread_is_intr(void);
202 
224 __rte_experimental
225 struct rte_intr_handle *
226 rte_intr_instance_alloc(uint32_t flags);
227 
238 __rte_experimental
239 void
240 rte_intr_instance_free(struct rte_intr_handle *intr_handle);
241 
258 __rte_experimental
259 int
260 rte_intr_fd_set(struct rte_intr_handle *intr_handle, int fd);
261 
275 __rte_experimental
276 int
277 rte_intr_fd_get(const struct rte_intr_handle *intr_handle);
278 
295 __rte_experimental
296 int
297 rte_intr_type_set(struct rte_intr_handle *intr_handle,
298  enum rte_intr_handle_type type);
299 
313 __rte_experimental
315 rte_intr_type_get(const struct rte_intr_handle *intr_handle);
316 
324 __rte_internal
325 int
326 rte_intr_tls_epfd(void);
327 
345 __rte_internal
346 int
347 rte_intr_rx_ctl(struct rte_intr_handle *intr_handle,
348  int epfd, int op, unsigned int vec, void *data);
349 
357 __rte_internal
358 void
359 rte_intr_free_epoll_fd(struct rte_intr_handle *intr_handle);
360 
376 __rte_internal
377 int
378 rte_intr_efd_enable(struct rte_intr_handle *intr_handle, uint32_t nb_efd);
379 
388 __rte_internal
389 void
390 rte_intr_efd_disable(struct rte_intr_handle *intr_handle);
391 
399 __rte_internal
400 int
401 rte_intr_dp_is_en(struct rte_intr_handle *intr_handle);
402 
411 __rte_internal
412 int
413 rte_intr_allow_others(struct rte_intr_handle *intr_handle);
414 
423 __rte_internal
424 int
425 rte_intr_cap_multiple(struct rte_intr_handle *intr_handle);
426 
438 __rte_internal
439 struct rte_intr_handle *
440 rte_intr_instance_dup(const struct rte_intr_handle *src);
441 
456 __rte_internal
457 int
458 rte_intr_dev_fd_set(struct rte_intr_handle *intr_handle, int fd);
459 
471 __rte_internal
472 int
473 rte_intr_dev_fd_get(const struct rte_intr_handle *intr_handle);
474 
489 __rte_internal
490 int
491 rte_intr_max_intr_set(struct rte_intr_handle *intr_handle, int max_intr);
492 
504 __rte_internal
505 int
506 rte_intr_max_intr_get(const struct rte_intr_handle *intr_handle);
507 
522 __rte_internal
523 int
524 rte_intr_nb_efd_set(struct rte_intr_handle *intr_handle, int nb_efd);
525 
538 __rte_internal
539 int
540 rte_intr_nb_efd_get(const struct rte_intr_handle *intr_handle);
541 
558 __rte_internal
559 int
560 rte_intr_nb_intr_get(const struct rte_intr_handle *intr_handle);
561 
576 __rte_internal
577 int
578 rte_intr_efd_counter_size_set(struct rte_intr_handle *intr_handle,
579  uint8_t efd_counter_size);
580 
593 __rte_internal
594 int
595 rte_intr_efd_counter_size_get(const struct rte_intr_handle *intr_handle);
596 
612 __rte_internal
613 int
614 rte_intr_efds_index_set(struct rte_intr_handle *intr_handle, int index, int fd);
615 
629 __rte_internal
630 int
631 rte_intr_efds_index_get(const struct rte_intr_handle *intr_handle, int index);
632 
649 __rte_internal
650 int
651 rte_intr_elist_index_set(struct rte_intr_handle *intr_handle, int index,
652  struct rte_epoll_event elist);
653 
668 __rte_internal
669 struct rte_epoll_event *
670 rte_intr_elist_index_get(struct rte_intr_handle *intr_handle, int index);
671 
688 __rte_internal
689 int
690 rte_intr_vec_list_alloc(struct rte_intr_handle *intr_handle, const char *name,
691  int size);
692 
709 __rte_internal
710 int
711 rte_intr_vec_list_index_set(struct rte_intr_handle *intr_handle, int index,
712  int vec);
713 
727 __rte_internal
728 int
729 rte_intr_vec_list_index_get(const struct rte_intr_handle *intr_handle,
730  int index);
731 
743 __rte_internal
744 void
745 rte_intr_vec_list_free(struct rte_intr_handle *intr_handle);
746 
765 __rte_internal
766 int
767 rte_intr_event_list_update(struct rte_intr_handle *intr_handle, int size);
768 
780 __rte_internal
781 void *
782 rte_intr_instance_windows_handle_get(struct rte_intr_handle *intr_handle);
783 
797 __rte_internal
798 int
799 rte_intr_instance_windows_handle_set(struct rte_intr_handle *intr_handle,
800  void *windows_handle);
801 
802 #ifdef __cplusplus
803 }
804 #endif
805 
806 #endif
__rte_experimental int rte_intr_callback_unregister_sync(const struct rte_intr_handle *intr_handle, rte_intr_callback_fn cb, void *cb_arg)
__rte_experimental void rte_intr_instance_free(struct rte_intr_handle *intr_handle)
int rte_intr_callback_register(const struct rte_intr_handle *intr_handle, rte_intr_callback_fn cb, void *cb_arg)
rte_intr_handle_type
int rte_intr_disable(const struct rte_intr_handle *intr_handle)
int rte_thread_is_intr(void)
void(* rte_intr_unregister_callback_fn)(struct rte_intr_handle *intr_handle, void *cb_arg)
__rte_experimental int rte_intr_fd_set(struct rte_intr_handle *intr_handle, int fd)
void(* rte_intr_callback_fn)(void *cb_arg)
__rte_experimental int rte_intr_fd_get(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)
int rte_intr_ack(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 struct rte_intr_handle * rte_intr_instance_alloc(uint32_t flags)
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_enable(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)