perf test hwmon_pmu: Fix event file location
The temp directory is made and a known fake hwmon PMU created within it. Prior to this fix the events were being incorrectly written to the temp directory rather than the fake PMU directory. This didn't impact the test as the directory fd matched the wrong location, but it doesn't mirror what a hwmon PMU would actually look like. Signed-off-by: Ian Rogers <irogers@google.com> Tested-by: Arnaldo Carvalho de Melo <acme@kernel.org> Link: https://lore.kernel.org/r/20241206042306.1055913-2-irogers@google.com Signed-off-by: Namhyung Kim <namhyung@kernel.org>pull/975/merge
parent
3f61a12b08
commit
d4e17a322a
|
|
@ -65,7 +65,7 @@ static struct perf_pmu *test_pmu_get(char *dir, size_t sz)
|
|||
{ "temp2_label", "test hwmon event2\n", },
|
||||
{ "temp2_input", "50000\n", },
|
||||
};
|
||||
int dirfd, file;
|
||||
int hwmon_dirfd = -1, test_dirfd = -1, file;
|
||||
struct perf_pmu *hwm = NULL;
|
||||
ssize_t len;
|
||||
|
||||
|
|
@ -76,19 +76,24 @@ static struct perf_pmu *test_pmu_get(char *dir, size_t sz)
|
|||
dir[0] = '\0';
|
||||
return NULL;
|
||||
}
|
||||
dirfd = open(dir, O_DIRECTORY);
|
||||
if (dirfd < 0) {
|
||||
test_dirfd = open(dir, O_PATH|O_DIRECTORY);
|
||||
if (test_dirfd < 0) {
|
||||
pr_err("Failed to open test directory \"%s\"\n", dir);
|
||||
goto err_out;
|
||||
}
|
||||
|
||||
/* Create the test hwmon directory and give it a name. */
|
||||
if (mkdirat(dirfd, "hwmon1234", 0755) < 0) {
|
||||
if (mkdirat(test_dirfd, "hwmon1234", 0755) < 0) {
|
||||
pr_err("Failed to mkdir hwmon directory\n");
|
||||
goto err_out;
|
||||
}
|
||||
file = openat(dirfd, "hwmon1234/name", O_WRONLY | O_CREAT, 0600);
|
||||
if (!file) {
|
||||
hwmon_dirfd = openat(test_dirfd, "hwmon1234", O_DIRECTORY);
|
||||
if (hwmon_dirfd < 0) {
|
||||
pr_err("Failed to open test hwmon directory \"%s/hwmon1234\"\n", dir);
|
||||
goto err_out;
|
||||
}
|
||||
file = openat(hwmon_dirfd, "name", O_WRONLY | O_CREAT, 0600);
|
||||
if (file < 0) {
|
||||
pr_err("Failed to open for writing file \"name\"\n");
|
||||
goto err_out;
|
||||
}
|
||||
|
|
@ -104,8 +109,8 @@ static struct perf_pmu *test_pmu_get(char *dir, size_t sz)
|
|||
for (size_t i = 0; i < ARRAY_SIZE(test_items); i++) {
|
||||
const struct test_item *item = &test_items[i];
|
||||
|
||||
file = openat(dirfd, item->name, O_WRONLY | O_CREAT, 0600);
|
||||
if (!file) {
|
||||
file = openat(hwmon_dirfd, item->name, O_WRONLY | O_CREAT, 0600);
|
||||
if (file < 0) {
|
||||
pr_err("Failed to open for writing file \"%s\"\n", item->name);
|
||||
goto err_out;
|
||||
}
|
||||
|
|
@ -119,16 +124,18 @@ static struct perf_pmu *test_pmu_get(char *dir, size_t sz)
|
|||
}
|
||||
|
||||
/* Make the PMU reading the files created above. */
|
||||
hwm = perf_pmus__add_test_hwmon_pmu(dirfd, "hwmon1234", test_hwmon_name);
|
||||
hwm = perf_pmus__add_test_hwmon_pmu(hwmon_dirfd, "hwmon1234", test_hwmon_name);
|
||||
if (!hwm)
|
||||
pr_err("Test hwmon creation failed\n");
|
||||
|
||||
err_out:
|
||||
if (!hwm) {
|
||||
test_pmu_put(dir, hwm);
|
||||
if (dirfd >= 0)
|
||||
close(dirfd);
|
||||
if (hwmon_dirfd >= 0)
|
||||
close(hwmon_dirfd);
|
||||
}
|
||||
if (test_dirfd >= 0)
|
||||
close(test_dirfd);
|
||||
return hwm;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue