qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2 3/6] intc/slavio_intctl: implement InterruptS


From: Artyom Tarasenko
Subject: Re: [Qemu-devel] [PATCH v2 3/6] intc/slavio_intctl: implement InterruptStatsProvider interface
Date: Tue, 27 Sep 2016 16:53:32 +0200

Are slavio_pic_info and slavio_irq_info still used after this patch?

On Mon, Sep 26, 2016 at 10:23 PM, Hervé Poussineau <address@hidden> wrote:
> Signed-off-by: Hervé Poussineau <address@hidden>
> ---
>  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
>
>



-- 
Regards,
Artyom Tarasenko

SPARC and PPC PReP under qemu blog: http://tyom.blogspot.com/search/label/qemu



reply via email to

[Prev in Thread] Current Thread [Next in Thread]