From 56cdc2e6c3ff51a1fc71e9c47258e7aa905f418e Mon Sep 17 00:00:00 2001
From: Douglas RAILLARD <douglas.raillard@arm.com>
Date: Thu, 31 Oct 2019 17:42:16 +0000
Subject: [PATCH] ftrace: Allow setting the number of cmdlines saved by ftrace

While tracing, ftrace records a mapping of PIDs to cmdlines. By default, it will
only record up to 128 such entries, which is not enough for a typical android
system. The consequence is trace-cmd reporting "<...>" as cmdline.

Allow setting that number to a higher value, and default to a comfortable 4096
entries.

Signed-off-by: Douglas RAILLARD <douglas.raillard@arm.com>
---
 devlib/trace/ftrace.py | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/devlib/trace/ftrace.py b/devlib/trace/ftrace.py
index ffe80d3..205746a 100644
--- a/devlib/trace/ftrace.py
+++ b/devlib/trace/ftrace.py
@@ -64,6 +64,7 @@ class FtraceCollector(TraceCollector):
                  strict=False,
                  report_on_target=False,
                  trace_clock='local',
+                 saved_cmdlines_nr=4096,
                  ):
         super(FtraceCollector, self).__init__(target)
         self.events = events if events is not None else DEFAULT_EVENTS
@@ -85,6 +86,7 @@ class FtraceCollector(TraceCollector):
         self.event_string = None
         self.function_string = None
         self.trace_clock = trace_clock
+        self.saved_cmdlines_nr = saved_cmdlines_nr
         self._reset_needed = True
 
         # pylint: disable=bad-whitespace
@@ -97,6 +99,7 @@ class FtraceCollector(TraceCollector):
         self.marker_file              = self.target.path.join(self.tracing_path, 'trace_marker')
         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.host_binary = which('trace-cmd')
         self.kernelshark = which('kernelshark')
@@ -175,6 +178,7 @@ class FtraceCollector(TraceCollector):
             self.reset()
 
         self.target.write_value(self.trace_clock_file, self.trace_clock, verify=False)
+        self.target.write_value(self.save_cmdlines_size_file, self.saved_cmdlines_nr)
         self.target.execute('{} start {}'.format(self.target_binary, self.event_string),
                             as_root=True)
         if self.automark: