All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Philippe Mathieu-Daudé" <f4bug@amsat.org>
To: "Alex Bennée" <alex.bennee@linaro.org>,
	dovgaluk@ispras.ru, rth@twiddle.net, pbonzini@redhat.com
Cc: mttcg@listserver.greensocs.com, peter.maydell@linaro.org,
	nikunj@linux.vnet.ibm.com, a.rigo@virtualopensystems.com,
	qemu-devel@nongnu.org, cota@braap.org, bobby.prani@gmail.com,
	fred.konrad@greensocs.com
Subject: Re: [Qemu-devel] [RFC PATCH v1 2/9] scripts/qemu-gdb/timers.py: new helper to dump timer state
Date: Mon, 3 Apr 2017 11:02:56 -0300	[thread overview]
Message-ID: <e5d3193c-fa8a-c270-c62c-f19138f8adcb@amsat.org> (raw)
In-Reply-To: <20170403124524.10824-3-alex.bennee@linaro.org>

On 04/03/2017 09:45 AM, Alex Bennée wrote:
> This introduces the qemu-gdb command "qemu timers" which will dump the
> state of the main timers in the system.
>
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

> ---
>  scripts/qemu-gdb.py       |  3 ++-
>  scripts/qemugdb/timers.py | 54 +++++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 56 insertions(+), 1 deletion(-)
>  create mode 100644 scripts/qemugdb/timers.py
>
> diff --git a/scripts/qemu-gdb.py b/scripts/qemu-gdb.py
> index b3f8e04f77..3e7adb87dc 100644
> --- a/scripts/qemu-gdb.py
> +++ b/scripts/qemu-gdb.py
> @@ -26,7 +26,7 @@ import os, sys
>
>  sys.path.append(os.path.dirname(__file__))
>
> -from qemugdb import aio, mtree, coroutine
> +from qemugdb import aio, mtree, coroutine, timers
>
>  class QemuCommand(gdb.Command):
>      '''Prefix for QEMU debug support commands'''
> @@ -38,6 +38,7 @@ QemuCommand()
>  coroutine.CoroutineCommand()
>  mtree.MtreeCommand()
>  aio.HandlersCommand()
> +timers.TimersCommand()
>
>  coroutine.CoroutineSPFunction()
>  coroutine.CoroutinePCFunction()
> diff --git a/scripts/qemugdb/timers.py b/scripts/qemugdb/timers.py
> new file mode 100644
> index 0000000000..be71a001e3
> --- /dev/null
> +++ b/scripts/qemugdb/timers.py
> @@ -0,0 +1,54 @@
> +#!/usr/bin/python
> +# GDB debugging support
> +#
> +# Copyright 2017 Linaro Ltd
> +#
> +# Author: Alex Bennée <alex.bennee@linaro.org>
> +#
> +# This work is licensed under the terms of the GNU GPL, version 2.  See
> +# the COPYING file in the top-level directory.
> +
> +# 'qemu timers' -- display the current timerlists
> +
> +import gdb
> +
> +class TimersCommand(gdb.Command):
> +    '''Display the current QEMU timers'''
> +
> +    def __init__(self):
> +        'Register the class as a gdb command'
> +        gdb.Command.__init__(self, 'qemu timers', gdb.COMMAND_DATA,
> +                             gdb.COMPLETE_NONE)
> +
> +    def dump_timers(self, timer):
> +        "Follow a timer and recursively dump each one in the list."
> +        # timer should be of type QemuTimer
> +        gdb.write("    timer %s/%s (cb:%s,opq:%s)\n" % (
> +            timer['expire_time'],
> +            timer['scale'],
> +            timer['cb'],
> +            timer['opaque']))
> +
> +        if int(timer['next']) > 0:
> +            self.dump_timers(timer['next'])
> +
> +
> +    def process_timerlist(self, tlist, ttype):
> +        gdb.write("Processing %s timers\n" % (ttype))
> +        gdb.write("  clock %s is enabled:%s, last:%s\n" % (
> +            tlist['clock']['type'],
> +            tlist['clock']['enabled'],
> +            tlist['clock']['last']))
> +        if int(tlist['active_timers']) > 0:
> +            self.dump_timers(tlist['active_timers'])
> +
> +
> +    def invoke(self, arg, from_tty):
> +        'Run the command'
> +        main_timers = gdb.parse_and_eval("main_loop_tlg")
> +
> +        # This will break if QEMUClockType in timer.h is redfined
> +        self.process_timerlist(main_timers['tl'][0], "Realtime")
> +        self.process_timerlist(main_timers['tl'][1], "Virtual")
> +        self.process_timerlist(main_timers['tl'][2], "Host")
> +        self.process_timerlist(main_timers['tl'][3], "Virtual RT")
>

  reply	other threads:[~2017-04-03 14:03 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-03 12:45 [Qemu-devel] [RFC PATCH v1 0/9] MTTCG and record/replay fixes for rc3 Alex Bennée
2017-04-03 12:45 ` [Qemu-devel] [RFC PATCH v1 1/9] scripts/qemugdb/mtree.py: fix up mtree dump Alex Bennée
2017-04-03 12:45 ` [Qemu-devel] [RFC PATCH v1 2/9] scripts/qemu-gdb/timers.py: new helper to dump timer state Alex Bennée
2017-04-03 14:02   ` Philippe Mathieu-Daudé [this message]
2017-04-03 12:45 ` [Qemu-devel] [RFC PATCH v1 3/9] scripts/replay-dump.py: replay log dumper Alex Bennée
2017-04-03 12:45 ` [Qemu-devel] [RFC PATCH v1 4/9] target/i386/misc_helper: wrap BQL around another IRQ generator Alex Bennée
2017-04-04 16:53   ` Richard Henderson
2017-04-04 17:36     ` Eduardo Habkost
2017-04-03 12:45 ` [Qemu-devel] [RFC PATCH v1 5/9] cpus: remove icount handling from qemu_tcg_cpu_thread_fn Alex Bennée
2017-04-04 16:53   ` Richard Henderson
2017-04-03 12:45 ` [Qemu-devel] [RFC PATCH v1 6/9] cpus: check cpu->running in cpu_get_icount_raw() Alex Bennée
2017-04-03 14:00   ` Philippe Mathieu-Daudé
2017-04-04 16:54   ` Richard Henderson
2017-04-03 12:45 ` [Qemu-devel] [RFC PATCH v1 7/9] cpus: move icount preparation out of tcg_exec_cpu Alex Bennée
2017-04-04  5:39   ` Pavel Dovgalyuk
2017-04-04  8:56     ` Alex Bennée
2017-04-04 10:46       ` Alex Bennée
2017-04-04 10:53         ` Paolo Bonzini
2017-04-04 12:31           ` Alex Bennée
2017-04-04 12:37             ` Paolo Bonzini
2017-04-04 13:29               ` Alex Bennée
2017-04-05 10:44                 ` Pavel Dovgalyuk
2017-04-05 11:18                   ` Alex Bennée
2017-04-03 12:45 ` [Qemu-devel] [RFC PATCH v1 8/9] cpus: don't credit executed instructions before they have run Alex Bennée
2017-04-03 17:04   ` Paolo Bonzini
2017-04-04  5:37   ` Pavel Dovgalyuk
2017-04-04 10:13     ` Paolo Bonzini
2017-04-07 11:27       ` Pavel Dovgalyuk
2017-04-04 14:39   ` Paolo Bonzini
2017-04-03 12:45 ` [Qemu-devel] [RFC PATCH v1 9/9] replay: gracefully handle backward time events Alex Bennée
2017-04-03 17:03 ` [Qemu-devel] [RFC PATCH v1 0/9] MTTCG and record/replay fixes for rc3 Paolo Bonzini
2017-04-04  8:50   ` Alex Bennée

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=e5d3193c-fa8a-c270-c62c-f19138f8adcb@amsat.org \
    --to=f4bug@amsat.org \
    --cc=a.rigo@virtualopensystems.com \
    --cc=alex.bennee@linaro.org \
    --cc=bobby.prani@gmail.com \
    --cc=cota@braap.org \
    --cc=dovgaluk@ispras.ru \
    --cc=fred.konrad@greensocs.com \
    --cc=mttcg@listserver.greensocs.com \
    --cc=nikunj@linux.vnet.ibm.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=rth@twiddle.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.