mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 10:04:04 +02:00
perf pmu: Use fd rather than FILE from new_alias
The FILE argument was necessary for the scanner but now that functionality is not being used we can switch to just using io__getline which should cut down on stdio buffer usage. Tested-by: Thomas Richter <tmricht@linux.ibm.com> Signed-off-by: Ian Rogers <irogers@google.com> Tested-by: James Clark <james.clark@linaro.org> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
This commit is contained in:
parent
5f68451a93
commit
7f20b3dd93
|
|
@ -563,7 +563,7 @@ static int update_alias(const struct pmu_event *pe,
|
|||
}
|
||||
|
||||
static int perf_pmu__new_alias(struct perf_pmu *pmu, const char *name,
|
||||
const char *desc, const char *val, FILE *val_fd,
|
||||
const char *desc, const char *val, int val_fd,
|
||||
const struct pmu_event *pe, enum event_source src)
|
||||
{
|
||||
struct perf_pmu_alias *alias, *old_alias;
|
||||
|
|
@ -614,12 +614,15 @@ static int perf_pmu__new_alias(struct perf_pmu *pmu, const char *name,
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (!val_fd) {
|
||||
if (val_fd < 0) {
|
||||
alias->terms = strdup(val);
|
||||
} else {
|
||||
char buf[256];
|
||||
struct io io;
|
||||
size_t line_len;
|
||||
|
||||
ret = getline(&alias->terms, &line_len, val_fd) < 0 ? -errno : 0;
|
||||
io__init(&io, val_fd, buf, sizeof(buf));
|
||||
ret = io__getline(&io, &alias->terms, &line_len) < 0 ? -errno : 0;
|
||||
if (ret) {
|
||||
pr_err("Failed to read alias %s\n", name);
|
||||
return ret;
|
||||
|
|
@ -698,7 +701,6 @@ static int __pmu_aliases_parse(struct perf_pmu *pmu, int events_dir_fd)
|
|||
while ((evt_ent = io_dir__readdir(&event_dir))) {
|
||||
char *name = evt_ent->d_name;
|
||||
int fd;
|
||||
FILE *file;
|
||||
|
||||
if (!strcmp(name, ".") || !strcmp(name, ".."))
|
||||
continue;
|
||||
|
|
@ -714,17 +716,12 @@ static int __pmu_aliases_parse(struct perf_pmu *pmu, int events_dir_fd)
|
|||
pr_debug("Cannot open %s\n", name);
|
||||
continue;
|
||||
}
|
||||
file = fdopen(fd, "r");
|
||||
if (!file) {
|
||||
close(fd);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (perf_pmu__new_alias(pmu, name, /*desc=*/ NULL,
|
||||
/*val=*/ NULL, file, /*pe=*/ NULL,
|
||||
/*val=*/ NULL, fd, /*pe=*/ NULL,
|
||||
EVENT_SRC_SYSFS) < 0)
|
||||
pr_debug("Cannot set up %s\n", name);
|
||||
fclose(file);
|
||||
close(fd);
|
||||
}
|
||||
|
||||
pmu->sysfs_aliases_loaded = true;
|
||||
|
|
@ -1041,7 +1038,7 @@ static int pmu_add_cpu_aliases_map_callback(const struct pmu_event *pe,
|
|||
{
|
||||
struct perf_pmu *pmu = vdata;
|
||||
|
||||
perf_pmu__new_alias(pmu, pe->name, pe->desc, pe->event, /*val_fd=*/ NULL,
|
||||
perf_pmu__new_alias(pmu, pe->name, pe->desc, pe->event, /*val_fd=*/ -1,
|
||||
pe, EVENT_SRC_CPU_JSON);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -1090,7 +1087,7 @@ static int pmu_add_sys_aliases_iter_fn(const struct pmu_event *pe,
|
|||
pe->name,
|
||||
pe->desc,
|
||||
pe->event,
|
||||
/*val_fd=*/ NULL,
|
||||
/*val_fd=*/ -1,
|
||||
pe,
|
||||
EVENT_SRC_SYS_JSON);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user