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 18typedef struct InterruptStatsProvider InterruptStatsProvider; 19 20typedef 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