xref: /qemu/include/hw/intc/intc.h (revision db1015e9)
1120e512bSHervé Poussineau #ifndef INTC_H
2120e512bSHervé Poussineau #define INTC_H
3120e512bSHervé Poussineau 
4120e512bSHervé Poussineau #include "qom/object.h"
5120e512bSHervé Poussineau 
6120e512bSHervé Poussineau #define TYPE_INTERRUPT_STATS_PROVIDER "intctrl"
7120e512bSHervé Poussineau 
8*db1015e9SEduardo Habkost typedef struct InterruptStatsProviderClass InterruptStatsProviderClass;
9120e512bSHervé Poussineau #define INTERRUPT_STATS_PROVIDER_CLASS(klass) \
10120e512bSHervé Poussineau     OBJECT_CLASS_CHECK(InterruptStatsProviderClass, (klass), \
11120e512bSHervé Poussineau                        TYPE_INTERRUPT_STATS_PROVIDER)
12120e512bSHervé Poussineau #define INTERRUPT_STATS_PROVIDER_GET_CLASS(obj) \
13120e512bSHervé Poussineau     OBJECT_GET_CLASS(InterruptStatsProviderClass, (obj), \
14120e512bSHervé Poussineau                      TYPE_INTERRUPT_STATS_PROVIDER)
15120e512bSHervé Poussineau #define INTERRUPT_STATS_PROVIDER(obj) \
16120e512bSHervé Poussineau     INTERFACE_CHECK(InterruptStatsProvider, (obj), \
17120e512bSHervé Poussineau                     TYPE_INTERRUPT_STATS_PROVIDER)
18120e512bSHervé Poussineau 
19aa1b35b9SMarc-André Lureau typedef struct InterruptStatsProvider InterruptStatsProvider;
20120e512bSHervé Poussineau 
21*db1015e9SEduardo Habkost struct InterruptStatsProviderClass {
22120e512bSHervé Poussineau     InterfaceClass parent;
23120e512bSHervé Poussineau 
24120e512bSHervé Poussineau     /* The returned pointer and statistics must remain valid until
25120e512bSHervé Poussineau      * the BQL is next dropped.
26120e512bSHervé Poussineau      */
27120e512bSHervé Poussineau     bool (*get_statistics)(InterruptStatsProvider *obj, uint64_t **irq_counts,
28120e512bSHervé Poussineau                            unsigned int *nb_irqs);
29120e512bSHervé Poussineau     void (*print_info)(InterruptStatsProvider *obj, Monitor *mon);
30*db1015e9SEduardo Habkost };
31120e512bSHervé Poussineau 
32120e512bSHervé Poussineau #endif
33