1
0
mirror of https://github.com/ARM-software/devlib.git synced 2024-10-06 02:40:50 +01:00

ftrace: Add tracer name validation

Check that the asked tracer is supported by the kernel.

Signed-off-by: Douglas RAILLARD <douglas.raillard@arm.com>
This commit is contained in:
Douglas RAILLARD 2019-11-04 12:17:03 +00:00 committed by Marc Bonnici
parent 6b0b12d833
commit 656da00d2a

View File

@ -25,7 +25,7 @@ from pipes import quote
from devlib.trace import TraceCollector
from devlib.host import PACKAGE_BIN_DIRECTORY
from devlib.exception import TargetStableError, HostError
from devlib.utils.misc import check_output, which
from devlib.utils.misc import check_output, which, memoized
TRACE_MARKER_START = 'TRACE_MARKER_START'
@ -105,6 +105,7 @@ class FtraceCollector(TraceCollector):
self.ftrace_filter_file = self.target.path.join(self.tracing_path, 'set_ftrace_filter')
self.trace_clock_file = self.target.path.join(self.tracing_path, 'trace_clock')
self.save_cmdlines_size_file = self.target.path.join(self.tracing_path, 'saved_cmdlines_size')
self.available_tracers_file = self.target.path.join(self.tracing_path, 'available_tracers')
self.host_binary = which('trace-cmd')
self.kernelshark = which('kernelshark')
@ -143,6 +144,10 @@ class FtraceCollector(TraceCollector):
else:
selected_events.append(event)
if self.tracer and self.tracer not in self.available_tracers:
raise TargetStableError('Unsupported tracer "{}". Available tracers: {}'.format(
self.tracer, ', '.join(self.available_tracers)))
# Check for function tracing support
if self.functions:
if not self.target.file_exists(self.function_profile_file):
@ -175,6 +180,15 @@ class FtraceCollector(TraceCollector):
self.event_string = _build_trace_events(selected_events)
@property
@memoized
def available_tracers(self):
"""
List of ftrace tracers supported by the target's kernel.
"""
return self.target.read_value(self.available_tracers_file).split(' ')
def reset(self):
if self.buffer_size:
self._set_buffer_size()