[PATCH v4] power_management: rewrite runpwtests04.sh in C
Jinseok Kim <[email protected]>
| Newsgroups | gmane.linux.ltp |
|---|---|
| Message-ID | <[email protected]> |
As part of the ongoing effort to reduce shell-based tests in LTP, rewrite the cpuidle sysfs smoke test in C using the modern LTP test API. The new implementation preserves the original test semantics while removing shell dependencies. Signed-off-by: Jinseok Kim <[email protected]> --- Changes in v4: - Fix patch application failure reported by CI. - Link to v3: https://lore.kernel.org/ltp/20260611145911.3752-1-always.starving0-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org Changes in v3: - Replace SAFE_OPEN() with open() to convert ENOENT to TCONF. - Add a cleanup function. - Link to v2: https://lore.kernel.org/ltp/20260524154221.2064-1-always.starving0-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org Changes in v2: - Update runtest entry - Clarify commit message - Link to v1: https://lore.kernel.org/ltp/20260516200015.12689-1-always.starving0-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org --- runtest/power_management_tests | 2 +- testcases/kernel/power_management/.gitignore | 1 + testcases/kernel/power_management/pwtests01.c | 67 +++++++++++++++++++ 3 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 testcases/kernel/power_management/pwtests01.c diff --git a/runtest/power_management_tests b/runtest/power_management_tests index 4da57ee72..7a31cde36 100644 --- a/runtest/power_management_tests +++ b/runtest/power_management_tests @@ -1,5 +1,5 @@ #POWER_MANAGEMENT high_freq_hwp_cap_cppc high_freq_hwp_cap_cppc +pwtests01 pwtests01 runpwtests03 runpwtests03.sh -runpwtests04 runpwtests04.sh runpwtests06 runpwtests06.sh diff --git a/testcases/kernel/power_management/.gitignore b/testcases/kernel/power_management/.gitignore index 03f0c83e4..e07cda0c5 100644 --- a/testcases/kernel/power_management/.gitignore +++ b/testcases/kernel/power_management/.gitignore @@ -1 +1,2 @@ high_freq_hwp_cap_cppc +pwtests01 diff --git a/testcases/kernel/power_management/pwtests01.c b/testcases/kernel/power_management/pwtests01.c new file mode 100644 index 000000000..ae4ed0651 --- /dev/null +++ b/testcases/kernel/power_management/pwtests01.c @@ -0,0 +1,67 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (C) 2026 Jinseok Kim <[email protected]> + */ + +/*\ + * Basic cpuidle sysfs smoke test. + * + * Verify that selected cpuidle sysfs files are readable. + */ + +#include <fcntl.h> +#include <unistd.h> + +#include "tst_test.h" + +#define CPUIDLE_PATH "/sys/devices/system/cpu/cpuidle" + +static struct tcase { + const char *name; +} tcases[] = { + { "current_governor_ro" }, + { "current_driver" }, +}; + +static int fd = -1; + +static void verify_cpuidle(unsigned int i) +{ + char path[PATH_MAX]; + char buf[32]; + + snprintf(path, sizeof(path), "%s/%s", CPUIDLE_PATH, tcases[i].name); + + fd = open(path, O_RDONLY); + if (fd < 0) { + if (errno == ENOENT) + tst_res(TCONF, "%s not available", path); + else + tst_res(TFAIL | TERRNO, "open(%s) failed", path); + return; + } + + SAFE_READ(0, fd, buf, sizeof(buf)); + SAFE_CLOSE(fd); + + tst_res(TPASS, "%s read successfully", path); +} + +static void setup(void) +{ + if (access(CPUIDLE_PATH, R_OK)) + tst_brk(TCONF, "%s is not available", CPUIDLE_PATH); +} + +static void cleanup(void) +{ + if (fd != -1) + SAFE_CLOSE(fd); +} + +static struct tst_test test = { + .setup = setup, + .cleanup = cleanup, + .tcnt = ARRAY_SIZE(tcases), + .test = verify_cpuidle, +}; -- 2.43.0 -- Mailing list info: https://lists.linux.it/listinfo/ltp