From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:45617) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RvnTZ-0004Qg-Op for qemu-devel@nongnu.org; Fri, 10 Feb 2012 05:13:15 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RvnTT-0004n2-Ue for qemu-devel@nongnu.org; Fri, 10 Feb 2012 05:13:09 -0500 Received: from e28smtp04.in.ibm.com ([122.248.162.4]:43885) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RvnTS-0004mg-Iu for qemu-devel@nongnu.org; Fri, 10 Feb 2012 05:13:03 -0500 Received: from /spool/local by e28smtp04.in.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 10 Feb 2012 15:42:55 +0530 Received: from d28av02.in.ibm.com (d28av02.in.ibm.com [9.184.220.64]) by d28relay02.in.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id q1AACpKl3059954 for ; Fri, 10 Feb 2012 15:42:52 +0530 Received: from d28av02.in.ibm.com (loopback [127.0.0.1]) by d28av02.in.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id q1AACpt5012978 for ; Fri, 10 Feb 2012 21:12:51 +1100 Message-ID: <4F34EDA2.9020503@linux.vnet.ibm.com> Date: Fri, 10 Feb 2012 15:42:50 +0530 From: Harsh Bora MIME-Version: 1.0 References: <20120203211030.30134.94075.stgit@ginnungagap.bsc.es> <20120203211119.30134.76980.stgit@ginnungagap.bsc.es> In-Reply-To: <20120203211119.30134.76980.stgit@ginnungagap.bsc.es> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Subject: Re: [Qemu-devel] [PATCH v2 03/11] trace: [tracetool] Simplify event line parsing List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: =?UTF-8?B?TGx1w61zIFZpbGFub3Zh?= Cc: qemu-devel@nongnu.org, "Aneesh Kumar K. V" 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 > --- > 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[^(\s]+)\((?P[^)]*)\)\s*(?P\".*)?") > + > 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): >