Commit 7f4a45be authored by James Clark's avatar James Clark Committed by Junhao He
Browse files

perf script: Refactor branch stack printing

mainline inclusion
from mainline-v5.18-rc1
commit b2dac688
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I8EC9K
CVE: NA

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=b2dac688a5265379e0f13856b78cb627af07cf42



--------------------------------

Remove duplicate code so that future changes to flags are always made to
all 3 printing variations.

Signed-off-by: default avatarJames Clark <james.clark@arm.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Anshuman Khandual <anshuman.khandual@arm.com>
Cc: German Gomez <german.gomez@arm.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Leo Yan <leo.yan@linaro.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Link: https://lore.kernel.org/r/20220307171917.2555829-4-james.clark@arm.com


Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: default avatarJunhao He <hejunhao3@huawei.com>
parent 6f6573d0
Loading
Loading
Loading
Loading
+12 −15
Original line number Diff line number Diff line
@@ -814,6 +814,15 @@ mispred_str(struct branch_entry *br)
	return br->flags.predicted ? 'P' : 'M';
}

static int print_bstack_flags(FILE *fp, struct branch_entry *br)
{
	return fprintf(fp, "/%c/%c/%c/%d ",
		       mispred_str(br),
		       br->flags.in_tx ? 'X' : '-',
		       br->flags.abort ? 'A' : '-',
		       br->flags.cycles);
}

static int perf_sample__fprintf_brstack(struct perf_sample *sample,
					struct thread *thread,
					struct perf_event_attr *attr, FILE *fp)
@@ -852,11 +861,7 @@ static int perf_sample__fprintf_brstack(struct perf_sample *sample,
			printed += fprintf(fp, ")");
		}

		printed += fprintf(fp, "/%c/%c/%c/%d ",
			mispred_str(entries + i),
			entries[i].flags.in_tx ? 'X' : '-',
			entries[i].flags.abort ? 'A' : '-',
			entries[i].flags.cycles);
		printed += print_bstack_flags(fp, entries + i);
	}

	return printed;
@@ -898,11 +903,7 @@ static int perf_sample__fprintf_brstacksym(struct perf_sample *sample,
			printed += map__fprintf_dsoname(alt.map, fp);
			printed += fprintf(fp, ")");
		}
		printed += fprintf(fp, "/%c/%c/%c/%d ",
			mispred_str(entries + i),
			entries[i].flags.in_tx ? 'X' : '-',
			entries[i].flags.abort ? 'A' : '-',
			entries[i].flags.cycles);
		printed += print_bstack_flags(fp, entries + i);
	}

	return printed;
@@ -948,11 +949,7 @@ static int perf_sample__fprintf_brstackoff(struct perf_sample *sample,
			printed += map__fprintf_dsoname(alt.map, fp);
			printed += fprintf(fp, ")");
		}
		printed += fprintf(fp, "/%c/%c/%c/%d ",
			mispred_str(entries + i),
			entries[i].flags.in_tx ? 'X' : '-',
			entries[i].flags.abort ? 'A' : '-',
			entries[i].flags.cycles);
		printed += print_bstack_flags(fp, entries + i);
	}

	return printed;