From: "Arnd Bergmann" <arnd@arndb.de>
To: "Thomas Weißschuh" <thomas.weissschuh@linutronix.de>,
"Andy Lutomirski" <luto@kernel.org>,
"Thomas Gleixner" <tglx@linutronix.de>,
"Vincenzo Frascino" <vincenzo.frascino@arm.com>,
shuah <shuah@kernel.org>
Cc: linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org
Subject: Re: [PATCH v2 03/14] selftests: vDSO: Introduce vdso_syscalls.h
Date: Fri, 14 Nov 2025 09:13:02 +0100 [thread overview]
Message-ID: <5826549e-88a8-429c-ad42-46aeada9d21b@app.fastmail.com> (raw)
In-Reply-To: <20251113-vdso-test-types-v2-3-0427eff70d08@linutronix.de>
On Thu, Nov 13, 2025, at 16:30, Thomas Weißschuh wrote:
> The vDSO selftests use raw system call wrapper to validate the
> correctness of the vDSO implementation. The exactly available system
> calls differ between architectures and kernel configurations.
> Raw system calls should not use libc types as these are not necessarily
> compatible.
>
> Introduce a helper header which uses the correct types and fallbacks.
After I looked at how these are used in patch 8, I think it's
much easier to just always use the same types as the kernel interfaces
here and skip the type mangling entirely:
> +static inline
> +int sys_clock_getres(__kernel_clockid_t clock, struct
> __kernel_timespec *ts)
> +{
> +#ifdef __NR_clock_getres_time64
> + return syscall(__NR_clock_getres_time64, clock, ts);
> +#else
> + ASSERT_TIMESPEC_COMPATIBLE(typeof(*ts), struct __kernel_old_timespec);
> + return syscall(__NR_clock_getres, clock, ts);
> +#endif
> +}
__NR_clock_getres and vdso_clock_getres() both always return a
__kernel_old_timespec, so I now think it's best to return that from
sys_clock_getres() without the __NR_clock_getres_time64 alternative
here and not worry about whether that is a 32-bit or 64-bit type,
I should have thought this through better in my comments to the
previous version.
In kernels without CONFIG_COMPAT_32BIT_TIME, we currently leave
out the clock_getres/clock_gettime/gettimeofday/time syscalls,
but still provide the vdso interfaces. For consistency we should
probably leave out both syscall and vdso in that configuration,
and then we also don't need to compare the vdso_getres result
against sys_getres_time64.
> +static inline
> +int sys_clock_gettime(__kernel_clockid_t clock, struct
> __kernel_timespec *ts)
> +{
> +#ifdef __NR_clock_gettime64
> + return syscall(__NR_clock_gettime64, clock, ts);
> +#else
> + ASSERT_TIMESPEC_COMPATIBLE(typeof(*ts), struct __kernel_old_timespec);
> + return syscall(__NR_clock_gettime, clock, ts);
> +#endif
> +}
Same here.
> +static inline
> +int sys_gettimeofday(struct __kernel_old_timeval *tv, struct
> kernel_timezone *tz)
> +{
> +#ifdef __NR_gettimeofday
> + return syscall(__NR_gettimeofday, tv, tz);
> +#else
> + /* Architectures with vdso_gettimeofday() also have __NR_gettimeofday
> */
> + errno = ENOSYS;
> + return -1;
> +#endif
> +}
> +
> +static inline
> +__kernel_old_time_t sys_time(__kernel_old_time_t *tloc)
> +{
> +#ifdef __NR_time
> + return syscall(__NR_time, tloc);
> +#else
> + /* Architectures with vdso_time() also have __NR_time */
> + errno = ENOSYS;
> + return -1;
> +#endif
> +}
These both look good to me.
Arnd
next prev parent reply other threads:[~2025-11-14 8:13 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-13 15:30 [PATCH v2 00/14] selftests: vDSO: Stop using libc types for vDSO calls Thomas Weißschuh
2025-11-13 15:30 ` [PATCH v2 01/14] Revert "selftests: vDSO: parse_vdso: Use UAPI headers instead of libc headers" Thomas Weißschuh
2025-11-13 15:30 ` [PATCH v2 02/14] selftests: vDSO: Introduce vdso_types.h Thomas Weißschuh
2025-11-13 15:30 ` [PATCH v2 03/14] selftests: vDSO: Introduce vdso_syscalls.h Thomas Weißschuh
2025-11-14 8:13 ` Arnd Bergmann [this message]
2025-11-14 8:48 ` Thomas Weißschuh
2025-11-14 9:16 ` Arnd Bergmann
2025-11-14 10:02 ` Thomas Weißschuh
2025-11-14 10:40 ` Arnd Bergmann
2025-11-18 14:22 ` Thomas Weißschuh
2025-11-18 21:40 ` Arnd Bergmann
2025-11-20 13:27 ` Thomas Weißschuh
2025-11-13 15:30 ` [PATCH v2 04/14] selftests: vDSO: vdso_test_gettimeofday: Remove nolibc checks Thomas Weißschuh
2025-11-13 15:30 ` [PATCH v2 05/14] selftests: vDSO: vdso_test_gettimeofday: Use types from vdso_types.h Thomas Weißschuh
2025-11-13 15:30 ` [PATCH v2 06/14] selftests: vDSO: vdso_test_abi: " Thomas Weißschuh
2025-11-13 15:30 ` [PATCH v2 07/14] selftests: vDSO: vdso_test_abi: Validate return value of syscall(clock_getres) Thomas Weißschuh
2025-11-13 15:30 ` [PATCH v2 08/14] selftests: vDSO: vdso_test_abi: Use system call wrappers from vdso_syscalls.h Thomas Weißschuh
2025-11-13 15:30 ` [PATCH v2 09/14] selftests: vDSO: vdso_test_correctness: Drop SYS_getcpu fallbacks Thomas Weißschuh
2025-11-13 15:30 ` [PATCH v2 10/14] selftests: vDSO: vdso_test_correctness: Make ts_leq() and tv_leq() more generic Thomas Weißschuh
2025-11-13 15:30 ` [PATCH v2 11/14] selftests: vDSO: vdso_test_correctness: Use types from vdso_types.h Thomas Weißschuh
2025-11-13 15:30 ` [PATCH v2 12/14] selftests: vDSO: vdso_test_correctness: Use system call wrappers from vdso_syscalls.h Thomas Weißschuh
2025-11-14 8:01 ` Arnd Bergmann
2025-11-13 15:30 ` [PATCH v2 13/14] selftests: vDSO: vdso_test_correctness: Use facilities from parse_vdso.c Thomas Weißschuh
2025-11-13 15:30 ` [PATCH v2 14/14] selftests: vDSO: vdso_test_correctness: Add a test for time() Thomas Weißschuh
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5826549e-88a8-429c-ad42-46aeada9d21b@app.fastmail.com \
--to=arnd@arndb.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=luto@kernel.org \
--cc=shuah@kernel.org \
--cc=tglx@linutronix.de \
--cc=thomas.weissschuh@linutronix.de \
--cc=vincenzo.frascino@arm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®