Re: [PATCH v9 04/16] perf tp_pmu: Factor existing tracepoint logic to new file

From: Howard Chu
Date: Tue Aug 05 2025 - 18:58:12 EST


Hello Ian,

On Fri, Jul 25, 2025 at 11:52 AM Ian Rogers <irogers@xxxxxxxxxx> wrote:
>
> Start the creation of a tracepoint PMU abstraction. Tracepoint events
> don't follow the regular sysfs perf conventions. Eventually the new
> PMU abstraction will bridge the gap so tracepoint events look more
> like regular perf ones.
>
> Signed-off-by: Ian Rogers <irogers@xxxxxxxxxx>
> Tested-by: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>

<SNIP>

> + while (!ret && (evt_ent = io_dir__readdir(&evt_dir))) {
> + if (!strcmp(evt_ent->d_name, ".")
> + || !strcmp(evt_ent->d_name, "..")
> + || !strcmp(evt_ent->d_name, "enable")
> + || !strcmp(evt_ent->d_name, "filter"))
> + continue;
> +
> + ret = cb(state, sys, evt_ent->d_name);
> + if (ret)
> + break;

Don't think this breakage is needed.

> + }
> + close(evt_dir.dirfd);
> + return ret;
> +}
> +
> +int tp_pmu__for_each_tp_sys(void *state, tp_sys_callback cb)
> +{
> + struct io_dirent64 *events_ent;
> + struct io_dir events_dir;
> + int ret = 0;
> + char *events_dir_path = get_tracing_file("events");
> +
> + if (!events_dir_path)
> + return -errno;
> +
> + io_dir__init(&events_dir, open(events_dir_path, O_CLOEXEC | O_DIRECTORY | O_RDONLY));
> + if (events_dir.dirfd < 0) {
> + ret = -errno;
> + put_events_file(events_dir_path);
> + return ret;
> + }
> + put_events_file(events_dir_path);
> +
> + while (!ret && (events_ent = io_dir__readdir(&events_dir))) {
> + if (!strcmp(events_ent->d_name, ".") ||
> + !strcmp(events_ent->d_name, "..") ||
> + !strcmp(events_ent->d_name, "enable") ||
> + !strcmp(events_ent->d_name, "header_event") ||
> + !strcmp(events_ent->d_name, "header_page"))
> + continue;
> +
> + ret = cb(state, events_ent->d_name);
> + if (ret)
> + break;

Here as well.

Thanks,
Howard