selftests: vdso_test: support ARM64 targets
Subsystems (2)
PATCH v2 1/1 selftests: vdso_test: support ARM64 targets
ARM64's vDSO exports its gettimeofday() implementation with a different name (__kernel_gettimeofday) and version (LINUX_2.6.39) from other architectures. Add a corresponding special-case to vdso_test.
Signed-off-by Greg Hackmann <[email protected]>
---
Changes since v1:
* Moved definitions outside main()
* Added a comment explaining the special case
tools/testing/selftests/vDSO/vdso_test.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-)
tools/testing/selftests/vDSO/vdso_test.c +16 -3
@@ -19,6 +19,19 @@ extern void *vdso_sym(const char *version, const char *name);extern void vdso_init_from_sysinfo_ehdr (uintptr_t base);extern void vdso_init_from_auxv (void *auxv); +/* +* ARM64's vDSO exports its gettimeofday() implementation with a different +* name and version from other architectures, so we need to handle it as +* a special case. +*/ +#if defined(__aarch64__) +const char *version ="LINUX_2.6.39" ; +const char *name ="__kernel_gettimeofday" ; +#else +const char *version ="LINUX_2.6" ; +const char *name ="__vdso_gettimeofday" ; +#endif +int main (int argc,char **argv) {unsigned long sysinfo_ehdr =getauxval (AT_SYSINFO_EHDR );
@@ -31,10 +44,10 @@ int main(int argc, char **argv)/* Find gettimeofday. */ typedef long (*gtod_t )(struct timeval *tv,struct timezone *tz); -gtod_t gtod = (gtod_t )vdso_sym ("LINUX_2.6" ,"__vdso_gettimeofday" ); +gtod_t gtod = (gtod_t )vdso_sym (version, name);if (!gtod) { -printf ("Could not find __vdso_gettimeofday\n" ); +printf ("Could not find %s\n" , name);return 1 ; }
@@ -45,7 +58,7 @@ int main(int argc, char **argv)printf ("The time is %lld.%06lld\n" , (long long )tv.tv_sec, (long long )tv.tv_usec); }else { -printf ("__vdso_gettimeofday failed\n" ); +printf ("%s failed\n" , name); }return 0 ;
Signature · 1 line
2.15.0.403.gc27cc4dac6-goog
Shuah Khan
maintainerQuoted 11 lines · Greg Hackmann
ARM64's vDSO exports its
gettimeofday()implementation with a different name (__kernel_gettimeofday) and version (LINUX_2.6.39) from other architectures. Add a corresponding special-case tovdso_test.Signed-off-by Greg Hackmann <[email protected]>---
Changes since v1:
* Moved definitions outsidemain()
* Added a comment explaining the special case
That was fast. Applied to linux-kselftest next for 4.15-rc1
thanks,
-- Shuah