diff options
author | Stefan Raspl <stefan.raspl@de.ibm.com> | 2018-02-22 06:16:26 -0500 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2018-02-23 19:43:43 -0500 |
commit | c0e8c21eae616ed8703c1b4b01046a1578ee875c (patch) | |
tree | 6cfb052a90d77324383bf8d2f89459f642e8a68d | |
parent | 1fd6a708c8438403dee17eb411cf81ffba13cf43 (diff) |
tools/kvm_stat: mark private methods as such
Helps quite a bit reading the code when it's obvious when a method is
intended for internal use only.
Signed-off-by: Stefan Raspl <raspl@linux.vnet.ibm.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rwxr-xr-x | tools/kvm/kvm_stat/kvm_stat | 132 |
1 files changed, 66 insertions, 66 deletions
diff --git a/tools/kvm/kvm_stat/kvm_stat b/tools/kvm/kvm_stat/kvm_stat index c5c8e9295b91..c09b7428f563 100755 --- a/tools/kvm/kvm_stat/kvm_stat +++ b/tools/kvm/kvm_stat/kvm_stat | |||
@@ -373,8 +373,8 @@ class Event(object): | |||
373 | self.syscall = self.libc.syscall | 373 | self.syscall = self.libc.syscall |
374 | self.name = name | 374 | self.name = name |
375 | self.fd = None | 375 | self.fd = None |
376 | self.setup_event(group, trace_cpu, trace_pid, trace_point, | 376 | self._setup_event(group, trace_cpu, trace_pid, trace_point, |
377 | trace_filter, trace_set) | 377 | trace_filter, trace_set) |
378 | 378 | ||
379 | def __del__(self): | 379 | def __del__(self): |
380 | """Closes the event's file descriptor. | 380 | """Closes the event's file descriptor. |
@@ -387,7 +387,7 @@ class Event(object): | |||
387 | if self.fd: | 387 | if self.fd: |
388 | os.close(self.fd) | 388 | os.close(self.fd) |
389 | 389 | ||
390 | def perf_event_open(self, attr, pid, cpu, group_fd, flags): | 390 | def _perf_event_open(self, attr, pid, cpu, group_fd, flags): |
391 | """Wrapper for the sys_perf_evt_open() syscall. | 391 | """Wrapper for the sys_perf_evt_open() syscall. |
392 | 392 | ||
393 | Used to set up performance events, returns a file descriptor or -1 | 393 | Used to set up performance events, returns a file descriptor or -1 |
@@ -406,7 +406,7 @@ class Event(object): | |||
406 | ctypes.c_int(pid), ctypes.c_int(cpu), | 406 | ctypes.c_int(pid), ctypes.c_int(cpu), |
407 | ctypes.c_int(group_fd), ctypes.c_long(flags)) | 407 | ctypes.c_int(group_fd), ctypes.c_long(flags)) |
408 | 408 | ||
409 | def setup_event_attribute(self, trace_set, trace_point): | 409 | def _setup_event_attribute(self, trace_set, trace_point): |
410 | """Returns an initialized ctype perf_event_attr struct.""" | 410 | """Returns an initialized ctype perf_event_attr struct.""" |
411 | 411 | ||
412 | id_path = os.path.join(PATH_DEBUGFS_TRACING, 'events', trace_set, | 412 | id_path = os.path.join(PATH_DEBUGFS_TRACING, 'events', trace_set, |
@@ -416,8 +416,8 @@ class Event(object): | |||
416 | event_attr.config = int(open(id_path).read()) | 416 | event_attr.config = int(open(id_path).read()) |
417 | return event_attr | 417 | return event_attr |
418 | 418 | ||
419 | def setup_event(self, group, trace_cpu, trace_pid, trace_point, | 419 | def _setup_event(self, group, trace_cpu, trace_pid, trace_point, |
420 | trace_filter, trace_set): | 420 | trace_filter, trace_set): |
421 | """Sets up the perf event in Linux. | 421 | """Sets up the perf event in Linux. |
422 | 422 | ||
423 | Issues the syscall to register the event in the kernel and | 423 | Issues the syscall to register the event in the kernel and |
@@ -425,7 +425,7 @@ class Event(object): | |||
425 | 425 | ||
426 | """ | 426 | """ |
427 | 427 | ||
428 | event_attr = self.setup_event_attribute(trace_set, trace_point) | 428 | event_attr = self._setup_event_attribute(trace_set, trace_point) |
429 | 429 | ||
430 | # First event will be group leader. | 430 | # First event will be group leader. |
431 | group_leader = -1 | 431 | group_leader = -1 |
@@ -434,8 +434,8 @@ class Event(object): | |||
434 | if group.events: | 434 | if group.events: |
435 | group_leader = group.events[0].fd | 435 | group_leader = group.events[0].fd |
436 | 436 | ||
437 | fd = self.perf_event_open(event_attr, trace_pid, | 437 | fd = self._perf_event_open(event_attr, trace_pid, |
438 | trace_cpu, group_leader, 0) | 438 | trace_cpu, group_leader, 0) |
439 | if fd == -1: | 439 | if fd == -1: |
440 | err = ctypes.get_errno() | 440 | err = ctypes.get_errno() |
441 | raise OSError(err, os.strerror(err), | 441 | raise OSError(err, os.strerror(err), |
@@ -497,12 +497,12 @@ class TracepointProvider(Provider): | |||
497 | """ | 497 | """ |
498 | def __init__(self, pid, fields_filter): | 498 | def __init__(self, pid, fields_filter): |
499 | self.group_leaders = [] | 499 | self.group_leaders = [] |
500 | self.filters = self.get_filters() | 500 | self.filters = self._get_filters() |
501 | self.update_fields(fields_filter) | 501 | self.update_fields(fields_filter) |
502 | self.pid = pid | 502 | self.pid = pid |
503 | 503 | ||
504 | @staticmethod | 504 | @staticmethod |
505 | def get_filters(): | 505 | def _get_filters(): |
506 | """Returns a dict of trace events, their filter ids and | 506 | """Returns a dict of trace events, their filter ids and |
507 | the values that can be filtered. | 507 | the values that can be filtered. |
508 | 508 | ||
@@ -518,7 +518,7 @@ class TracepointProvider(Provider): | |||
518 | filters['kvm_exit'] = ('exit_reason', ARCH.exit_reasons) | 518 | filters['kvm_exit'] = ('exit_reason', ARCH.exit_reasons) |
519 | return filters | 519 | return filters |
520 | 520 | ||
521 | def get_available_fields(self): | 521 | def _get_available_fields(self): |
522 | """Returns a list of available event's of format 'event name(filter | 522 | """Returns a list of available event's of format 'event name(filter |
523 | name)'. | 523 | name)'. |
524 | 524 | ||
@@ -546,11 +546,11 @@ class TracepointProvider(Provider): | |||
546 | 546 | ||
547 | def update_fields(self, fields_filter): | 547 | def update_fields(self, fields_filter): |
548 | """Refresh fields, applying fields_filter""" | 548 | """Refresh fields, applying fields_filter""" |
549 | self.fields = [field for field in self.get_available_fields() | 549 | self.fields = [field for field in self._get_available_fields() |
550 | if self.is_field_wanted(fields_filter, field)] | 550 | if self.is_field_wanted(fields_filter, field)] |
551 | 551 | ||
552 | @staticmethod | 552 | @staticmethod |
553 | def get_online_cpus(): | 553 | def _get_online_cpus(): |
554 | """Returns a list of cpu id integers.""" | 554 | """Returns a list of cpu id integers.""" |
555 | def parse_int_list(list_string): | 555 | def parse_int_list(list_string): |
556 | """Returns an int list from a string of comma separated integers and | 556 | """Returns an int list from a string of comma separated integers and |
@@ -572,17 +572,17 @@ class TracepointProvider(Provider): | |||
572 | cpu_string = cpu_list.readline() | 572 | cpu_string = cpu_list.readline() |
573 | return parse_int_list(cpu_string) | 573 | return parse_int_list(cpu_string) |
574 | 574 | ||
575 | def setup_traces(self): | 575 | def _setup_traces(self): |
576 | """Creates all event and group objects needed to be able to retrieve | 576 | """Creates all event and group objects needed to be able to retrieve |
577 | data.""" | 577 | data.""" |
578 | fields = self.get_available_fields() | 578 | fields = self._get_available_fields() |
579 | if self._pid > 0: | 579 | if self._pid > 0: |
580 | # Fetch list of all threads of the monitored pid, as qemu | 580 | # Fetch list of all threads of the monitored pid, as qemu |
581 | # starts a thread for each vcpu. | 581 | # starts a thread for each vcpu. |
582 | path = os.path.join('/proc', str(self._pid), 'task') | 582 | path = os.path.join('/proc', str(self._pid), 'task') |
583 | groupids = self.walkdir(path)[1] | 583 | groupids = self.walkdir(path)[1] |
584 | else: | 584 | else: |
585 | groupids = self.get_online_cpus() | 585 | groupids = self._get_online_cpus() |
586 | 586 | ||
587 | # The constant is needed as a buffer for python libs, std | 587 | # The constant is needed as a buffer for python libs, std |
588 | # streams and other files that the script opens. | 588 | # streams and other files that the script opens. |
@@ -660,7 +660,7 @@ class TracepointProvider(Provider): | |||
660 | # The garbage collector will get rid of all Event/Group | 660 | # The garbage collector will get rid of all Event/Group |
661 | # objects and open files after removing the references. | 661 | # objects and open files after removing the references. |
662 | self.group_leaders = [] | 662 | self.group_leaders = [] |
663 | self.setup_traces() | 663 | self._setup_traces() |
664 | self.fields = self._fields | 664 | self.fields = self._fields |
665 | 665 | ||
666 | def read(self, by_guest=0): | 666 | def read(self, by_guest=0): |
@@ -689,9 +689,9 @@ class DebugfsProvider(Provider): | |||
689 | self.paths = [] | 689 | self.paths = [] |
690 | self.pid = pid | 690 | self.pid = pid |
691 | if include_past: | 691 | if include_past: |
692 | self.restore() | 692 | self._restore() |
693 | 693 | ||
694 | def get_available_fields(self): | 694 | def _get_available_fields(self): |
695 | """"Returns a list of available fields. | 695 | """"Returns a list of available fields. |
696 | 696 | ||
697 | The fields are all available KVM debugfs files | 697 | The fields are all available KVM debugfs files |
@@ -701,7 +701,7 @@ class DebugfsProvider(Provider): | |||
701 | 701 | ||
702 | def update_fields(self, fields_filter): | 702 | def update_fields(self, fields_filter): |
703 | """Refresh fields, applying fields_filter""" | 703 | """Refresh fields, applying fields_filter""" |
704 | self._fields = [field for field in self.get_available_fields() | 704 | self._fields = [field for field in self._get_available_fields() |
705 | if self.is_field_wanted(fields_filter, field)] | 705 | if self.is_field_wanted(fields_filter, field)] |
706 | 706 | ||
707 | @property | 707 | @property |
@@ -755,7 +755,7 @@ class DebugfsProvider(Provider): | |||
755 | paths.append(dir) | 755 | paths.append(dir) |
756 | for path in paths: | 756 | for path in paths: |
757 | for field in self._fields: | 757 | for field in self._fields: |
758 | value = self.read_field(field, path) | 758 | value = self._read_field(field, path) |
759 | key = path + field | 759 | key = path + field |
760 | if reset == 1: | 760 | if reset == 1: |
761 | self._baseline[key] = value | 761 | self._baseline[key] = value |
@@ -776,7 +776,7 @@ class DebugfsProvider(Provider): | |||
776 | 776 | ||
777 | return results | 777 | return results |
778 | 778 | ||
779 | def read_field(self, field, path): | 779 | def _read_field(self, field, path): |
780 | """Returns the value of a single field from a specific VM.""" | 780 | """Returns the value of a single field from a specific VM.""" |
781 | try: | 781 | try: |
782 | return int(open(os.path.join(PATH_DEBUGFS_KVM, | 782 | return int(open(os.path.join(PATH_DEBUGFS_KVM, |
@@ -791,7 +791,7 @@ class DebugfsProvider(Provider): | |||
791 | self._baseline = {} | 791 | self._baseline = {} |
792 | self.read(1) | 792 | self.read(1) |
793 | 793 | ||
794 | def restore(self): | 794 | def _restore(self): |
795 | """Reset field counters""" | 795 | """Reset field counters""" |
796 | self._baseline = {} | 796 | self._baseline = {} |
797 | self.read(2) | 797 | self.read(2) |
@@ -808,13 +808,12 @@ class Stats(object): | |||
808 | 808 | ||
809 | """ | 809 | """ |
810 | def __init__(self, options): | 810 | def __init__(self, options): |
811 | self.providers = self.get_providers(options) | 811 | self.providers = self._get_providers(options) |
812 | self._pid_filter = options.pid | 812 | self._pid_filter = options.pid |
813 | self._fields_filter = options.fields | 813 | self._fields_filter = options.fields |
814 | self.values = {} | 814 | self.values = {} |
815 | 815 | ||
816 | @staticmethod | 816 | def _get_providers(self, options): |
817 | def get_providers(options): | ||
818 | """Returns a list of data providers depending on the passed options.""" | 817 | """Returns a list of data providers depending on the passed options.""" |
819 | providers = [] | 818 | providers = [] |
820 | 819 | ||
@@ -826,7 +825,7 @@ class Stats(object): | |||
826 | 825 | ||
827 | return providers | 826 | return providers |
828 | 827 | ||
829 | def update_provider_filters(self): | 828 | def _update_provider_filters(self): |
830 | """Propagates fields filters to providers.""" | 829 | """Propagates fields filters to providers.""" |
831 | # As we reset the counters when updating the fields we can | 830 | # As we reset the counters when updating the fields we can |
832 | # also clear the cache of old values. | 831 | # also clear the cache of old values. |
@@ -847,7 +846,7 @@ class Stats(object): | |||
847 | def fields_filter(self, fields_filter): | 846 | def fields_filter(self, fields_filter): |
848 | if fields_filter != self._fields_filter: | 847 | if fields_filter != self._fields_filter: |
849 | self._fields_filter = fields_filter | 848 | self._fields_filter = fields_filter |
850 | self.update_provider_filters() | 849 | self._update_provider_filters() |
851 | 850 | ||
852 | @property | 851 | @property |
853 | def pid_filter(self): | 852 | def pid_filter(self): |
@@ -969,7 +968,7 @@ class Tui(object): | |||
969 | 968 | ||
970 | return res | 969 | return res |
971 | 970 | ||
972 | def print_all_gnames(self, row): | 971 | def _print_all_gnames(self, row): |
973 | """Print a list of all running guests along with their pids.""" | 972 | """Print a list of all running guests along with their pids.""" |
974 | self.screen.addstr(row, 2, '%8s %-60s' % | 973 | self.screen.addstr(row, 2, '%8s %-60s' % |
975 | ('Pid', 'Guest Name (fuzzy list, might be ' | 974 | ('Pid', 'Guest Name (fuzzy list, might be ' |
@@ -1032,7 +1031,7 @@ class Tui(object): | |||
1032 | 1031 | ||
1033 | return name | 1032 | return name |
1034 | 1033 | ||
1035 | def update_drilldown(self): | 1034 | def _update_drilldown(self): |
1036 | """Sets or removes a filter that only allows fields without braces.""" | 1035 | """Sets or removes a filter that only allows fields without braces.""" |
1037 | if not self.stats.fields_filter: | 1036 | if not self.stats.fields_filter: |
1038 | self.stats.fields_filter = DEFAULT_REGEX | 1037 | self.stats.fields_filter = DEFAULT_REGEX |
@@ -1040,11 +1039,11 @@ class Tui(object): | |||
1040 | elif self.stats.fields_filter == DEFAULT_REGEX: | 1039 | elif self.stats.fields_filter == DEFAULT_REGEX: |
1041 | self.stats.fields_filter = None | 1040 | self.stats.fields_filter = None |
1042 | 1041 | ||
1043 | def update_pid(self, pid): | 1042 | def _update_pid(self, pid): |
1044 | """Propagates pid selection to stats object.""" | 1043 | """Propagates pid selection to stats object.""" |
1045 | self.stats.pid_filter = pid | 1044 | self.stats.pid_filter = pid |
1046 | 1045 | ||
1047 | def refresh_header(self, pid=None): | 1046 | def _refresh_header(self, pid=None): |
1048 | """Refreshes the header.""" | 1047 | """Refreshes the header.""" |
1049 | if pid is None: | 1048 | if pid is None: |
1050 | pid = self.stats.pid_filter | 1049 | pid = self.stats.pid_filter |
@@ -1075,7 +1074,7 @@ class Tui(object): | |||
1075 | self.screen.addstr(4, 1, 'Collecting data...') | 1074 | self.screen.addstr(4, 1, 'Collecting data...') |
1076 | self.screen.refresh() | 1075 | self.screen.refresh() |
1077 | 1076 | ||
1078 | def refresh_body(self, sleeptime): | 1077 | def _refresh_body(self, sleeptime): |
1079 | row = 3 | 1078 | row = 3 |
1080 | self.screen.move(row, 0) | 1079 | self.screen.move(row, 0) |
1081 | self.screen.clrtobot() | 1080 | self.screen.clrtobot() |
@@ -1124,7 +1123,7 @@ class Tui(object): | |||
1124 | curses.A_BOLD) | 1123 | curses.A_BOLD) |
1125 | self.screen.refresh() | 1124 | self.screen.refresh() |
1126 | 1125 | ||
1127 | def show_msg(self, text): | 1126 | def _show_msg(self, text): |
1128 | """Display message centered text and exit on key press""" | 1127 | """Display message centered text and exit on key press""" |
1129 | hint = 'Press any key to continue' | 1128 | hint = 'Press any key to continue' |
1130 | curses.cbreak() | 1129 | curses.cbreak() |
@@ -1139,7 +1138,7 @@ class Tui(object): | |||
1139 | curses.A_STANDOUT) | 1138 | curses.A_STANDOUT) |
1140 | self.screen.getkey() | 1139 | self.screen.getkey() |
1141 | 1140 | ||
1142 | def show_help_interactive(self): | 1141 | def _show_help_interactive(self): |
1143 | """Display help with list of interactive commands""" | 1142 | """Display help with list of interactive commands""" |
1144 | msg = (' b toggle events by guests (debugfs only, honors' | 1143 | msg = (' b toggle events by guests (debugfs only, honors' |
1145 | ' filters)', | 1144 | ' filters)', |
@@ -1165,9 +1164,9 @@ class Tui(object): | |||
1165 | self.screen.addstr(row, 0, line) | 1164 | self.screen.addstr(row, 0, line) |
1166 | row += 1 | 1165 | row += 1 |
1167 | self.screen.getkey() | 1166 | self.screen.getkey() |
1168 | self.refresh_header() | 1167 | self._refresh_header() |
1169 | 1168 | ||
1170 | def show_filter_selection(self): | 1169 | def _show_filter_selection(self): |
1171 | """Draws filter selection mask. | 1170 | """Draws filter selection mask. |
1172 | 1171 | ||
1173 | Asks for a valid regex and sets the fields filter accordingly. | 1172 | Asks for a valid regex and sets the fields filter accordingly. |
@@ -1189,18 +1188,18 @@ class Tui(object): | |||
1189 | curses.noecho() | 1188 | curses.noecho() |
1190 | if len(regex) == 0: | 1189 | if len(regex) == 0: |
1191 | self.stats.fields_filter = DEFAULT_REGEX | 1190 | self.stats.fields_filter = DEFAULT_REGEX |
1192 | self.refresh_header() | 1191 | self._refresh_header() |
1193 | return | 1192 | return |
1194 | try: | 1193 | try: |
1195 | re.compile(regex) | 1194 | re.compile(regex) |
1196 | self.stats.fields_filter = regex | 1195 | self.stats.fields_filter = regex |
1197 | self.refresh_header() | 1196 | self._refresh_header() |
1198 | return | 1197 | return |
1199 | except re.error: | 1198 | except re.error: |
1200 | msg = '"' + regex + '": Not a valid regular expression' | 1199 | msg = '"' + regex + '": Not a valid regular expression' |
1201 | continue | 1200 | continue |
1202 | 1201 | ||
1203 | def show_vm_selection_by_pid(self): | 1202 | def _show_vm_selection_by_pid(self): |
1204 | """Draws PID selection mask. | 1203 | """Draws PID selection mask. |
1205 | 1204 | ||
1206 | Asks for a pid until a valid pid or 0 has been entered. | 1205 | Asks for a pid until a valid pid or 0 has been entered. |
@@ -1216,7 +1215,7 @@ class Tui(object): | |||
1216 | 'This might limit the shown data to the trace ' | 1215 | 'This might limit the shown data to the trace ' |
1217 | 'statistics.') | 1216 | 'statistics.') |
1218 | self.screen.addstr(5, 0, msg) | 1217 | self.screen.addstr(5, 0, msg) |
1219 | self.print_all_gnames(7) | 1218 | self._print_all_gnames(7) |
1220 | 1219 | ||
1221 | curses.echo() | 1220 | curses.echo() |
1222 | self.screen.addstr(3, 0, "Pid [0 or pid]: ") | 1221 | self.screen.addstr(3, 0, "Pid [0 or pid]: ") |
@@ -1232,13 +1231,13 @@ class Tui(object): | |||
1232 | continue | 1231 | continue |
1233 | else: | 1232 | else: |
1234 | pid = 0 | 1233 | pid = 0 |
1235 | self.refresh_header(pid) | 1234 | self._refresh_header(pid) |
1236 | self.update_pid(pid) | 1235 | self._update_pid(pid) |
1237 | break | 1236 | break |
1238 | except ValueError: | 1237 | except ValueError: |
1239 | msg = '"' + str(pid) + '": Not a valid pid' | 1238 | msg = '"' + str(pid) + '": Not a valid pid' |
1240 | 1239 | ||
1241 | def show_set_update_interval(self): | 1240 | def _show_set_update_interval(self): |
1242 | """Draws update interval selection mask.""" | 1241 | """Draws update interval selection mask.""" |
1243 | msg = '' | 1242 | msg = '' |
1244 | while True: | 1243 | while True: |
@@ -1268,9 +1267,9 @@ class Tui(object): | |||
1268 | 1267 | ||
1269 | except ValueError: | 1268 | except ValueError: |
1270 | msg = '"' + str(val) + '": Invalid value' | 1269 | msg = '"' + str(val) + '": Invalid value' |
1271 | self.refresh_header() | 1270 | self._refresh_header() |
1272 | 1271 | ||
1273 | def show_vm_selection_by_guest_name(self): | 1272 | def _show_vm_selection_by_guest_name(self): |
1274 | """Draws guest selection mask. | 1273 | """Draws guest selection mask. |
1275 | 1274 | ||
1276 | Asks for a guest name until a valid guest name or '' is entered. | 1275 | Asks for a guest name until a valid guest name or '' is entered. |
@@ -1286,15 +1285,15 @@ class Tui(object): | |||
1286 | 'This might limit the shown data to the trace ' | 1285 | 'This might limit the shown data to the trace ' |
1287 | 'statistics.') | 1286 | 'statistics.') |
1288 | self.screen.addstr(5, 0, msg) | 1287 | self.screen.addstr(5, 0, msg) |
1289 | self.print_all_gnames(7) | 1288 | self._print_all_gnames(7) |
1290 | curses.echo() | 1289 | curses.echo() |
1291 | self.screen.addstr(3, 0, "Guest [ENTER or guest]: ") | 1290 | self.screen.addstr(3, 0, "Guest [ENTER or guest]: ") |
1292 | gname = self.screen.getstr().decode(ENCODING) | 1291 | gname = self.screen.getstr().decode(ENCODING) |
1293 | curses.noecho() | 1292 | curses.noecho() |
1294 | 1293 | ||
1295 | if not gname: | 1294 | if not gname: |
1296 | self.refresh_header(0) | 1295 | self._refresh_header(0) |
1297 | self.update_pid(0) | 1296 | self._update_pid(0) |
1298 | break | 1297 | break |
1299 | else: | 1298 | else: |
1300 | pids = [] | 1299 | pids = [] |
@@ -1311,17 +1310,17 @@ class Tui(object): | |||
1311 | msg = '"' + gname + '": Multiple matches found, use pid ' \ | 1310 | msg = '"' + gname + '": Multiple matches found, use pid ' \ |
1312 | 'filter instead' | 1311 | 'filter instead' |
1313 | continue | 1312 | continue |
1314 | self.refresh_header(pids[0]) | 1313 | self._refresh_header(pids[0]) |
1315 | self.update_pid(pids[0]) | 1314 | self._update_pid(pids[0]) |
1316 | break | 1315 | break |
1317 | 1316 | ||
1318 | def show_stats(self): | 1317 | def show_stats(self): |
1319 | """Refreshes the screen and processes user input.""" | 1318 | """Refreshes the screen and processes user input.""" |
1320 | sleeptime = self._delay_initial | 1319 | sleeptime = self._delay_initial |
1321 | self.refresh_header() | 1320 | self._refresh_header() |
1322 | start = 0.0 # result based on init value never appears on screen | 1321 | start = 0.0 # result based on init value never appears on screen |
1323 | while True: | 1322 | while True: |
1324 | self.refresh_body(time.time() - start) | 1323 | self._refresh_body(time.time() - start) |
1325 | curses.halfdelay(int(sleeptime * 10)) | 1324 | curses.halfdelay(int(sleeptime * 10)) |
1326 | start = time.time() | 1325 | start = time.time() |
1327 | sleeptime = self._delay_regular | 1326 | sleeptime = self._delay_regular |
@@ -1330,32 +1329,33 @@ class Tui(object): | |||
1330 | if char == 'b': | 1329 | if char == 'b': |
1331 | self._display_guests = not self._display_guests | 1330 | self._display_guests = not self._display_guests |
1332 | if self.stats.toggle_display_guests(self._display_guests): | 1331 | if self.stats.toggle_display_guests(self._display_guests): |
1333 | self.show_msg(['Command not available with tracepoints' | 1332 | self._show_msg(['Command not available with ' |
1334 | ' enabled', 'Restart with debugfs only ' | 1333 | 'tracepoints enabled', 'Restart with ' |
1335 | '(see option \'-d\') and try again!']) | 1334 | 'debugfs only (see option \'-d\') and ' |
1335 | 'try again!']) | ||
1336 | self._display_guests = not self._display_guests | 1336 | self._display_guests = not self._display_guests |
1337 | self.refresh_header() | 1337 | self._refresh_header() |
1338 | if char == 'c': | 1338 | if char == 'c': |
1339 | self.stats.fields_filter = DEFAULT_REGEX | 1339 | self.stats.fields_filter = DEFAULT_REGEX |
1340 | self.refresh_header(0) | 1340 | self._refresh_header(0) |
1341 | self.update_pid(0) | 1341 | self._update_pid(0) |
1342 | if char == 'f': | 1342 | if char == 'f': |
1343 | curses.curs_set(1) | 1343 | curses.curs_set(1) |
1344 | self.show_filter_selection() | 1344 | self._show_filter_selection() |
1345 | curses.curs_set(0) | 1345 | curses.curs_set(0) |
1346 | sleeptime = self._delay_initial | 1346 | sleeptime = self._delay_initial |
1347 | if char == 'g': | 1347 | if char == 'g': |
1348 | curses.curs_set(1) | 1348 | curses.curs_set(1) |
1349 | self.show_vm_selection_by_guest_name() | 1349 | self._show_vm_selection_by_guest_name() |
1350 | curses.curs_set(0) | 1350 | curses.curs_set(0) |
1351 | sleeptime = self._delay_initial | 1351 | sleeptime = self._delay_initial |
1352 | if char == 'h': | 1352 | if char == 'h': |
1353 | self.show_help_interactive() | 1353 | self._show_help_interactive() |
1354 | if char == 'o': | 1354 | if char == 'o': |
1355 | self._sorting = not self._sorting | 1355 | self._sorting = not self._sorting |
1356 | if char == 'p': | 1356 | if char == 'p': |
1357 | curses.curs_set(1) | 1357 | curses.curs_set(1) |
1358 | self.show_vm_selection_by_pid() | 1358 | self._show_vm_selection_by_pid() |
1359 | curses.curs_set(0) | 1359 | curses.curs_set(0) |
1360 | sleeptime = self._delay_initial | 1360 | sleeptime = self._delay_initial |
1361 | if char == 'q': | 1361 | if char == 'q': |
@@ -1364,11 +1364,11 @@ class Tui(object): | |||
1364 | self.stats.reset() | 1364 | self.stats.reset() |
1365 | if char == 's': | 1365 | if char == 's': |
1366 | curses.curs_set(1) | 1366 | curses.curs_set(1) |
1367 | self.show_set_update_interval() | 1367 | self._show_set_update_interval() |
1368 | curses.curs_set(0) | 1368 | curses.curs_set(0) |
1369 | sleeptime = self._delay_initial | 1369 | sleeptime = self._delay_initial |
1370 | if char == 'x': | 1370 | if char == 'x': |
1371 | self.update_drilldown() | 1371 | self._update_drilldown() |
1372 | # prevents display of current values on next refresh | 1372 | # prevents display of current values on next refresh |
1373 | self.stats.get(self._display_guests) | 1373 | self.stats.get(self._display_guests) |
1374 | except KeyboardInterrupt: | 1374 | except KeyboardInterrupt: |