Message ID | 1474921408-24710-4-git-send-email-hpoussin@reactos.org |
---|---|
State | New |
Headers | show |
Are slavio_pic_info and slavio_irq_info still used after this patch? On Mon, Sep 26, 2016 at 10:23 PM, Hervé Poussineau <hpoussin@reactos.org> wrote: > Signed-off-by: Hervé Poussineau <hpoussin@reactos.org> > --- > hw/intc/slavio_intctl.c | 35 +++++++++++++++++++++++++++++++++++ > 1 file changed, 35 insertions(+) > > diff --git a/hw/intc/slavio_intctl.c b/hw/intc/slavio_intctl.c > index e82e893..a9acb64 100644 > --- a/hw/intc/slavio_intctl.c > +++ b/hw/intc/slavio_intctl.c > @@ -26,6 +26,7 @@ > #include "hw/sparc/sun4m.h" > #include "monitor/monitor.h" > #include "hw/sysbus.h" > +#include "hw/intc/intc.h" > #include "trace.h" > > //#define DEBUG_IRQ_COUNT > @@ -418,6 +419,31 @@ static void slavio_intctl_reset(DeviceState *d) > slavio_check_interrupts(s, 0); > } > > +#ifdef DEBUG_IRQ_COUNT > +static bool slavio_intctl_get_statistics(InterruptStatsProvider *obj, > + uint64_t **irq_counts, > + unsigned int *nb_irqs) > +{ > + SLAVIO_INTCTLState *s = SLAVIO_INTCTL(obj); > + *irq_counts = s->irq_count; > + *nb_irqs = ARRAY_SIZE(s->irq_count); > + return true; > +} > +#endif > + > +static void slavio_intctl_print_info(InterruptStatsProvider *obj, Monitor *mon) > +{ > + SLAVIO_INTCTLState *s = SLAVIO_INTCTL(obj); > + int i; > + > + for (i = 0; i < MAX_CPUS; i++) { > + monitor_printf(mon, "per-cpu %d: pending 0x%08x\n", i, > + s->slaves[i].intreg_pending); > + } > + monitor_printf(mon, "master: pending 0x%08x, disabled 0x%08x\n", > + s->intregm_pending, s->intregm_disabled); > +} > + > static void slavio_intctl_init(Object *obj) > { > DeviceState *dev = DEVICE(obj); > @@ -449,9 +475,14 @@ static void slavio_intctl_init(Object *obj) > static void slavio_intctl_class_init(ObjectClass *klass, void *data) > { > DeviceClass *dc = DEVICE_CLASS(klass); > + InterruptStatsProviderClass *ic = INTERRUPT_STATS_PROVIDER_CLASS(klass); > > dc->reset = slavio_intctl_reset; > dc->vmsd = &vmstate_intctl; > +#ifdef DEBUG_IRQ_COUNT > + ic->get_statistics = slavio_intctl_get_statistics; > +#endif > + ic->print_info = slavio_intctl_print_info; > } > > static const TypeInfo slavio_intctl_info = { > @@ -460,6 +491,10 @@ static const TypeInfo slavio_intctl_info = { > .instance_size = sizeof(SLAVIO_INTCTLState), > .instance_init = slavio_intctl_init, > .class_init = slavio_intctl_class_init, > + .interfaces = (InterfaceInfo[]) { > + { TYPE_INTERRUPT_STATS_PROVIDER }, > + { } > + }, > }; > > static void slavio_intctl_register_types(void) > -- > 2.1.4 > >
Le 27/09/2016 à 16:53, Artyom Tarasenko a écrit : > Are slavio_pic_info and slavio_irq_info still used after this patch? After this patch, yes. However, slavio_pic_info/slavio_irq_info (and sun4m_hmp_info_pic/sun4m_hmp_info_irq) will be removed in patch 5/6. Hervé > > On Mon, Sep 26, 2016 at 10:23 PM, Hervé Poussineau <hpoussin@reactos.org> wrote: >> Signed-off-by: Hervé Poussineau <hpoussin@reactos.org> >> --- >> hw/intc/slavio_intctl.c | 35 +++++++++++++++++++++++++++++++++++ >> 1 file changed, 35 insertions(+) >> >> diff --git a/hw/intc/slavio_intctl.c b/hw/intc/slavio_intctl.c >> index e82e893..a9acb64 100644 >> --- a/hw/intc/slavio_intctl.c >> +++ b/hw/intc/slavio_intctl.c >> @@ -26,6 +26,7 @@ >> #include "hw/sparc/sun4m.h" >> #include "monitor/monitor.h" >> #include "hw/sysbus.h" >> +#include "hw/intc/intc.h" >> #include "trace.h" >> >> //#define DEBUG_IRQ_COUNT >> @@ -418,6 +419,31 @@ static void slavio_intctl_reset(DeviceState *d) >> slavio_check_interrupts(s, 0); >> } >> >> +#ifdef DEBUG_IRQ_COUNT >> +static bool slavio_intctl_get_statistics(InterruptStatsProvider *obj, >> + uint64_t **irq_counts, >> + unsigned int *nb_irqs) >> +{ >> + SLAVIO_INTCTLState *s = SLAVIO_INTCTL(obj); >> + *irq_counts = s->irq_count; >> + *nb_irqs = ARRAY_SIZE(s->irq_count); >> + return true; >> +} >> +#endif >> + >> +static void slavio_intctl_print_info(InterruptStatsProvider *obj, Monitor *mon) >> +{ >> + SLAVIO_INTCTLState *s = SLAVIO_INTCTL(obj); >> + int i; >> + >> + for (i = 0; i < MAX_CPUS; i++) { >> + monitor_printf(mon, "per-cpu %d: pending 0x%08x\n", i, >> + s->slaves[i].intreg_pending); >> + } >> + monitor_printf(mon, "master: pending 0x%08x, disabled 0x%08x\n", >> + s->intregm_pending, s->intregm_disabled); >> +} >> + >> static void slavio_intctl_init(Object *obj) >> { >> DeviceState *dev = DEVICE(obj); >> @@ -449,9 +475,14 @@ static void slavio_intctl_init(Object *obj) >> static void slavio_intctl_class_init(ObjectClass *klass, void *data) >> { >> DeviceClass *dc = DEVICE_CLASS(klass); >> + InterruptStatsProviderClass *ic = INTERRUPT_STATS_PROVIDER_CLASS(klass); >> >> dc->reset = slavio_intctl_reset; >> dc->vmsd = &vmstate_intctl; >> +#ifdef DEBUG_IRQ_COUNT >> + ic->get_statistics = slavio_intctl_get_statistics; >> +#endif >> + ic->print_info = slavio_intctl_print_info; >> } >> >> static const TypeInfo slavio_intctl_info = { >> @@ -460,6 +491,10 @@ static const TypeInfo slavio_intctl_info = { >> .instance_size = sizeof(SLAVIO_INTCTLState), >> .instance_init = slavio_intctl_init, >> .class_init = slavio_intctl_class_init, >> + .interfaces = (InterfaceInfo[]) { >> + { TYPE_INTERRUPT_STATS_PROVIDER }, >> + { } >> + }, >> }; >> >> static void slavio_intctl_register_types(void) >> -- >> 2.1.4 >> >> > > >
On Tue, Sep 27, 2016 at 8:39 PM, Hervé Poussineau <hpoussin@reactos.org> wrote: > Le 27/09/2016 à 16:53, Artyom Tarasenko a écrit : >> >> Are slavio_pic_info and slavio_irq_info still used after this patch? > > > After this patch, yes. > However, slavio_pic_info/slavio_irq_info (and > sun4m_hmp_info_pic/sun4m_hmp_info_irq) will be removed in patch 5/6. > Oh. The 5/6 somehow didn't make it to my inbox, so I missed it. Acked-by: Artyom Tarasenko <atar4qemu@gmail.com> > > >> >> On Mon, Sep 26, 2016 at 10:23 PM, Hervé Poussineau <hpoussin@reactos.org> >> wrote: >>> >>> Signed-off-by: Hervé Poussineau <hpoussin@reactos.org> >>> --- >>> hw/intc/slavio_intctl.c | 35 +++++++++++++++++++++++++++++++++++ >>> 1 file changed, 35 insertions(+) >>> >>> diff --git a/hw/intc/slavio_intctl.c b/hw/intc/slavio_intctl.c >>> index e82e893..a9acb64 100644 >>> --- a/hw/intc/slavio_intctl.c >>> +++ b/hw/intc/slavio_intctl.c >>> @@ -26,6 +26,7 @@ >>> #include "hw/sparc/sun4m.h" >>> #include "monitor/monitor.h" >>> #include "hw/sysbus.h" >>> +#include "hw/intc/intc.h" >>> #include "trace.h" >>> >>> //#define DEBUG_IRQ_COUNT >>> @@ -418,6 +419,31 @@ static void slavio_intctl_reset(DeviceState *d) >>> slavio_check_interrupts(s, 0); >>> } >>> >>> +#ifdef DEBUG_IRQ_COUNT >>> +static bool slavio_intctl_get_statistics(InterruptStatsProvider *obj, >>> + uint64_t **irq_counts, >>> + unsigned int *nb_irqs) >>> +{ >>> + SLAVIO_INTCTLState *s = SLAVIO_INTCTL(obj); >>> + *irq_counts = s->irq_count; >>> + *nb_irqs = ARRAY_SIZE(s->irq_count); >>> + return true; >>> +} >>> +#endif >>> + >>> +static void slavio_intctl_print_info(InterruptStatsProvider *obj, >>> Monitor *mon) >>> +{ >>> + SLAVIO_INTCTLState *s = SLAVIO_INTCTL(obj); >>> + int i; >>> + >>> + for (i = 0; i < MAX_CPUS; i++) { >>> + monitor_printf(mon, "per-cpu %d: pending 0x%08x\n", i, >>> + s->slaves[i].intreg_pending); >>> + } >>> + monitor_printf(mon, "master: pending 0x%08x, disabled 0x%08x\n", >>> + s->intregm_pending, s->intregm_disabled); >>> +} >>> + >>> static void slavio_intctl_init(Object *obj) >>> { >>> DeviceState *dev = DEVICE(obj); >>> @@ -449,9 +475,14 @@ static void slavio_intctl_init(Object *obj) >>> static void slavio_intctl_class_init(ObjectClass *klass, void *data) >>> { >>> DeviceClass *dc = DEVICE_CLASS(klass); >>> + InterruptStatsProviderClass *ic = >>> INTERRUPT_STATS_PROVIDER_CLASS(klass); >>> >>> dc->reset = slavio_intctl_reset; >>> dc->vmsd = &vmstate_intctl; >>> +#ifdef DEBUG_IRQ_COUNT >>> + ic->get_statistics = slavio_intctl_get_statistics; >>> +#endif >>> + ic->print_info = slavio_intctl_print_info; >>> } >>> >>> static const TypeInfo slavio_intctl_info = { >>> @@ -460,6 +491,10 @@ static const TypeInfo slavio_intctl_info = { >>> .instance_size = sizeof(SLAVIO_INTCTLState), >>> .instance_init = slavio_intctl_init, >>> .class_init = slavio_intctl_class_init, >>> + .interfaces = (InterfaceInfo[]) { >>> + { TYPE_INTERRUPT_STATS_PROVIDER }, >>> + { } >>> + }, >>> }; >>> >>> static void slavio_intctl_register_types(void) >>> -- >>> 2.1.4 >>> >>> >> >> >> >
diff --git a/hw/intc/slavio_intctl.c b/hw/intc/slavio_intctl.c index e82e893..a9acb64 100644 --- a/hw/intc/slavio_intctl.c +++ b/hw/intc/slavio_intctl.c @@ -26,6 +26,7 @@ #include "hw/sparc/sun4m.h" #include "monitor/monitor.h" #include "hw/sysbus.h" +#include "hw/intc/intc.h" #include "trace.h" //#define DEBUG_IRQ_COUNT @@ -418,6 +419,31 @@ static void slavio_intctl_reset(DeviceState *d) slavio_check_interrupts(s, 0); } +#ifdef DEBUG_IRQ_COUNT +static bool slavio_intctl_get_statistics(InterruptStatsProvider *obj, + uint64_t **irq_counts, + unsigned int *nb_irqs) +{ + SLAVIO_INTCTLState *s = SLAVIO_INTCTL(obj); + *irq_counts = s->irq_count; + *nb_irqs = ARRAY_SIZE(s->irq_count); + return true; +} +#endif + +static void slavio_intctl_print_info(InterruptStatsProvider *obj, Monitor *mon) +{ + SLAVIO_INTCTLState *s = SLAVIO_INTCTL(obj); + int i; + + for (i = 0; i < MAX_CPUS; i++) { + monitor_printf(mon, "per-cpu %d: pending 0x%08x\n", i, + s->slaves[i].intreg_pending); + } + monitor_printf(mon, "master: pending 0x%08x, disabled 0x%08x\n", + s->intregm_pending, s->intregm_disabled); +} + static void slavio_intctl_init(Object *obj) { DeviceState *dev = DEVICE(obj); @@ -449,9 +475,14 @@ static void slavio_intctl_init(Object *obj) static void slavio_intctl_class_init(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); + InterruptStatsProviderClass *ic = INTERRUPT_STATS_PROVIDER_CLASS(klass); dc->reset = slavio_intctl_reset; dc->vmsd = &vmstate_intctl; +#ifdef DEBUG_IRQ_COUNT + ic->get_statistics = slavio_intctl_get_statistics; +#endif + ic->print_info = slavio_intctl_print_info; } static const TypeInfo slavio_intctl_info = { @@ -460,6 +491,10 @@ static const TypeInfo slavio_intctl_info = { .instance_size = sizeof(SLAVIO_INTCTLState), .instance_init = slavio_intctl_init, .class_init = slavio_intctl_class_init, + .interfaces = (InterfaceInfo[]) { + { TYPE_INTERRUPT_STATS_PROVIDER }, + { } + }, }; static void slavio_intctl_register_types(void)
Signed-off-by: Hervé Poussineau <hpoussin@reactos.org> --- hw/intc/slavio_intctl.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+)