From patchwork Mon Mar 24 17:04:54 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 26938 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-ie0-f198.google.com (mail-ie0-f198.google.com [209.85.223.198]) by ip-10-151-82-157.ec2.internal (Postfix) with ESMTPS id CBA9220143 for ; Mon, 24 Mar 2014 17:05:31 +0000 (UTC) Received: by mail-ie0-f198.google.com with SMTP id to1sf21903562ieb.9 for ; Mon, 24 Mar 2014 10:05:31 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:delivered-to:from:to:date:message-id :mime-version:cc:subject:precedence:list-id:list-unsubscribe :list-archive:list-post:list-help:list-subscribe:errors-to:sender :x-original-sender:x-original-authentication-results:mailing-list :content-type:content-transfer-encoding; bh=2SzfGu62/ZgAsRc6pMGJBfYTPMHlyxm8jOnFRjEFih4=; b=f1GmKGwBPO55pV6JZ7SAdN43zOvRH65KfYje2lchABShyiLbENxlPDmPoDVerQi9eC MO1iL691BBWJH/kVI/l/CtAc6deVBdvghn1SiAget9NVGdjbDffT0K6U7biq36+lA0St R1Z+7NN7KDAYkF3G4N6y5ARhjDLplKQVXmsQ3QptwkysK/xoRLGIouEXlJZ8o3D4WpkE sHlupPF2aUA4+6Onsb7d1F7RBKCW31RSqXZ8mleHiwj/E/ImacqqiE0NiiNSxLo/5N+f Im/P8QUy1EQye4ZR/vDNyKHF0nHvSEddQbNr76KqpRSSPO0Qs8g3Khb8ZVpTACQ/lIvj i6Ag== X-Gm-Message-State: ALoCoQnL7snrY43Eth2KyB+ETQNAlTFmTvs9qyySVQxOwlk1rjFUBNKpWbTb7X/VsOg7NX3LrVBw X-Received: by 10.182.11.70 with SMTP id o6mr12838637obb.19.1395680731268; Mon, 24 Mar 2014 10:05:31 -0700 (PDT) X-BeenThere: patchwork-forward@linaro.org Received: by 10.140.108.10 with SMTP id i10ls1635653qgf.62.gmail; Mon, 24 Mar 2014 10:05:31 -0700 (PDT) X-Received: by 10.58.185.244 with SMTP id ff20mr7039vec.40.1395680731088; Mon, 24 Mar 2014 10:05:31 -0700 (PDT) Received: from mail-vc0-f174.google.com (mail-vc0-f174.google.com [209.85.220.174]) by mx.google.com with ESMTPS id rx10si3238146vdc.150.2014.03.24.10.05.31 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Mon, 24 Mar 2014 10:05:31 -0700 (PDT) Received-SPF: neutral (google.com: 209.85.220.174 is neither permitted nor denied by best guess record for domain of patch+caf_=patchwork-forward=linaro.org@linaro.org) client-ip=209.85.220.174; Received: by mail-vc0-f174.google.com with SMTP id ld13so6103457vcb.33 for ; Mon, 24 Mar 2014 10:05:31 -0700 (PDT) X-Received: by 10.52.147.238 with SMTP id tn14mr43565718vdb.23.1395680730904; Mon, 24 Mar 2014 10:05:30 -0700 (PDT) X-Forwarded-To: patchwork-forward@linaro.org X-Forwarded-For: patch@linaro.org patchwork-forward@linaro.org Delivered-To: patch@linaro.org Received: by 10.220.78.9 with SMTP id i9csp238576vck; Mon, 24 Mar 2014 10:05:30 -0700 (PDT) X-Received: by 10.224.98.197 with SMTP id r5mr76034112qan.47.1395680730282; Mon, 24 Mar 2014 10:05:30 -0700 (PDT) Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id w5si1744538qab.112.2014.03.24.10.05.30 for (version=TLSv1 cipher=RC4-SHA bits=128/128); Mon, 24 Mar 2014 10:05:30 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Received: from localhost ([::1]:37561 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WS8JV-0001BR-NL for patch@linaro.org; Mon, 24 Mar 2014 13:05:29 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50614) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WS8Iz-0000MB-Pr for qemu-devel@nongnu.org; Mon, 24 Mar 2014 13:05:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WS8Iv-0007Yf-6X for qemu-devel@nongnu.org; Mon, 24 Mar 2014 13:04:57 -0400 Received: from static.88-198-71-155.clients.your-server.de ([88.198.71.155]:52044 helo=socrates.bennee.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WS8Iu-0007YS-Vz for qemu-devel@nongnu.org; Mon, 24 Mar 2014 13:04:53 -0400 Received: from localhost ([127.0.0.1] helo=zen.linaro.local) by socrates.bennee.com with esmtp (Exim 4.80) (envelope-from ) id 1WS8JF-0004DU-18; Mon, 24 Mar 2014 18:05:13 +0100 From: alex.bennee@linaro.org To: qemu-devel@nongnu.org Date: Mon, 24 Mar 2014 17:04:54 +0000 Message-Id: <1395680694-27758-1-git-send-email-alex.bennee@linaro.org> X-Mailer: git-send-email 1.9.1 MIME-Version: 1.0 X-SA-Exim-Connect-IP: 127.0.0.1 X-SA-Exim-Mail-From: alex.bennee@linaro.org X-SA-Exim-Scanned: No (on socrates.bennee.com); SAEximRunCond expanded to false X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 88.198.71.155 Cc: Mohamad Gebai , =?UTF-8?q?Alex=20Benn=C3=A9e?= , vilanova@ac.upc.edu, stefanha@redhat.com, mohamad.gebai@gmail.com Subject: [Qemu-devel] [PATCH] trace: teach lttng backend to use format strings X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: , List-Help: , List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org X-Removed-Original-Auth: Dkim didn't pass. X-Original-Sender: alex.bennee@linaro.org X-Original-Authentication-Results: mx.google.com; spf=neutral (google.com: 209.85.220.174 is neither permitted nor denied by best guess record for domain of patch+caf_=patchwork-forward=linaro.org@linaro.org) smtp.mail=patch+caf_=patchwork-forward=linaro.org@linaro.org Mailing-list: list patchwork-forward@linaro.org; contact patchwork-forward+owners@linaro.org X-Google-Group-Id: 836684582541 From: Alex Bennée This makes the UST backend pay attention to the format string arguments that are defined when defining payload data. With this you can now ensure integers are reported in hex mode if you want. Signed-off-by: Alex Bennée --- scripts/tracetool/__init__.py | 13 +++++++++++-- scripts/tracetool/backend/ust.py | 16 ++++++++++++---- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/scripts/tracetool/__init__.py b/scripts/tracetool/__init__.py index 175df08..abcdc49 100644 --- a/scripts/tracetool/__init__.py +++ b/scripts/tracetool/__init__.py @@ -118,13 +118,16 @@ class Event(object): Properties of the event. args : Arguments The event arguments. + arg_fmts : str + The format strings for each arugment. """ _CRE = re.compile("((?P.*)\s+)?(?P[^(\s]+)\((?P[^)]*)\)\s*(?P\".*)?") + _FMT = re.compile("(%\w+|%.*PRI\S+)") _VALID_PROPS = set(["disable"]) - def __init__(self, name, props, fmt, args): + def __init__(self, name, props, fmt, args, arg_fmts): """ Parameters ---------- @@ -136,11 +139,15 @@ class Event(object): Event printing format. args : Arguments Event arguments. + arg_fmts : list of str + Format strings for each argument + """ self.name = name self.properties = props self.fmt = fmt self.args = args + self.arg_fmts = arg_fmts unknown_props = set(self.properties) - self._VALID_PROPS if len(unknown_props) > 0: @@ -163,8 +170,10 @@ class Event(object): props = groups["props"].split() fmt = groups["fmt"] args = Arguments.build(groups["args"]) + print "%s: %s and %s" % (name, args, fmt) + arg_fmts = Event._FMT.findall(fmt) - return Event(name, props, fmt, args) + return Event(name, props, fmt, args, arg_fmts) def __repr__(self): """Evaluable string representation for this object.""" diff --git a/scripts/tracetool/backend/ust.py b/scripts/tracetool/backend/ust.py index 41c1c75..cb09958 100644 --- a/scripts/tracetool/backend/ust.py +++ b/scripts/tracetool/backend/ust.py @@ -56,13 +56,21 @@ def ust_events_h(events): args = ", ".join(", ".join(i) for i in e.args), ) - for t,n in e.args: - if ('int' in t) or ('long' in t) or ('unsigned' in t) or ('size_t' in t): + types = e.args.types() + names = e.args.names() + fmts = e.arg_fmts + print "/* %s/%s/%s */" % (types, names, fmts) + for t,n,f in zip(types, names, fmts): + if ('char *' in t) or ('char*' in t): + out(' ctf_string(' + n + ', ' + n + ')') + elif ("%p" in f) or ("x" in f) or ("PRIx" in f): + out(' ctf_integer_hex('+ t + ', ' + n + ', ' + n + ')') + elif ("ptr" in t) or ("*" in t): + out(' ctf_integer_hex('+ t + ', ' + n + ', ' + n + ')') + elif ('int' in t) or ('long' in t) or ('unsigned' in t) or ('size_t' in t): out(' ctf_integer(' + t + ', ' + n + ', ' + n + ')') elif ('double' in t) or ('float' in t): out(' ctf_float(' + t + ', ' + n + ', ' + n + ')') - elif ('char *' in t) or ('char*' in t): - out(' ctf_string(' + n + ', ' + n + ')') elif ('void *' in t) or ('void*' in t): out(' ctf_integer_hex(unsigned long, ' + n + ', ' + n + ')')