libperf cpumap: Remove use of perf_cpu_map__read()
authorIan Rogers <irogers@google.com>
Fri, 6 Dec 2024 04:40:33 +0000 (20:40 -0800)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Mon, 9 Dec 2024 20:52:41 +0000 (17:52 -0300)
Remove use of a FILE and switch to reading a string that is then
passed to perf_cpu_map__new().

Being able to remove perf_cpu_map__read() avoids duplicated parsing
logic.

Reviewed-by: Leo Yan <leo.yan@arm.com>
Signed-off-by: Ian Rogers <irogers@google.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Ben Gainey <ben.gainey@arm.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: James Clark <james.clark@linaro.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Kyle Meyer <kyle.meyer@hpe.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: https://lore.kernel.org/r/20241206044035.1062032-7-irogers@google.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/lib/perf/cpumap.c

index f7bde19558e2b25b193813f1a20b1612cf574c15..a0c10ed9914ed3d6b4c87a9b35b07ea1c215ef99 100644 (file)
@@ -11,6 +11,7 @@
 #include <ctype.h>
 #include <limits.h>
 #include "internal.h"
+#include <api/fs/fs.h>
 
 #define MAX_NR_CPUS 4096
 
@@ -103,12 +104,12 @@ static struct perf_cpu_map *cpu_map__new_sysconf(void)
 static struct perf_cpu_map *cpu_map__new_sysfs_online(void)
 {
        struct perf_cpu_map *cpus = NULL;
-       FILE *onlnf;
+       char *buf = NULL;
+       size_t buf_len;
 
-       onlnf = fopen("/sys/devices/system/cpu/online", "r");
-       if (onlnf) {
-               cpus = perf_cpu_map__read(onlnf);
-               fclose(onlnf);
+       if (sysfs__read_str("devices/system/cpu/online", &buf, &buf_len) >= 0) {
+               cpus = perf_cpu_map__new(buf);
+               free(buf);
        }
        return cpus;
 }