[PATCH 3/4] perf timechart: Remove unused backtrace in trace_handler

From: Namhyung Kim

Date: Thu Jun 04 2026 - 15:10:27 EST


Now the backtrace argument is not used in any handler. Let's get rid of
it.

Signed-off-by: Namhyung Kim <namhyung@xxxxxxxxxx>
---
tools/perf/builtin-timechart.c | 64 ++++++++++++----------------------
1 file changed, 23 insertions(+), 41 deletions(-)

diff --git a/tools/perf/builtin-timechart.c b/tools/perf/builtin-timechart.c
index 337ae547d008ea0b..4efac73a714c5e5f 100644
--- a/tools/perf/builtin-timechart.c
+++ b/tools/perf/builtin-timechart.c
@@ -573,8 +573,7 @@ static char *cat_backtrace(struct perf_sample *sample,
}

typedef int (*tracepoint_handler)(struct timechart *tchart,
- struct perf_sample *sample,
- const char *backtrace);
+ struct perf_sample *sample);

static int process_sample_event(const struct perf_tool *tool,
union perf_event *event __maybe_unused,
@@ -595,7 +594,7 @@ static int process_sample_event(const struct perf_tool *tool,
if (evsel->handler != NULL) {
tracepoint_handler f = evsel->handler;

- ret = f(tchart, sample, NULL);
+ ret = f(tchart, sample);
}

return ret;
@@ -603,8 +602,7 @@ static int process_sample_event(const struct perf_tool *tool,

static int
process_sample_cpu_idle(struct timechart *tchart __maybe_unused,
- struct perf_sample *sample,
- const char *backtrace __maybe_unused)
+ struct perf_sample *sample)
{
u32 state = perf_sample__intval(sample, "state");
u32 cpu_id = perf_sample__intval(sample, "cpu_id");
@@ -624,8 +622,7 @@ process_sample_cpu_idle(struct timechart *tchart __maybe_unused,

static int
process_sample_cpu_frequency(struct timechart *tchart,
- struct perf_sample *sample,
- const char *backtrace __maybe_unused)
+ struct perf_sample *sample)
{
u32 state = perf_sample__intval(sample, "state");
u32 cpu_id = perf_sample__intval(sample, "cpu_id");
@@ -642,12 +639,12 @@ process_sample_cpu_frequency(struct timechart *tchart,

static int
process_sample_sched_wakeup(struct timechart *tchart,
- struct perf_sample *sample,
- const char *backtrace)
+ struct perf_sample *sample)
{
u8 flags = perf_sample__intval(sample, "common_flags");
int waker = perf_sample__intval(sample, "common_pid");
int wakee = perf_sample__intval(sample, "pid");
+ char *backtrace;

/* perf.data is untrusted input — CPU may be absent or corrupted */
if (sample->cpu >= MAX_CPUS) {
@@ -664,12 +661,12 @@ process_sample_sched_wakeup(struct timechart *tchart,

static int
process_sample_sched_switch(struct timechart *tchart,
- struct perf_sample *sample,
- const char *backtrace)
+ struct perf_sample *sample)
{
int prev_pid = perf_sample__intval(sample, "prev_pid");
int next_pid = perf_sample__intval(sample, "next_pid");
u64 prev_state = perf_sample__intval(sample, "prev_state");
+ char *backtrace;

/* perf.data is untrusted input — CPU may be absent or corrupted */
if (sample->cpu >= MAX_CPUS) {
@@ -688,8 +685,7 @@ process_sample_sched_switch(struct timechart *tchart,
#ifdef SUPPORT_OLD_POWER_EVENTS
static int
process_sample_power_start(struct timechart *tchart __maybe_unused,
- struct perf_sample *sample,
- const char *backtrace __maybe_unused)
+ struct perf_sample *sample)
{
u64 cpu_id = perf_sample__intval(sample, "cpu_id");
u64 value = perf_sample__intval(sample, "value");
@@ -706,8 +702,7 @@ process_sample_power_start(struct timechart *tchart __maybe_unused,

static int
process_sample_power_end(struct timechart *tchart,
- struct perf_sample *sample,
- const char *backtrace __maybe_unused)
+ struct perf_sample *sample)
{
/* perf.data is untrusted input — CPU may be absent or corrupted */
if (sample->cpu >= MAX_CPUS) {
@@ -721,8 +716,7 @@ process_sample_power_end(struct timechart *tchart,

static int
process_sample_power_frequency(struct timechart *tchart,
- struct perf_sample *sample,
- const char *backtrace __maybe_unused)
+ struct perf_sample *sample)
{
u64 cpu_id = perf_sample__intval(sample, "cpu_id");
u64 value = perf_sample__intval(sample, "value");
@@ -895,8 +889,7 @@ static int pid_end_io_sample(struct timechart *tchart, int pid, int type,

static int
process_enter_read(struct timechart *tchart,
- struct perf_sample *sample,
- const char *backtrace __maybe_unused)
+ struct perf_sample *sample)
{
long fd = perf_sample__intval(sample, "fd");
return pid_begin_io_sample(tchart, sample->tid, IOTYPE_READ,
@@ -905,8 +898,7 @@ process_enter_read(struct timechart *tchart,

static int
process_exit_read(struct timechart *tchart,
- struct perf_sample *sample,
- const char *backtrace __maybe_unused)
+ struct perf_sample *sample)
{
long ret = perf_sample__intval(sample, "ret");
return pid_end_io_sample(tchart, sample->tid, IOTYPE_READ,
@@ -915,8 +907,7 @@ process_exit_read(struct timechart *tchart,

static int
process_enter_write(struct timechart *tchart,
- struct perf_sample *sample,
- const char *backtrace __maybe_unused)
+ struct perf_sample *sample)
{
long fd = perf_sample__intval(sample, "fd");
return pid_begin_io_sample(tchart, sample->tid, IOTYPE_WRITE,
@@ -925,8 +916,7 @@ process_enter_write(struct timechart *tchart,

static int
process_exit_write(struct timechart *tchart,
- struct perf_sample *sample,
- const char *backtrace __maybe_unused)
+ struct perf_sample *sample)
{
long ret = perf_sample__intval(sample, "ret");
return pid_end_io_sample(tchart, sample->tid, IOTYPE_WRITE,
@@ -935,8 +925,7 @@ process_exit_write(struct timechart *tchart,

static int
process_enter_sync(struct timechart *tchart,
- struct perf_sample *sample,
- const char *backtrace __maybe_unused)
+ struct perf_sample *sample)
{
long fd = perf_sample__intval(sample, "fd");
return pid_begin_io_sample(tchart, sample->tid, IOTYPE_SYNC,
@@ -945,8 +934,7 @@ process_enter_sync(struct timechart *tchart,

static int
process_exit_sync(struct timechart *tchart,
- struct perf_sample *sample,
- const char *backtrace __maybe_unused)
+ struct perf_sample *sample)
{
long ret = perf_sample__intval(sample, "ret");
return pid_end_io_sample(tchart, sample->tid, IOTYPE_SYNC,
@@ -955,8 +943,7 @@ process_exit_sync(struct timechart *tchart,

static int
process_enter_tx(struct timechart *tchart,
- struct perf_sample *sample,
- const char *backtrace __maybe_unused)
+ struct perf_sample *sample)
{
long fd = perf_sample__intval(sample, "fd");
return pid_begin_io_sample(tchart, sample->tid, IOTYPE_TX,
@@ -965,8 +952,7 @@ process_enter_tx(struct timechart *tchart,

static int
process_exit_tx(struct timechart *tchart,
- struct perf_sample *sample,
- const char *backtrace __maybe_unused)
+ struct perf_sample *sample)
{
long ret = perf_sample__intval(sample, "ret");
return pid_end_io_sample(tchart, sample->tid, IOTYPE_TX,
@@ -975,8 +961,7 @@ process_exit_tx(struct timechart *tchart,

static int
process_enter_rx(struct timechart *tchart,
- struct perf_sample *sample,
- const char *backtrace __maybe_unused)
+ struct perf_sample *sample)
{
long fd = perf_sample__intval(sample, "fd");
return pid_begin_io_sample(tchart, sample->tid, IOTYPE_RX,
@@ -985,8 +970,7 @@ process_enter_rx(struct timechart *tchart,

static int
process_exit_rx(struct timechart *tchart,
- struct perf_sample *sample,
- const char *backtrace __maybe_unused)
+ struct perf_sample *sample)
{
long ret = perf_sample__intval(sample, "ret");
return pid_end_io_sample(tchart, sample->tid, IOTYPE_RX,
@@ -995,8 +979,7 @@ process_exit_rx(struct timechart *tchart,

static int
process_enter_poll(struct timechart *tchart,
- struct perf_sample *sample,
- const char *backtrace __maybe_unused)
+ struct perf_sample *sample)
{
long fd = perf_sample__intval(sample, "fd");
return pid_begin_io_sample(tchart, sample->tid, IOTYPE_POLL,
@@ -1005,8 +988,7 @@ process_enter_poll(struct timechart *tchart,

static int
process_exit_poll(struct timechart *tchart,
- struct perf_sample *sample,
- const char *backtrace __maybe_unused)
+ struct perf_sample *sample)
{
long ret = perf_sample__intval(sample, "ret");
return pid_end_io_sample(tchart, sample->tid, IOTYPE_POLL,
--
2.54.0.1032.g2f8565e1d1-goog