All of lore.kernel.org
 help / color / mirror / Atom feed
From: Harsh Bora <harsh@linux.vnet.ibm.com>
To: "Lluís Vilanova" <vilanova@ac.upc.edu>
Cc: qemu-devel@nongnu.org,
	"Aneesh Kumar K. V" <aneesh.kumar@linux.vnet.ibm.com>
Subject: Re: [Qemu-devel] [PATCH v2 03/11] trace: [tracetool] Simplify event line parsing
Date: Fri, 10 Feb 2012 15:42:50 +0530	[thread overview]
Message-ID: <4F34EDA2.9020503@linux.vnet.ibm.com> (raw)
In-Reply-To: <20120203211119.30134.76980.stgit@ginnungagap.bsc.es>

Hi Lluis,
Sorry for a late response as I was out of office for last 2 weeks 
because of some medical emergency at home. While trying to merge your 
changes with mine, I found something (see below):

On 02/04/2012 02:41 AM, Lluís Vilanova wrote:
> Signed-off-by: Lluís Vilanova<vilanova@ac.upc.edu>
> ---
>   scripts/tracetool.py |   46 ++++++++++++++--------------------------------
>   1 files changed, 14 insertions(+), 32 deletions(-)
>
> diff --git a/scripts/tracetool.py b/scripts/tracetool.py
> index 7042728..f675d96 100755
> --- a/scripts/tracetool.py
> +++ b/scripts/tracetool.py
> @@ -38,19 +38,9 @@ Options:
>   '''
>       sys.exit(1)
>
> -def get_name(line, sep='('):
> -    head, sep, tail = line.partition(sep)
> -    return head
> -
> -def get_args(line, sep1='(', sep2=')'):
> -    head, sep1, tail = line.partition(sep1)
> -    args, sep2, fmt_str = tail.partition(sep2)
> -    return args
> -
> -def get_argnames(line, sep=','):
> +def get_argnames(args):
>       nfields = 0
>       str = []
> -    args = get_args(line)
>       for field in args.split():
>         nfields = nfields + 1
>         # Drop pointer star
> @@ -71,21 +61,7 @@ def get_argnames(line, sep=','):
>       else:
>         return ''
>
> -def get_argc(line):
> -    argc = 0
> -    argnames = get_argnames(line)
> -    if argnames:
> -      for name in argnames.split(','):
> -        argc = argc + 1
> -    return argc
> -
> -def get_fmt(line, sep=')'):
> -    event, sep, fmt = line.partition(sep)
> -    return fmt
> -
> -def calc_sizeofargs(line):
> -    args = get_args(line)
> -    argc = get_argc(line)
> +def calc_sizeofargs(args, argc):
>       strtype = ('const char*', 'char*', 'const char *', 'char *')
>       str = []
>       newstr = ""
> @@ -495,16 +471,22 @@ trace_gen = {
>   }
>
>   # A trace event
> +import re
> +cre = re.compile("(?P<name>[^(\s]+)\((?P<args>[^)]*)\)\s*(?P<fmt>\".*)?")
> +
>   class Event(object):
>       def __init__(self, num, line):
>           self.num = num
> -        self.args = get_args(line)
> +        m = cre.match(line)
> +        assert m is not None
> +        groups = m.groupdict('')
> +        self.args = groups["args"]
>           self.arglist = self.args.split(',')
> -        self.name = get_name(line)
> -        self.argc = get_argc(line)
> -        self.argnames = get_argnames(line)
> -        self.sizestr = calc_sizeofargs(line)
> -        self.fmt = get_fmt(line)
> +        self.name = groups["name"]
> +        self.argc = len(self.arglist)

for events with only 'void' as argument, it calculates argc as 1 which
should be 0 only. Previous code does take care of 'void' arguments. Do
you have a better replacement for the previous code taking care of this?

- Harsh


> +        self.argnames = get_argnames(self.args)
> +        self.sizestr = calc_sizeofargs(self.args, self.argc)
> +        self.fmt = groups["fmt"]
>
>   # Generator that yields Event objects given a trace-events file object
>   def read_events(fobj):
>

  reply	other threads:[~2012-02-10 10:13 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-02-03 21:10 [Qemu-devel] [PATCH v2 00/11] tracetool: Improvements for future expansion Lluís Vilanova
2012-02-03 21:10 ` [Qemu-devel] [PATCH v2 01/11] [trivial] Fix a compiler warning Lluís Vilanova
2012-02-03 21:11 ` [Qemu-devel] [PATCH v2 02/11] trace: [tracetool] Do not rebuild event list in backend code Lluís Vilanova
2012-02-03 21:11 ` [Qemu-devel] [PATCH v2 03/11] trace: [tracetool] Simplify event line parsing Lluís Vilanova
2012-02-10 10:12   ` Harsh Bora [this message]
2012-02-10 11:54     ` Lluís Vilanova
2012-02-10 12:01       ` Harsh Bora
2012-02-03 21:11 ` [Qemu-devel] [PATCH v2 04/11] trace: [ŧracetool] Do not precompute the event number Lluís Vilanova
2012-02-03 21:11 ` [Qemu-devel] [PATCH v2 05/11] trace: [tracetool] Add support for event properties Lluís Vilanova
2012-02-03 21:12 ` [Qemu-devel] [PATCH v2 06/11] trace: [tracetool] Process the "disable" event property Lluís Vilanova
2012-02-03 21:12 ` [Qemu-devel] [PATCH v2 07/11] trace: [tracetool] Rewrite event argument parsing Lluís Vilanova
2012-02-03 21:12 ` [Qemu-devel] [PATCH v2 08/11] trace: [tracetool] Make format-specific code optional and with access to event information Lluís Vilanova
2012-02-03 21:12 ` [Qemu-devel] [PATCH v2 09/11] trace: [tracetool] Automatically establish available backends and formats Lluís Vilanova
2012-02-03 21:13 ` [Qemu-devel] [PATCH v2 10/11] trace: Provide a per-event status define for conditional compilation Lluís Vilanova
2012-02-03 21:13 ` [Qemu-devel] [PATCH v2 11/11] trace: [tracetool] Add error-reporting functions Lluís Vilanova

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=4F34EDA2.9020503@linux.vnet.ibm.com \
    --to=harsh@linux.vnet.ibm.com \
    --cc=aneesh.kumar@linux.vnet.ibm.com \
    --cc=qemu-devel@nongnu.org \
    --cc=vilanova@ac.upc.edu \
    /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.