git: ec66cc955b62 - main - libpmc: eliminate pmc_pmu_stat_mode()
Mitchell Horne
mhorne at FreeBSD.org
Mon May 31 20:39:20 UTC 2021
The branch main has been updated by mhorne:
URL: https://cgit.FreeBSD.org/src/commit/?id=ec66cc955b629e614cf493bf168048de033f6a2c
commit ec66cc955b629e614cf493bf168048de033f6a2c
Author: Mitchell Horne <mhorne at FreeBSD.org>
AuthorDate: 2021-05-31 14:21:57 +0000
Commit: Mitchell Horne <mhorne at FreeBSD.org>
CommitDate: 2021-05-31 20:39:05 +0000
libpmc: eliminate pmc_pmu_stat_mode()
There is a single consumer, the pmc utility, that clearly has knowledge
of which counters it is expecting. Remove this function and have it
use common counter aliases instead.
Reviewed by: gnn
MFC after: 2 weeks
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D30528
---
lib/libpmc/libpmc_pmu_util.c | 22 ----------------------
lib/libpmc/pmc.h | 1 -
usr.sbin/pmc/cmd_pmc_stat.c | 15 +++++++++++----
3 files changed, 11 insertions(+), 27 deletions(-)
diff --git a/lib/libpmc/libpmc_pmu_util.c b/lib/libpmc/libpmc_pmu_util.c
index 1b2c10e07368..a525a0067822 100644
--- a/lib/libpmc/libpmc_pmu_util.c
+++ b/lib/libpmc/libpmc_pmu_util.c
@@ -542,28 +542,6 @@ pmc_pmu_pmcallocate(const char *event_name, struct pmc_op_pmcallocate *pm)
return (pmc_pmu_amd_pmcallocate(event_name, pm, &ped));
}
-/*
- * Ultimately rely on AMD calling theirs the same
- */
-static const char *stat_mode_cntrs[] = {
- "cpu_clk_unhalted.thread",
- "inst_retired.any",
- "br_inst_retired.all_branches",
- "br_misp_retired.all_branches",
- "longest_lat_cache.reference",
- "longest_lat_cache.miss",
-};
-
-int
-pmc_pmu_stat_mode(const char ***cntrs)
-{
- if (pmc_pmu_enabled()) {
- *cntrs = stat_mode_cntrs;
- return (0);
- }
- return (EOPNOTSUPP);
-}
-
#else
uint64_t
diff --git a/lib/libpmc/pmc.h b/lib/libpmc/pmc.h
index 9d12085364e5..7579f93a42b1 100644
--- a/lib/libpmc/pmc.h
+++ b/lib/libpmc/pmc.h
@@ -122,7 +122,6 @@ uint64_t pmc_pmu_sample_rate_get(const char *);
int pmc_pmu_pmcallocate(const char *, struct pmc_op_pmcallocate *);
const char *pmc_pmu_event_get_by_idx(const char *, int idx);
int pmc_pmu_idx_get_by_event(const char*, const char *);
-int pmc_pmu_stat_mode(const char ***);
__END_DECLS
#endif
diff --git a/usr.sbin/pmc/cmd_pmc_stat.c b/usr.sbin/pmc/cmd_pmc_stat.c
index 44ca7b92dea7..55d1f1ca7a3b 100644
--- a/usr.sbin/pmc/cmd_pmc_stat.c
+++ b/usr.sbin/pmc/cmd_pmc_stat.c
@@ -104,6 +104,16 @@ static const char *pmc_stat_mode_names[] = {
"cache-misses",
};
+/* Common aliases for the desired stat counter */
+static const char *pmc_stat_mode_aliases[] = {
+ "unhalted-cycles",
+ "instructions",
+ "branches",
+ "branch-mispredicts",
+ "LLC-REFERENCE",
+ "LLC-MISSES",
+};
+
static int pmcstat_sockpair[NSOCKPAIRFD];
static void __dead2
@@ -153,7 +163,6 @@ static void
pmc_stat_setup_stat(int system_mode, const char *arg)
{
const char *new_cntrs[STAT_MODE_NPMCS];
- static const char **pmc_stat_mode_cntrs;
struct pmcstat_ev *ev;
char *counters, *counter;
int i, c, start, newcnt;
@@ -164,13 +173,11 @@ pmc_stat_setup_stat(int system_mode, const char *arg)
err(EX_OSERR, "ERROR: Cannot determine the root set of CPUs");
CPU_COPY(&rootmask, &cpumask);
- if (pmc_pmu_stat_mode(&pmc_stat_mode_cntrs) != 0)
- errx(EX_USAGE, "ERROR: hwmpc.ko not loaded or stat not supported on host.");
if (system_mode && geteuid() != 0)
errx(EX_USAGE, "ERROR: system mode counters can only be used as root");
counters = NULL;
for (i = 0; i < STAT_MODE_NPMCS; i++) {
- stat_mode_cntrs[i] = pmc_stat_mode_cntrs[i];
+ stat_mode_cntrs[i] = pmc_stat_mode_aliases[i];
stat_mode_names[i] = pmc_stat_mode_names[i];
}
if (arg) {
More information about the dev-commits-src-main
mailing list