All initializations of the ctypes struct that don't need additional
information were moved to its init method. The unneeded
initializations for sample_type and sample_period were removed as they
do not affect the counters that are read.
This improves readability of the setup_event_attribute by halfing its
LOC.
---
scripts/kvm/kvm_stat | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/scripts/kvm/kvm_stat b/scripts/kvm/kvm_stat
index 109c22c..ab10b1a 100755
--- a/scripts/kvm/kvm_stat
+++ b/scripts/kvm/kvm_stat
@@ -312,6 +312,13 @@ class perf_event_attr(ctypes.Structure):
('bp_addr', ctypes.c_uint64),
('bp_len', ctypes.c_uint64),
]
+
+ def __init__(self):
+ super(self.__class__, self).__init__()
+ self.type = PERF_TYPE_TRACEPOINT
+ self.size = ctypes.sizeof(self)
+ self.read_format = PERF_FORMAT_GROUP
+
def perf_event_open(attr, pid, cpu, group_fd, flags):
return syscall(ARCH.sc_perf_evt_open, ctypes.pointer(attr),
ctypes.c_int(pid), ctypes.c_int(cpu),
@@ -348,11 +355,7 @@ class Event(object):
tracepoint, 'id')
event_attr = perf_event_attr()
- event_attr.type = PERF_TYPE_TRACEPOINT
- event_attr.size = ctypes.sizeof(event_attr)
event_attr.config = int(open(id_path).read())
- event_attr.sample_period = 1
- event_attr.read_format = PERF_FORMAT_GROUP
return event_attr
def setup_event(self, event_data):
--
2.3.0