1 | #ifndef INTC_H |
2 | #define INTC_H |
3 | |
4 | #include "qom/object.h" |
5 | |
6 | #define TYPE_INTERRUPT_STATS_PROVIDER "intctrl" |
7 | |
8 | #define INTERRUPT_STATS_PROVIDER_CLASS(klass) \ |
9 | OBJECT_CLASS_CHECK(InterruptStatsProviderClass, (klass), \ |
10 | TYPE_INTERRUPT_STATS_PROVIDER) |
11 | #define INTERRUPT_STATS_PROVIDER_GET_CLASS(obj) \ |
12 | OBJECT_GET_CLASS(InterruptStatsProviderClass, (obj), \ |
13 | TYPE_INTERRUPT_STATS_PROVIDER) |
14 | #define INTERRUPT_STATS_PROVIDER(obj) \ |
15 | INTERFACE_CHECK(InterruptStatsProvider, (obj), \ |
16 | TYPE_INTERRUPT_STATS_PROVIDER) |
17 | |
18 | typedef struct InterruptStatsProvider InterruptStatsProvider; |
19 | |
20 | typedef struct InterruptStatsProviderClass { |
21 | InterfaceClass parent; |
22 | |
23 | /* The returned pointer and statistics must remain valid until |
24 | * the BQL is next dropped. |
25 | */ |
26 | bool (*get_statistics)(InterruptStatsProvider *obj, uint64_t **irq_counts, |
27 | unsigned int *nb_irqs); |
28 | void (*print_info)(InterruptStatsProvider *obj, Monitor *mon); |
29 | } InterruptStatsProviderClass; |
30 | |
31 | #endif |
32 | |