From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44272) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a706o-0003I6-9n for qemu-devel@nongnu.org; Thu, 10 Dec 2015 07:14:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1a706i-0003nK-2j for qemu-devel@nongnu.org; Thu, 10 Dec 2015 07:14:06 -0500 Received: from e06smtp15.uk.ibm.com ([195.75.94.111]:58533) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a706h-0003n3-Pn for qemu-devel@nongnu.org; Thu, 10 Dec 2015 07:13:59 -0500 Received: from localhost by e06smtp15.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 10 Dec 2015 12:13:58 -0000 Received: from b06cxnps4075.portsmouth.uk.ibm.com (d06relay12.portsmouth.uk.ibm.com [9.149.109.197]) by d06dlp01.portsmouth.uk.ibm.com (Postfix) with ESMTP id C438C17D8042 for ; Thu, 10 Dec 2015 12:14:29 +0000 (GMT) Received: from d06av06.portsmouth.uk.ibm.com (d06av06.portsmouth.uk.ibm.com [9.149.37.217]) by b06cxnps4075.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id tBACDvNQ26804446 for ; Thu, 10 Dec 2015 12:13:57 GMT Received: from d06av06.portsmouth.uk.ibm.com (localhost [127.0.0.1]) by d06av06.portsmouth.uk.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id tBACDuer025370 for ; Thu, 10 Dec 2015 05:13:57 -0700 From: Janosch Frank Date: Thu, 10 Dec 2015 13:12:51 +0100 Message-Id: <1449749584-23214-22-git-send-email-frankja@linux.vnet.ibm.com> In-Reply-To: <1449749584-23214-1-git-send-email-frankja@linux.vnet.ibm.com> References: <1449749584-23214-1-git-send-email-frankja@linux.vnet.ibm.com> Subject: [Qemu-devel] [PATCH 21/34] scripts/kvm/kvm_stat: Encapsulate filters variable List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: cornelia.huck@de.ibm.com, frankja@linux.vnet.ibm.com 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. --- 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 20fc5c9..868c6a5 100755 --- a/scripts/kvm/kvm_stat +++ b/scripts/kvm/kvm_stat @@ -296,10 +296,14 @@ def get_online_cpus(): int(cpu_range[1]) + 1)) return cpulist -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 @@ -379,6 +383,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 @@ -388,8 +393,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 @@ -414,8 +419,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) @@ -646,7 +652,6 @@ def check_access(): def main(): check_access() - detect_platform() options = get_options() providers = get_providers(options) stats = Stats(providers, fields=options.fields) -- 2.3.0