Skip to content

Commit

Permalink
perf test hwmon_pmu: Fix event file location
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Ian Rogers authored and Namhyung Kim committed Dec 9, 2024
1 parent 3f61a12 commit d4e17a3
Showing 1 changed file with 18 additions and 11 deletions.
29 changes: 18 additions & 11 deletions tools/perf/tests/hwmon_pmu.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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;
}
Expand All @@ -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;
}
Expand All @@ -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;
}

Expand Down

0 comments on commit d4e17a3

Please sign in to comment.