diff mbox series

selftests: timers: Fix clock_adjtime for newer 32-bit arches

Message ID 20240918004731.3295870-1-raj.khem@gmail.com (mailing list archive)
State New
Headers show
Series selftests: timers: Fix clock_adjtime for newer 32-bit arches | expand

Commit Message

Khem Raj Sept. 18, 2024, 12:47 a.m. UTC
Newer 32-bit architectures e.g. riscv32 are using 64-bit time_t
from get go, they have not wired __NR_clock_adjtime at all
valid-adjtimex testcase fails to compile on such architectures.
if this condition is found then use 64-bit adjtime syscall

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Cc: John Stultz <jstultz@google.com>
Cc: Shuah Khan <shuah@kernel.org>
---
 tools/testing/selftests/timers/valid-adjtimex.c | 4 ++++
 1 file changed, 4 insertions(+)

Comments

John Stultz Sept. 18, 2024, 8:58 a.m. UTC | #1
On Wed, Sep 18, 2024 at 2:47 AM Khem Raj <raj.khem@gmail.com> wrote:
>
> Newer 32-bit architectures e.g. riscv32 are using 64-bit time_t
> from get go, they have not wired __NR_clock_adjtime at all
> valid-adjtimex testcase fails to compile on such architectures.
> if this condition is found then use 64-bit adjtime syscall
>

No major objections here. Though I'm feeling a little forgetful as to
why the test is calling the syscall directly instead of going through
libc.
I suspect it's likely due to the test being written prior to the libc
implementation being common?

So I wonder if a better fix would be just to drop the local
clock_adjtime implementation here, as I'm sure the libc has similar
logic to what's being added here?

thanks
-john
diff mbox series

Patch

diff --git a/tools/testing/selftests/timers/valid-adjtimex.c b/tools/testing/selftests/timers/valid-adjtimex.c
index d500884801d8..ff4ff8b1d127 100644
--- a/tools/testing/selftests/timers/valid-adjtimex.c
+++ b/tools/testing/selftests/timers/valid-adjtimex.c
@@ -39,7 +39,11 @@ 
 #include <sys/syscall.h>
 int clock_adjtime(clockid_t id, struct timex *tx)
 {
+#if !defined(__NR_clock_adjtime) && defined(__NR_clock_adjtime64)
+	return syscall(__NR_clock_adjtime64, id, tx);
+#else
 	return syscall(__NR_clock_adjtime, id, tx);
+#endif
 }