From: Stefan Raspl <raspl@linux.vnet.ibm.com>
To: kvm@vger.kernel.org
Cc: pbonzini@redhat.com, rkrcmar@redhat.com, frankja@linux.vnet.ibm.com
Subject: [PATCH 06/17] tools/kvm_stat: full PEP8 compliance
Date: Mon, 20 Feb 2017 16:42:00 +0100 [thread overview]
Message-ID: <20170220154211.11882-7-raspl@linux.vnet.ibm.com> (raw)
In-Reply-To: <20170220154211.11882-1-raspl@linux.vnet.ibm.com>
Provides all missing empty lines as required for full PEP compliance.
Signed-off-by: Stefan Raspl <raspl@linux.vnet.ibm.com>
Reviewed-by: Marc Hartmayer <mhartmay@linux.vnet.ibm.com>
---
tools/kvm/kvm_stat/kvm_stat | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/tools/kvm/kvm_stat/kvm_stat b/tools/kvm/kvm_stat/kvm_stat
index a1fa86e..e0503c8 100755
--- a/tools/kvm/kvm_stat/kvm_stat
+++ b/tools/kvm/kvm_stat/kvm_stat
@@ -224,6 +224,7 @@ IOCTL_NUMBERS = {
'RESET': 0x00002403,
}
+
class Arch(object):
"""Encapsulates global architecture specific data.
@@ -254,12 +255,14 @@ class Arch(object):
return ArchX86(SVM_EXIT_REASONS)
return
+
class ArchX86(Arch):
def __init__(self, exit_reasons):
self.sc_perf_evt_open = 298
self.ioctl_numbers = IOCTL_NUMBERS
self.exit_reasons = exit_reasons
+
class ArchPPC(Arch):
def __init__(self):
self.sc_perf_evt_open = 319
@@ -274,12 +277,14 @@ class ArchPPC(Arch):
self.ioctl_numbers['SET_FILTER'] = 0x80002406 | char_ptr_size << 16
self.exit_reasons = {}
+
class ArchA64(Arch):
def __init__(self):
self.sc_perf_evt_open = 241
self.ioctl_numbers = IOCTL_NUMBERS
self.exit_reasons = AARCH64_EXIT_REASONS
+
class ArchS390(Arch):
def __init__(self):
self.sc_perf_evt_open = 331
@@ -340,6 +345,7 @@ def get_filters():
syscall = ctypes.CDLL('libc.so.6', use_errno=True).syscall
+
class perf_event_attr(ctypes.Structure):
"""Struct that holds the necessary data to set up a trace event.
@@ -368,6 +374,7 @@ class perf_event_attr(ctypes.Structure):
self.size = ctypes.sizeof(self)
self.read_format = PERF_FORMAT_GROUP
+
def perf_event_open(attr, pid, cpu, group_fd, flags):
"""Wrapper for the sys_perf_evt_open() syscall.
@@ -393,6 +400,7 @@ PERF_FORMAT_GROUP = 1 << 3
PATH_DEBUGFS_TRACING = '/sys/kernel/debug/tracing'
PATH_DEBUGFS_KVM = '/sys/kernel/debug/kvm'
+
class Group(object):
"""Represents a perf event group."""
@@ -425,6 +433,7 @@ class Group(object):
struct.unpack(read_format,
os.read(self.events[0].fd, length))))
+
class Event(object):
"""Represents a performance event and manages its life cycle."""
def __init__(self, name, group, trace_cpu, trace_pid, trace_point,
@@ -508,6 +517,7 @@ class Event(object):
"""Resets the count of the trace event in the kernel."""
fcntl.ioctl(self.fd, ARCH.ioctl_numbers['RESET'], 0)
+
class TracepointProvider(object):
"""Data provider for the stats class.
@@ -649,6 +659,7 @@ class TracepointProvider(object):
ret[name] += val
return ret
+
class DebugfsProvider(object):
"""Provides data from the files that KVM creates in the kvm debugfs
folder."""
@@ -718,6 +729,7 @@ class DebugfsProvider(object):
except IOError:
return 0
+
class Stats(object):
"""Manages the data providers and the data they provide.
@@ -789,6 +801,7 @@ class Stats(object):
LABEL_WIDTH = 40
NUMBER_WIDTH = 10
+
class Tui(object):
"""Instruments curses to draw a nice text ui."""
def __init__(self, stats):
@@ -858,6 +871,7 @@ class Tui(object):
len('Current'), 'Current')
row = 3
stats = self.stats.get()
+
def sortkey(x):
if stats[x][1]:
return (-stats[x][1], -stats[x][0])
@@ -965,6 +979,7 @@ class Tui(object):
except curses.error:
continue
+
def batch(stats):
"""Prints statistics in a key, value format."""
try:
@@ -977,13 +992,16 @@ def batch(stats):
except KeyboardInterrupt:
pass
+
def log(stats):
"""Prints statistics as reiterating key block, multiple value blocks."""
keys = sorted(stats.get().iterkeys())
+
def banner():
for k in keys:
print '%s' % k,
print
+
def statline():
s = stats.get()
for k in keys:
@@ -1001,6 +1019,7 @@ def log(stats):
except KeyboardInterrupt:
break
+
def get_options():
"""Returns processed program arguments."""
description_text = """
@@ -1071,6 +1090,7 @@ Requirements:
(options, _) = optparser.parse_args(sys.argv)
return options
+
def get_providers(options):
"""Returns a list of data providers depending on the passed options."""
providers = []
@@ -1084,6 +1104,7 @@ def get_providers(options):
return providers
+
def check_access(options):
"""Exits if the current user can't access all needed directories."""
if not os.path.exists('/sys/kernel/debug'):
@@ -1113,6 +1134,7 @@ def check_access(options):
return options
+
def main():
options = get_options()
options = check_access(options)
--
2.8.4
next prev parent reply other threads:[~2017-02-20 15:42 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-02-20 15:41 [PATCH 00/17] tools/kvm_stat: Misc Patches Stefan Raspl
2017-02-20 15:41 ` [PATCH 01/17] tools/kvm_stat: hide cursor Stefan Raspl
2017-02-20 15:41 ` [PATCH 02/17] tools/kvm_stat: catch curses exceptions only Stefan Raspl
2017-02-20 15:41 ` [PATCH 03/17] tools/kvm_stat: handle SIGINT in log and batch modes Stefan Raspl
2017-02-20 15:41 ` [PATCH 04/17] tools/kvm_stat: fix misc glitches Stefan Raspl
2017-03-09 16:51 ` Paolo Bonzini
2017-03-10 6:04 ` Stefan Raspl
2017-03-10 8:14 ` Paolo Bonzini
2017-03-10 8:33 ` Stefan Raspl
2017-03-10 8:38 ` Paolo Bonzini
2017-03-10 9:42 ` Stefan Raspl
2017-03-10 10:05 ` Paolo Bonzini
2017-02-20 15:41 ` [PATCH 05/17] tools/kvm_stat: fix trace setup glitch on field updates in TracepointProvider Stefan Raspl
2017-02-20 15:42 ` Stefan Raspl [this message]
2017-02-20 15:42 ` [PATCH 07/17] tools/kvm_stat: reduce perceived idle time on filter updates Stefan Raspl
2017-03-09 16:54 ` Paolo Bonzini
2017-02-20 15:42 ` [PATCH 08/17] tools/kvm_stat: document list of interactive commands Stefan Raspl
2017-02-20 15:42 ` [PATCH 09/17] tools/kvm_stat: display guest name when using pid filter Stefan Raspl
2017-03-09 16:54 ` Paolo Bonzini
2017-03-10 6:08 ` Stefan Raspl
2017-02-20 15:42 ` [PATCH 10/17] tools/kvm_stat: remove pid filter on empty input Stefan Raspl
2017-02-20 15:42 ` [PATCH 11/17] tools/kvm_stat: print error messages on faulty pid filter input Stefan Raspl
2017-02-20 15:42 ` [PATCH 12/17] tools/kvm_stat: display regex when set to non-default Stefan Raspl
2017-02-20 15:42 ` [PATCH 13/17] tools/kvm_stat: remove regex filter on empty input Stefan Raspl
2017-02-20 15:42 ` [PATCH 14/17] tools/kvm_stat: add option '--guest' Stefan Raspl
2017-03-10 11:52 ` Janosch Frank
2017-02-20 15:42 ` [PATCH 15/17] tools/kvm_stat: add interactive command 'c' Stefan Raspl
2017-02-20 15:42 ` [PATCH 16/17] tools/kvm_stat: add interactive command 'r' Stefan Raspl
2017-03-10 11:37 ` Janosch Frank
2017-03-10 12:32 ` Stefan Raspl
2017-02-20 15:42 ` [PATCH 17/17] tools/kvm_stat: add '%Total' column Stefan Raspl
2017-03-06 8:08 ` [PATCH 00/17] tools/kvm_stat: Misc Patches Stefan Raspl
2017-03-06 16:05 ` Paolo Bonzini
2017-03-09 17:00 ` Paolo Bonzini
2017-03-10 6:13 ` Stefan Raspl
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170220154211.11882-7-raspl@linux.vnet.ibm.com \
--to=raspl@linux.vnet.ibm.com \
--cc=frankja@linux.vnet.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=pbonzini@redhat.com \
--cc=rkrcmar@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.