xref: /qemu/include/hw/intc/intc.h (revision 8110fa1d)
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 
8db1015e9SEduardo Habkost typedef struct InterruptStatsProviderClass InterruptStatsProviderClass;
9*8110fa1dSEduardo Habkost DECLARE_CLASS_CHECKERS(InterruptStatsProviderClass, INTERRUPT_STATS_PROVIDER,
10120e512bSHervé Poussineau                        TYPE_INTERRUPT_STATS_PROVIDER)
11120e512bSHervé Poussineau #define INTERRUPT_STATS_PROVIDER(obj) \
12120e512bSHervé Poussineau     INTERFACE_CHECK(InterruptStatsProvider, (obj), \
13120e512bSHervé Poussineau                     TYPE_INTERRUPT_STATS_PROVIDER)
14120e512bSHervé Poussineau 
15aa1b35b9SMarc-André Lureau typedef struct InterruptStatsProvider InterruptStatsProvider;
16120e512bSHervé Poussineau 
17db1015e9SEduardo Habkost struct InterruptStatsProviderClass {
18120e512bSHervé Poussineau     InterfaceClass parent;
19120e512bSHervé Poussineau 
20120e512bSHervé Poussineau     /* The returned pointer and statistics must remain valid until
21120e512bSHervé Poussineau      * the BQL is next dropped.
22120e512bSHervé Poussineau      */
23120e512bSHervé Poussineau     bool (*get_statistics)(InterruptStatsProvider *obj, uint64_t **irq_counts,
24120e512bSHervé Poussineau                            unsigned int *nb_irqs);
25120e512bSHervé Poussineau     void (*print_info)(InterruptStatsProvider *obj, Monitor *mon);
26db1015e9SEduardo Habkost };
27120e512bSHervé Poussineau 
28120e512bSHervé Poussineau #endif
29