git: 6ad94d549eb2 - main - libpmc/pmu-events: Add support for new json fields
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 24 Mar 2026 10:38:07 UTC
The branch main has been updated by bnovkov:
URL: https://cgit.FreeBSD.org/src/commit/?id=6ad94d549eb2286d791abd5634400d8ef36d8259
commit 6ad94d549eb2286d791abd5634400d8ef36d8259
Author: Bojan Novković <bnovkov@FreeBSD.org>
AuthorDate: 2026-03-21 14:37:44 +0000
Commit: Bojan Novković <bnovkov@FreeBSD.org>
CommitDate: 2026-03-24 10:34:12 +0000
libpmc/pmu-events: Add support for new json fields
This change adds support for three new Intel fields to jevents.c:
- MetricThreshold
- MetricgroupNoGroup
- DefaultMetricgroupName
Reviewed by: ali_mashtizadeh.com, mhorne
Differential Revision: https://reviews.freebsd.org/D56017
MFC after: 1 week
---
lib/libpmc/pmu-events/jevents.c | 24 ++++++++++++++++++++++++
lib/libpmc/pmu-events/pmu-events.h | 3 +++
2 files changed, 27 insertions(+)
diff --git a/lib/libpmc/pmu-events/jevents.c b/lib/libpmc/pmu-events/jevents.c
index b129b3706832..facec3361c70 100644
--- a/lib/libpmc/pmu-events/jevents.c
+++ b/lib/libpmc/pmu-events/jevents.c
@@ -71,8 +71,11 @@ struct json_event {
char *perpkg;
char *aggr_mode;
char *metric_expr;
+ char *metric_threshold;
char *metric_name;
char *metric_group;
+ char *metric_group_nogroup;
+ char *default_metric_group;
char *deprecated;
char *metric_constraint;
};
@@ -379,10 +382,16 @@ static int print_events_table_entry(void *data, struct json_event *je)
fprintf(outfp, "\t.aggr_mode = \"%d\",\n", convert(je->aggr_mode));
if (je->metric_expr)
fprintf(outfp, "\t.metric_expr = \"%s\",\n", je->metric_expr);
+ if (je->metric_threshold)
+ fprintf(outfp, "\t.metric_threshold = \"%s\",\n", je->metric_threshold);
if (je->metric_name)
fprintf(outfp, "\t.metric_name = \"%s\",\n", je->metric_name);
if (je->metric_group)
fprintf(outfp, "\t.metric_group = \"%s\",\n", je->metric_group);
+ if (je->metric_group_nogroup)
+ fprintf(outfp, "\t.metric_group_nogroup = \"%s\",\n", je->metric_group_nogroup);
+ if (je->default_metric_group)
+ fprintf(outfp, "\t.default_metric_group = \"%s\",\n", je->default_metric_group);
if (je->deprecated)
fprintf(outfp, "\t.deprecated = \"%s\",\n", je->deprecated);
if (je->metric_constraint)
@@ -404,8 +413,11 @@ struct event_struct {
char *perpkg;
char *aggr_mode;
char *metric_expr;
+ char *metric_threshold;
char *metric_name;
char *metric_group;
+ char *metric_group_nogroup;
+ char *default_metric_group;
char *deprecated;
char *metric_constraint;
};
@@ -434,8 +446,11 @@ struct event_struct {
op(perpkg); \
op(aggr_mode); \
op(metric_expr); \
+ op(metric_threshold); \
op(metric_name); \
op(metric_group); \
+ op(metric_group_nogroup); \
+ op(default_metric_group); \
op(deprecated); \
} while (0)
@@ -711,10 +726,16 @@ static int json_events(const char *fn,
addfield(map, &je.metric_name, "", "", val);
} else if (json_streq(map, field, "MetricGroup")) {
addfield(map, &je.metric_group, "", "", val);
+ } else if (json_streq(map, field, "MetricgroupNoGroup")) {
+ addfield(map, &je.metric_group_nogroup, "", "", val);
+ } else if (json_streq(map, field, "DefaultMetricgroupName")) {
+ addfield(map, &je.default_metric_group, "", "", val);
} else if (json_streq(map, field, "MetricConstraint")) {
addfield(map, &je.metric_constraint, "", "", val);
} else if (json_streq(map, field, "MetricExpr")) {
addfield(map, &je.metric_expr, "", "", val);
+ } else if (json_streq(map, field, "MetricThreshold")) {
+ addfield(map, &je.metric_threshold, "", "", val);
} else if (json_streq(map, field, "ArchStdEvent")) {
addfield(map, &arch_std, "", "", val);
for (s = arch_std; *s; s++)
@@ -866,8 +887,11 @@ free_strings:
free(je.deprecated);
free(je.unit);
free(je.metric_expr);
+ free(je.metric_threshold);
free(je.metric_name);
free(je.metric_group);
+ free(je.metric_group_nogroup);
+ free(je.default_metric_group);
free(je.metric_constraint);
free(arch_std);
diff --git a/lib/libpmc/pmu-events/pmu-events.h b/lib/libpmc/pmu-events/pmu-events.h
index d9edbfba7ceb..1a158a5f16f2 100644
--- a/lib/libpmc/pmu-events/pmu-events.h
+++ b/lib/libpmc/pmu-events/pmu-events.h
@@ -24,8 +24,11 @@ struct pmu_event {
const char *perpkg;
const char *aggr_mode;
const char *metric_expr;
+ const char *metric_threshold;
const char *metric_name;
const char *metric_group;
+ const char *metric_group_nogroup;
+ const char *default_metric_group;
const char *deprecated;
const char *metric_constraint;
};