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