* [PATCH 0/5] selftests: vDSO: Clean up vdso_test_abi and drop vdso_test_clock_getres
@ 2025-07-07 14:23 Thomas Weißschuh
2025-07-07 14:23 ` [PATCH 1/5] selftests: vDSO: vdso_test_abi: Use ksft_finished() Thomas Weißschuh
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Thomas Weißschuh @ 2025-07-07 14:23 UTC (permalink / raw)
To: Andy Lutomirski, Thomas Gleixner, Vincenzo Frascino, Shuah Khan
Cc: linux-kernel, linux-kselftest, Thomas Weißschuh
Some cleanups for the vDSO selftests.
Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
---
Thomas Weißschuh (5):
selftests: vDSO: vdso_test_abi: Use ksft_finished()
selftests: vDSO: vdso_test_abi: Drop clock availability tests
selftests: vDSO: vdso_test_abi: Use explicit indices for name array
selftests: vDSO: vdso_test_abi: Test CPUTIME clocks
selftests: vDSO: Drop vdso_test_clock_getres
tools/testing/selftests/vDSO/Makefile | 2 -
tools/testing/selftests/vDSO/vdso_test_abi.c | 57 +++-------
.../selftests/vDSO/vdso_test_clock_getres.c | 123 ---------------------
3 files changed, 17 insertions(+), 165 deletions(-)
---
base-commit: 437079605c26dc7c98586580a8c01b5f7f746a79
change-id: 20250707-vdso-tests-fixes-7e4ddffd7f27
Best regards,
--
Thomas Weißschuh <thomas.weissschuh@linutronix.de>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/5] selftests: vDSO: vdso_test_abi: Use ksft_finished()
2025-07-07 14:23 [PATCH 0/5] selftests: vDSO: Clean up vdso_test_abi and drop vdso_test_clock_getres Thomas Weißschuh
@ 2025-07-07 14:23 ` Thomas Weißschuh
2025-07-07 14:23 ` [PATCH 2/5] selftests: vDSO: vdso_test_abi: Drop clock availability tests Thomas Weißschuh
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Thomas Weißschuh @ 2025-07-07 14:23 UTC (permalink / raw)
To: Andy Lutomirski, Thomas Gleixner, Vincenzo Frascino, Shuah Khan
Cc: linux-kernel, linux-kselftest, Thomas Weißschuh
The existing logic is just an open-coded ksft_finished().
Replace it with the real thing.
Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
---
tools/testing/selftests/vDSO/vdso_test_abi.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/tools/testing/selftests/vDSO/vdso_test_abi.c b/tools/testing/selftests/vDSO/vdso_test_abi.c
index a54424e2336f4597e67668052b62cd7d6c0531ff..63eafb5ac0bfa407a527343f4d587e5098454f1f 100644
--- a/tools/testing/selftests/vDSO/vdso_test_abi.c
+++ b/tools/testing/selftests/vDSO/vdso_test_abi.c
@@ -232,6 +232,5 @@ int main(int argc, char **argv)
vdso_test_time();
- ksft_print_cnts();
- return ksft_get_fail_cnt() == 0 ? KSFT_PASS : KSFT_FAIL;
+ ksft_finished();
}
--
2.50.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/5] selftests: vDSO: vdso_test_abi: Drop clock availability tests
2025-07-07 14:23 [PATCH 0/5] selftests: vDSO: Clean up vdso_test_abi and drop vdso_test_clock_getres Thomas Weißschuh
2025-07-07 14:23 ` [PATCH 1/5] selftests: vDSO: vdso_test_abi: Use ksft_finished() Thomas Weißschuh
@ 2025-07-07 14:23 ` Thomas Weißschuh
2025-07-07 14:23 ` [PATCH 3/5] selftests: vDSO: vdso_test_abi: Use explicit indices for name array Thomas Weißschuh
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Thomas Weißschuh @ 2025-07-07 14:23 UTC (permalink / raw)
To: Andy Lutomirski, Thomas Gleixner, Vincenzo Frascino, Shuah Khan
Cc: linux-kernel, linux-kselftest, Thomas Weißschuh
The test uses the kselftest.h framework and declares in its testplan to
always execute 16 testcases. If any of the clockids were not available
the testplan would not be satisfied anymore and the test would fail.
Apparently that never happened, so the clockids are always available.
Remove the pointless checks.
Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
---
tools/testing/selftests/vDSO/vdso_test_abi.c | 24 ------------------------
1 file changed, 24 deletions(-)
diff --git a/tools/testing/selftests/vDSO/vdso_test_abi.c b/tools/testing/selftests/vDSO/vdso_test_abi.c
index 63eafb5ac0bfa407a527343f4d587e5098454f1f..407817e929d89ee434191e336da0e6f18b989a71 100644
--- a/tools/testing/selftests/vDSO/vdso_test_abi.c
+++ b/tools/testing/selftests/vDSO/vdso_test_abi.c
@@ -198,37 +198,13 @@ int main(int argc, char **argv)
vdso_test_gettimeofday();
-#if _POSIX_TIMERS > 0
-
-#ifdef CLOCK_REALTIME
vdso_test_clock(CLOCK_REALTIME);
-#endif
-
-#ifdef CLOCK_BOOTTIME
vdso_test_clock(CLOCK_BOOTTIME);
-#endif
-
-#ifdef CLOCK_TAI
vdso_test_clock(CLOCK_TAI);
-#endif
-
-#ifdef CLOCK_REALTIME_COARSE
vdso_test_clock(CLOCK_REALTIME_COARSE);
-#endif
-
-#ifdef CLOCK_MONOTONIC
vdso_test_clock(CLOCK_MONOTONIC);
-#endif
-
-#ifdef CLOCK_MONOTONIC_RAW
vdso_test_clock(CLOCK_MONOTONIC_RAW);
-#endif
-
-#ifdef CLOCK_MONOTONIC_COARSE
vdso_test_clock(CLOCK_MONOTONIC_COARSE);
-#endif
-
-#endif
vdso_test_time();
--
2.50.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 3/5] selftests: vDSO: vdso_test_abi: Use explicit indices for name array
2025-07-07 14:23 [PATCH 0/5] selftests: vDSO: Clean up vdso_test_abi and drop vdso_test_clock_getres Thomas Weißschuh
2025-07-07 14:23 ` [PATCH 1/5] selftests: vDSO: vdso_test_abi: Use ksft_finished() Thomas Weißschuh
2025-07-07 14:23 ` [PATCH 2/5] selftests: vDSO: vdso_test_abi: Drop clock availability tests Thomas Weißschuh
@ 2025-07-07 14:23 ` Thomas Weißschuh
2025-07-07 14:23 ` [PATCH 4/5] selftests: vDSO: vdso_test_abi: Test CPUTIME clocks Thomas Weißschuh
2025-07-07 14:23 ` [PATCH 5/5] selftests: vDSO: Drop vdso_test_clock_getres Thomas Weißschuh
4 siblings, 0 replies; 6+ messages in thread
From: Thomas Weißschuh @ 2025-07-07 14:23 UTC (permalink / raw)
To: Andy Lutomirski, Thomas Gleixner, Vincenzo Frascino, Shuah Khan
Cc: linux-kernel, linux-kselftest, Thomas Weißschuh
The array relies on the numeric values of the clock IDs.
When reading the code it is not obvious that the order is correct.
Make the code easier to read by using explicit indices.
While at it make the array static.
Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
---
tools/testing/selftests/vDSO/vdso_test_abi.c | 26 +++++++++++++-------------
1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/tools/testing/selftests/vDSO/vdso_test_abi.c b/tools/testing/selftests/vDSO/vdso_test_abi.c
index 407817e929d89ee434191e336da0e6f18b989a71..96d0dd3677b357876e92f6d2d962d43d642e9bee 100644
--- a/tools/testing/selftests/vDSO/vdso_test_abi.c
+++ b/tools/testing/selftests/vDSO/vdso_test_abi.c
@@ -31,19 +31,19 @@ typedef long (*vdso_clock_gettime_t)(clockid_t clk_id, struct timespec *ts);
typedef long (*vdso_clock_getres_t)(clockid_t clk_id, struct timespec *ts);
typedef time_t (*vdso_time_t)(time_t *t);
-const char *vdso_clock_name[12] = {
- "CLOCK_REALTIME",
- "CLOCK_MONOTONIC",
- "CLOCK_PROCESS_CPUTIME_ID",
- "CLOCK_THREAD_CPUTIME_ID",
- "CLOCK_MONOTONIC_RAW",
- "CLOCK_REALTIME_COARSE",
- "CLOCK_MONOTONIC_COARSE",
- "CLOCK_BOOTTIME",
- "CLOCK_REALTIME_ALARM",
- "CLOCK_BOOTTIME_ALARM",
- "CLOCK_SGI_CYCLE",
- "CLOCK_TAI",
+static const char * const vdso_clock_name[] = {
+ [CLOCK_REALTIME] = "CLOCK_REALTIME",
+ [CLOCK_MONOTONIC] = "CLOCK_MONOTONIC",
+ [CLOCK_PROCESS_CPUTIME_ID] = "CLOCK_PROCESS_CPUTIME_ID",
+ [CLOCK_THREAD_CPUTIME_ID] = "CLOCK_THREAD_CPUTIME_ID",
+ [CLOCK_MONOTONIC_RAW] = "CLOCK_MONOTONIC_RAW",
+ [CLOCK_REALTIME_COARSE] = "CLOCK_REALTIME_COARSE",
+ [CLOCK_MONOTONIC_COARSE] = "CLOCK_MONOTONIC_COARSE",
+ [CLOCK_BOOTTIME] = "CLOCK_BOOTTIME",
+ [CLOCK_REALTIME_ALARM] = "CLOCK_REALTIME_ALARM",
+ [CLOCK_BOOTTIME_ALARM] = "CLOCK_BOOTTIME_ALARM",
+ [/* CLOCK_SGI_CYCLE */ 10] = "CLOCK_SGI_CYCLE",
+ [CLOCK_TAI] = "CLOCK_TAI",
};
static void vdso_test_gettimeofday(void)
--
2.50.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 4/5] selftests: vDSO: vdso_test_abi: Test CPUTIME clocks
2025-07-07 14:23 [PATCH 0/5] selftests: vDSO: Clean up vdso_test_abi and drop vdso_test_clock_getres Thomas Weißschuh
` (2 preceding siblings ...)
2025-07-07 14:23 ` [PATCH 3/5] selftests: vDSO: vdso_test_abi: Use explicit indices for name array Thomas Weißschuh
@ 2025-07-07 14:23 ` Thomas Weißschuh
2025-07-07 14:23 ` [PATCH 5/5] selftests: vDSO: Drop vdso_test_clock_getres Thomas Weißschuh
4 siblings, 0 replies; 6+ messages in thread
From: Thomas Weißschuh @ 2025-07-07 14:23 UTC (permalink / raw)
To: Andy Lutomirski, Thomas Gleixner, Vincenzo Frascino, Shuah Khan
Cc: linux-kernel, linux-kselftest, Thomas Weißschuh
As the framework is already there anyways also test the CPUTIME clocks.
Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
---
tools/testing/selftests/vDSO/vdso_test_abi.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/vDSO/vdso_test_abi.c b/tools/testing/selftests/vDSO/vdso_test_abi.c
index 96d0dd3677b357876e92f6d2d962d43d642e9bee..08ed8ddd18edcd5a9f5d8239124833882a0b5dec 100644
--- a/tools/testing/selftests/vDSO/vdso_test_abi.c
+++ b/tools/testing/selftests/vDSO/vdso_test_abi.c
@@ -175,7 +175,7 @@ static inline void vdso_test_clock(clockid_t clock_id)
vdso_test_clock_getres(clock_id);
}
-#define VDSO_TEST_PLAN 16
+#define VDSO_TEST_PLAN 20
int main(int argc, char **argv)
{
@@ -205,6 +205,8 @@ int main(int argc, char **argv)
vdso_test_clock(CLOCK_MONOTONIC);
vdso_test_clock(CLOCK_MONOTONIC_RAW);
vdso_test_clock(CLOCK_MONOTONIC_COARSE);
+ vdso_test_clock(CLOCK_PROCESS_CPUTIME_ID);
+ vdso_test_clock(CLOCK_THREAD_CPUTIME_ID);
vdso_test_time();
--
2.50.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 5/5] selftests: vDSO: Drop vdso_test_clock_getres
2025-07-07 14:23 [PATCH 0/5] selftests: vDSO: Clean up vdso_test_abi and drop vdso_test_clock_getres Thomas Weißschuh
` (3 preceding siblings ...)
2025-07-07 14:23 ` [PATCH 4/5] selftests: vDSO: vdso_test_abi: Test CPUTIME clocks Thomas Weißschuh
@ 2025-07-07 14:23 ` Thomas Weißschuh
4 siblings, 0 replies; 6+ messages in thread
From: Thomas Weißschuh @ 2025-07-07 14:23 UTC (permalink / raw)
To: Andy Lutomirski, Thomas Gleixner, Vincenzo Frascino, Shuah Khan
Cc: linux-kernel, linux-kselftest, Thomas Weißschuh
vdso_test_abi provides the exact same functionality, properly uses
kselftest.h and explicitly calls into the vDSO without relying on the libc.
Drop the pointless testcase.
Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
---
tools/testing/selftests/vDSO/Makefile | 2 -
.../selftests/vDSO/vdso_test_clock_getres.c | 123 ---------------------
2 files changed, 125 deletions(-)
diff --git a/tools/testing/selftests/vDSO/Makefile b/tools/testing/selftests/vDSO/Makefile
index 918a2caa070ebc681a9525f0518afffcf10f5ae3..e361aca22a74dc5c279ab1aa16f308b7e6e85bf1 100644
--- a/tools/testing/selftests/vDSO/Makefile
+++ b/tools/testing/selftests/vDSO/Makefile
@@ -4,7 +4,6 @@ include ../../../scripts/Makefile.arch
TEST_GEN_PROGS := vdso_test_gettimeofday
TEST_GEN_PROGS += vdso_test_getcpu
TEST_GEN_PROGS += vdso_test_abi
-TEST_GEN_PROGS += vdso_test_clock_getres
ifeq ($(ARCH),$(filter $(ARCH),x86 x86_64))
TEST_GEN_PROGS += vdso_standalone_test_x86
endif
@@ -29,7 +28,6 @@ CFLAGS_NOLIBC := -nostdlib -nostdinc -ffreestanding -fno-asynchronous-unwind-tab
$(OUTPUT)/vdso_test_gettimeofday: parse_vdso.c vdso_test_gettimeofday.c
$(OUTPUT)/vdso_test_getcpu: parse_vdso.c vdso_test_getcpu.c
$(OUTPUT)/vdso_test_abi: parse_vdso.c vdso_test_abi.c
-$(OUTPUT)/vdso_test_clock_getres: vdso_test_clock_getres.c
$(OUTPUT)/vdso_standalone_test_x86: vdso_standalone_test_x86.c parse_vdso.c | headers
$(OUTPUT)/vdso_standalone_test_x86: CFLAGS:=$(CFLAGS_NOLIBC) $(CFLAGS)
diff --git a/tools/testing/selftests/vDSO/vdso_test_clock_getres.c b/tools/testing/selftests/vDSO/vdso_test_clock_getres.c
deleted file mode 100644
index b5d5f59f725a703c357dfca91bfe170aaaeb42fa..0000000000000000000000000000000000000000
--- a/tools/testing/selftests/vDSO/vdso_test_clock_getres.c
+++ /dev/null
@@ -1,123 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
-/*
- * vdso_clock_getres.c: Sample code to test clock_getres.
- * Copyright (c) 2019 Arm Ltd.
- *
- * Compile with:
- * gcc -std=gnu99 vdso_clock_getres.c
- *
- * Tested on ARM, ARM64, MIPS32, x86 (32-bit and 64-bit),
- * Power (32-bit and 64-bit), S390x (32-bit and 64-bit).
- * Might work on other architectures.
- */
-
-#define _GNU_SOURCE
-#include <elf.h>
-#include <fcntl.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include <sys/auxv.h>
-#include <sys/mman.h>
-#include <sys/time.h>
-#include <unistd.h>
-#include <sys/syscall.h>
-
-#include "../kselftest.h"
-
-static long syscall_clock_getres(clockid_t _clkid, struct timespec *_ts)
-{
- long ret;
-
- ret = syscall(SYS_clock_getres, _clkid, _ts);
-
- return ret;
-}
-
-const char *vdso_clock_name[12] = {
- "CLOCK_REALTIME",
- "CLOCK_MONOTONIC",
- "CLOCK_PROCESS_CPUTIME_ID",
- "CLOCK_THREAD_CPUTIME_ID",
- "CLOCK_MONOTONIC_RAW",
- "CLOCK_REALTIME_COARSE",
- "CLOCK_MONOTONIC_COARSE",
- "CLOCK_BOOTTIME",
- "CLOCK_REALTIME_ALARM",
- "CLOCK_BOOTTIME_ALARM",
- "CLOCK_SGI_CYCLE",
- "CLOCK_TAI",
-};
-
-/*
- * This function calls clock_getres in vdso and by system call
- * with different values for clock_id.
- *
- * Example of output:
- *
- * clock_id: CLOCK_REALTIME [PASS]
- * clock_id: CLOCK_BOOTTIME [PASS]
- * clock_id: CLOCK_TAI [PASS]
- * clock_id: CLOCK_REALTIME_COARSE [PASS]
- * clock_id: CLOCK_MONOTONIC [PASS]
- * clock_id: CLOCK_MONOTONIC_RAW [PASS]
- * clock_id: CLOCK_MONOTONIC_COARSE [PASS]
- */
-static inline int vdso_test_clock(unsigned int clock_id)
-{
- struct timespec x, y;
-
- printf("clock_id: %s", vdso_clock_name[clock_id]);
- clock_getres(clock_id, &x);
- syscall_clock_getres(clock_id, &y);
-
- if ((x.tv_sec != y.tv_sec) || (x.tv_nsec != y.tv_nsec)) {
- printf(" [FAIL]\n");
- return KSFT_FAIL;
- }
-
- printf(" [PASS]\n");
- return KSFT_PASS;
-}
-
-int main(int argc, char **argv)
-{
- int ret = 0;
-
-#if _POSIX_TIMERS > 0
-
-#ifdef CLOCK_REALTIME
- ret += vdso_test_clock(CLOCK_REALTIME);
-#endif
-
-#ifdef CLOCK_BOOTTIME
- ret += vdso_test_clock(CLOCK_BOOTTIME);
-#endif
-
-#ifdef CLOCK_TAI
- ret += vdso_test_clock(CLOCK_TAI);
-#endif
-
-#ifdef CLOCK_REALTIME_COARSE
- ret += vdso_test_clock(CLOCK_REALTIME_COARSE);
-#endif
-
-#ifdef CLOCK_MONOTONIC
- ret += vdso_test_clock(CLOCK_MONOTONIC);
-#endif
-
-#ifdef CLOCK_MONOTONIC_RAW
- ret += vdso_test_clock(CLOCK_MONOTONIC_RAW);
-#endif
-
-#ifdef CLOCK_MONOTONIC_COARSE
- ret += vdso_test_clock(CLOCK_MONOTONIC_COARSE);
-#endif
-
-#endif
- if (ret > 0)
- return KSFT_FAIL;
-
- return KSFT_PASS;
-}
--
2.50.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
end of thread, other threads:[~2025-07-07 14:23 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-07 14:23 [PATCH 0/5] selftests: vDSO: Clean up vdso_test_abi and drop vdso_test_clock_getres Thomas Weißschuh
2025-07-07 14:23 ` [PATCH 1/5] selftests: vDSO: vdso_test_abi: Use ksft_finished() Thomas Weißschuh
2025-07-07 14:23 ` [PATCH 2/5] selftests: vDSO: vdso_test_abi: Drop clock availability tests Thomas Weißschuh
2025-07-07 14:23 ` [PATCH 3/5] selftests: vDSO: vdso_test_abi: Use explicit indices for name array Thomas Weißschuh
2025-07-07 14:23 ` [PATCH 4/5] selftests: vDSO: vdso_test_abi: Test CPUTIME clocks Thomas Weißschuh
2025-07-07 14:23 ` [PATCH 5/5] selftests: vDSO: Drop vdso_test_clock_getres Thomas Weißschuh
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).