From patchwork Thu Jul 22 15:58:44 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Hajnoczi X-Patchwork-Id: 59608 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [199.232.76.165]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id C3B401007D1 for ; Fri, 23 Jul 2010 02:30:14 +1000 (EST) Received: from localhost ([127.0.0.1]:44238 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Obyex-0001Fk-T9 for incoming@patchwork.ozlabs.org; Thu, 22 Jul 2010 12:30:11 -0400 Received: from [140.186.70.92] (port=53794 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1ObyAt-00077T-1Y for qemu-devel@nongnu.org; Thu, 22 Jul 2010 11:59:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1ObyAq-0002Ln-5v for qemu-devel@nongnu.org; Thu, 22 Jul 2010 11:59:05 -0400 Received: from mtagate5.uk.ibm.com ([194.196.100.165]:36911) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1ObyAp-0002L7-Rr for qemu-devel@nongnu.org; Thu, 22 Jul 2010 11:59:04 -0400 Received: from d06nrmr1806.portsmouth.uk.ibm.com (d06nrmr1806.portsmouth.uk.ibm.com [9.149.39.193]) by mtagate5.uk.ibm.com (8.13.1/8.13.1) with ESMTP id o6MFx2Nq002329 for ; Thu, 22 Jul 2010 15:59:02 GMT Received: from d06av01.portsmouth.uk.ibm.com (d06av01.portsmouth.uk.ibm.com [9.149.37.212]) by d06nrmr1806.portsmouth.uk.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id o6MFx2Na1671374 for ; Thu, 22 Jul 2010 16:59:02 +0100 Received: from d06av01.portsmouth.uk.ibm.com (loopback [127.0.0.1]) by d06av01.portsmouth.uk.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id o6MFx1t0005911 for ; Thu, 22 Jul 2010 16:59:02 +0100 Received: from stefan-thinkpad.manchester-maybrook.uk.ibm.com (dyn-9-174-219-33.manchester-maybrook.uk.ibm.com [9.174.219.33]) by d06av01.portsmouth.uk.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id o6MFx1Nr005887; Thu, 22 Jul 2010 16:59:01 +0100 From: Stefan Hajnoczi To: Date: Thu, 22 Jul 2010 16:58:44 +0100 Message-Id: <1279814326-9422-2-git-send-email-stefanha@linux.vnet.ibm.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1279814326-9422-1-git-send-email-stefanha@linux.vnet.ibm.com> References: <1279814326-9422-1-git-send-email-stefanha@linux.vnet.ibm.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6, seldom 2.4 (older, 4) Cc: Stefan Hajnoczi , Prerna Saxena Subject: [Qemu-devel] [Tracing] [PATCH 2/4] Add copyright and doc comments to simpletrace.py X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Signed-off-by: Stefan Hajnoczi --- simpletrace.py | 17 +++++++++++++++++ 1 files changed, 17 insertions(+), 0 deletions(-) diff --git a/simpletrace.py b/simpletrace.py index 2271860..c951023 100755 --- a/simpletrace.py +++ b/simpletrace.py @@ -1,4 +1,14 @@ #!/usr/bin/env python +# +# Pretty-printer for simple trace backend binary trace files +# +# Copyright IBM, Corp. 2010 +# +# This work is licensed under the terms of the GNU GPL, version 2. See +# the COPYING file in the top-level directory. +# +# For help see docs/tracing.txt + import sys import struct import re @@ -8,7 +18,10 @@ trace_len = struct.calcsize(trace_fmt) event_re = re.compile(r'(disable\s+)?([a-zA-Z0-9_]+)\(([^)]*)\)\s+"([^"]*)"') def parse_events(fobj): + """Parse a trace-events file.""" + def get_argnames(args): + """Extract argument names from a parameter list.""" return tuple(arg.split()[-1].lstrip('*') for arg in args.split(',')) events = {} @@ -27,17 +40,21 @@ def parse_events(fobj): return events def read_record(fobj): + """Deserialize a trace record from a file.""" s = fobj.read(trace_len) if len(s) != trace_len: return None return struct.unpack(trace_fmt, s) class Formatter(object): + """Trace record pretty-printer""" + def __init__(self, events): self.events = events self.last_timestamp = None def format_record(self, rec): + """Return a string describing a given trace record.""" if self.last_timestamp is None: self.last_timestamp = rec[1] delta_ns = rec[1] - self.last_timestamp