The libc types are not necessarily compatible with the vDSO functions.
Use the dedicated types from vdso_types.h instead.
Signed-off-by: Thomas Weißschuh thomas.weissschuh@linutronix.de --- tools/testing/selftests/vDSO/vdso_test_abi.c | 31 ++++++++-------------------- 1 file changed, 9 insertions(+), 22 deletions(-)
diff --git a/tools/testing/selftests/vDSO/vdso_test_abi.c b/tools/testing/selftests/vDSO/vdso_test_abi.c index 238d609a457a281d802734b40d6a2c35ba7f6d72..bb5a5534ae7e8a46d7e68a561684c29a752b866d 100644 --- a/tools/testing/selftests/vDSO/vdso_test_abi.c +++ b/tools/testing/selftests/vDSO/vdso_test_abi.c @@ -11,9 +11,7 @@ #include <stdint.h> #include <elf.h> #include <stdio.h> -#include <time.h> #include <sys/auxv.h> -#include <sys/time.h> #define _GNU_SOURCE #include <unistd.h> #include <sys/syscall.h> @@ -21,23 +19,12 @@ #include "../kselftest.h" #include "vdso_config.h" #include "vdso_call.h" +#include "vdso_types.h" #include "parse_vdso.h"
static const char *version; static const char **name;
-/* The same as struct __kernel_timespec */ -struct vdso_timespec64 { - uint64_t tv_sec; - uint64_t tv_nsec; -}; - -typedef long (*vdso_gettimeofday_t)(struct timeval *tv, struct timezone *tz); -typedef long (*vdso_clock_gettime_t)(clockid_t clk_id, struct timespec *ts); -typedef long (*vdso_clock_gettime64_t)(clockid_t clk_id, struct vdso_timespec64 *ts); -typedef long (*vdso_clock_getres_t)(clockid_t clk_id, struct timespec *ts); -typedef time_t (*vdso_time_t)(time_t *t); - static const char * const vdso_clock_name[] = { [CLOCK_REALTIME] = "CLOCK_REALTIME", [CLOCK_MONOTONIC] = "CLOCK_MONOTONIC", @@ -65,7 +52,7 @@ static void vdso_test_gettimeofday(void) return; }
- struct timeval tv; + struct __kernel_old_timeval tv; long ret = VDSO_CALL(vdso_gettimeofday, 2, &tv, 0);
if (ret == 0) { @@ -77,7 +64,7 @@ static void vdso_test_gettimeofday(void) } }
-static void vdso_test_clock_gettime64(clockid_t clk_id) +static void vdso_test_clock_gettime64(__kernel_clockid_t clk_id) { /* Find clock_gettime64. */ vdso_clock_gettime64_t vdso_clock_gettime64 = @@ -90,7 +77,7 @@ static void vdso_test_clock_gettime64(clockid_t clk_id) return; }
- struct vdso_timespec64 ts; + struct __kernel_timespec ts; long ret = VDSO_CALL(vdso_clock_gettime64, 2, clk_id, &ts);
if (ret == 0) { @@ -104,7 +91,7 @@ static void vdso_test_clock_gettime64(clockid_t clk_id) } }
-static void vdso_test_clock_gettime(clockid_t clk_id) +static void vdso_test_clock_gettime(__kernel_clockid_t clk_id) { /* Find clock_gettime. */ vdso_clock_gettime_t vdso_clock_gettime = @@ -117,7 +104,7 @@ static void vdso_test_clock_gettime(clockid_t clk_id) return; }
- struct timespec ts; + struct __kernel_old_timespec ts; long ret = VDSO_CALL(vdso_clock_gettime, 2, clk_id, &ts);
if (ret == 0) { @@ -154,7 +141,7 @@ static void vdso_test_time(void) } }
-static void vdso_test_clock_getres(clockid_t clk_id) +static void vdso_test_clock_getres(__kernel_clockid_t clk_id) { int clock_getres_fail = 0;
@@ -169,7 +156,7 @@ static void vdso_test_clock_getres(clockid_t clk_id) return; }
- struct timespec ts, sys_ts; + struct __kernel_old_timespec ts, sys_ts; long ret = VDSO_CALL(vdso_clock_getres, 2, clk_id, &ts);
if (ret == 0) { @@ -200,7 +187,7 @@ static void vdso_test_clock_getres(clockid_t clk_id) * This function calls vdso_test_clock_gettime and vdso_test_clock_getres * with different values for clock_id. */ -static inline void vdso_test_clock(clockid_t clock_id) +static inline void vdso_test_clock(__kernel_clockid_t clock_id) { ksft_print_msg("clock_id: %s\n", vdso_clock_name[clock_id]);