From patchwork Tue Jan 26 13:46:59 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 8122741 Return-Path: X-Original-To: patchwork-qemu-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 620399F6DA for ; Tue, 26 Jan 2016 14:01:17 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id B2F992021A for ; Tue, 26 Jan 2016 14:01:16 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 2CC562022D for ; Tue, 26 Jan 2016 14:01:14 +0000 (UTC) Received: from localhost ([::1]:44036 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aO4BF-00023I-M0 for patchwork-qemu-devel@patchwork.kernel.org; Tue, 26 Jan 2016 09:01:13 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35189) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aO3yc-0000TA-NG for qemu-devel@nongnu.org; Tue, 26 Jan 2016 08:48:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aO3yZ-00047T-Px for qemu-devel@nongnu.org; Tue, 26 Jan 2016 08:48:10 -0500 Received: from mx1.redhat.com ([209.132.183.28]:49659) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aO3yZ-000474-J7 for qemu-devel@nongnu.org; Tue, 26 Jan 2016 08:48:07 -0500 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (Postfix) with ESMTPS id 3762AB6A2E; Tue, 26 Jan 2016 13:48:07 +0000 (UTC) Received: from 640k.localdomain.com (ovpn-112-67.ams2.redhat.com [10.36.112.67]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id u0QDlNqc028272; Tue, 26 Jan 2016 08:48:06 -0500 From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 26 Jan 2016 14:46:59 +0100 Message-Id: <1453816041-36362-28-git-send-email-pbonzini@redhat.com> In-Reply-To: <1453816041-36362-1-git-send-email-pbonzini@redhat.com> References: <1453816041-36362-1-git-send-email-pbonzini@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 209.132.183.28 Cc: Janosch Frank Subject: [Qemu-devel] [PULL 27/49] scripts/kvm/kvm_stat: Encapsulate filters variable 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+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Janosch Frank The variable was only used in one class but still was defined globally. Additionaly the detect_platform routine which prepares the data that goes into the variable was called on each start of the script, no matter if the class was needed. To make the variable local to the TracepointProvider class, a new function that calls detect_platform and returns the filters was introduced. Signed-off-by: Janosch Frank Message-Id: <1452525484-32309-22-git-send-email-frankja@linux.vnet.ibm.com> Signed-off-by: Paolo Bonzini --- scripts/kvm/kvm_stat | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/scripts/kvm/kvm_stat b/scripts/kvm/kvm_stat index 083dd2f..7837f40 100755 --- a/scripts/kvm/kvm_stat +++ b/scripts/kvm/kvm_stat @@ -302,10 +302,14 @@ def get_online_cpus(): cpu_string = cpu_list.readline() return parse_int_list(cpu_string) -filters = {} -filters['kvm_userspace_exit'] = ('reason', USERSPACE_EXIT_REASONS) -if EXIT_REASONS: - filters['kvm_exit'] = ('exit_reason', EXIT_REASONS) + +def get_filters(): + detect_platform() + filters = {} + filters['kvm_userspace_exit'] = ('reason', USERSPACE_EXIT_REASONS) + if EXIT_REASONS: + filters['kvm_exit'] = ('exit_reason', EXIT_REASONS) + return filters libc = ctypes.CDLL('libc.so.6', use_errno=True) syscall = libc.syscall @@ -385,6 +389,7 @@ class Event(object): class TracepointProvider(object): def __init__(self): self.group_leaders = [] + self.filters = get_filters() self._fields = self.get_available_fields() self.setup_traces() self.fields = self._fields @@ -394,8 +399,8 @@ class TracepointProvider(object): fields = walkdir(path)[1] extra = [] for field in fields: - if field in filters: - filter_name_, filter_dicts = filters[field] + if field in self.filters: + filter_name_, filter_dicts = self.filters[field] for name in filter_dicts: extra.append(field + '(' + name + ')') fields += extra @@ -420,8 +425,9 @@ class TracepointProvider(object): match = re.match(r'(.*)\((.*)\)', name) if match: tracepoint, sub = match.groups() - tracefilter = '%s==%d\0' % (filters[tracepoint][0], - filters[tracepoint][1][sub]) + tracefilter = ('%s==%d\0' % + (self.filters[tracepoint][0], + self.filters[tracepoint][1][sub])) group.add_event(name, event_set='kvm', tracepoint=tracepoint, tracefilter=tracefilter) @@ -652,7 +658,6 @@ def check_access(): def main(): check_access() - detect_platform() options = get_options() providers = get_providers(options) stats = Stats(providers, fields=options.fields)