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