mirror of
				https://github.com/ARM-software/devlib.git
				synced 2025-11-04 07:51:21 +00: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:
		
				
					committed by
					
						
						Marc Bonnici
					
				
			
			
				
	
			
			
			
						parent
						
							6b0b12d833
						
					
				
				
					commit
					656da00d2a
				
			@@ -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()
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user