return ret + perf_evsel__add_modifiers(evsel, bf + ret, size - ret);
}
+static int perf_evsel__tracepoint_name(struct perf_evsel *evsel, char *bf, size_t size)
+{
+ return scnprintf(bf, size, "%s", evsel->name ?: "unknown tracepoint");
+}
+
int perf_evsel__name(struct perf_evsel *evsel, char *bf, size_t size)
{
int ret;
ret = perf_evsel__sw_name(evsel, bf, size);
break;
+ case PERF_TYPE_TRACEPOINT:
+ ret = perf_evsel__tracepoint_name(evsel, bf, size);
+ break;
+
default:
- /*
- * FIXME
- *
- * This is the minimal perf_evsel__name so that we can
- * reconstruct event names taking into account event modifiers.
- *
- * The old event_name uses it now for raw anr hw events, so that
- * we don't drag all the parsing stuff into the python binding.
- *
- * On the next devel cycle the rest of the event naming will be
- * brought here.
- */
- return 0;
+ ret = scnprintf(bf, size, "%s", "unknown attr type");
+ break;
}
return ret;
const char *event_name(struct perf_evsel *evsel)
{
- u64 config = evsel->attr.config;
- int type = evsel->attr.type;
-
- if (type == PERF_TYPE_RAW || type == PERF_TYPE_HARDWARE ||
- type == PERF_TYPE_SOFTWARE || type == PERF_TYPE_HW_CACHE) {
- /*
- * XXX minimal fix, see comment on perf_evsen__name, this static buffer
- * will go away together with event_name in the next devel cycle.
- */
- static char bf[128];
- perf_evsel__name(evsel, bf, sizeof(bf));
- return bf;
- }
-
- if (evsel->name)
- return evsel->name;
-
- return __event_name(type, config);
+ static char bf[128];
+ perf_evsel__name(evsel, bf, sizeof(bf));
+ return bf;
}
const char *__event_name(int type, u64 config)