1 // SPDX-License-Identifier: GPL-2.0-only
3 * vdso_test_gettimeofday.c: Sample code to test parse_vdso.c and
5 * Copyright (c) 2014 Andy Lutomirski
8 * gcc -std=gnu99 vdso_test_gettimeofday.c parse_vdso_gettimeofday.c
10 * Tested on x86, 32-bit and 64-bit. It may work on other architectures, too.
19 #include "../kselftest.h"
20 #include "parse_vdso.h"
21 #include "vdso_config.h"
22 #include "vdso_call.h"
24 int main(int argc
, char **argv
)
26 const char *version
= versions
[VDSO_VERSION
];
27 const char **name
= (const char **)&names
[VDSO_NAMES
];
29 unsigned long sysinfo_ehdr
= getauxval(AT_SYSINFO_EHDR
);
31 printf("AT_SYSINFO_EHDR is not present!\n");
35 vdso_init_from_sysinfo_ehdr(getauxval(AT_SYSINFO_EHDR
));
37 /* Find gettimeofday. */
38 typedef long (*gtod_t
)(struct timeval
*tv
, struct timezone
*tz
);
39 gtod_t gtod
= (gtod_t
)vdso_sym(version
, name
[0]);
42 printf("Could not find %s\n", name
[0]);
47 long ret
= VDSO_CALL(gtod
, 2, &tv
, 0);
50 printf("The time is %lld.%06lld\n",
51 (long long)tv
.tv_sec
, (long long)tv
.tv_usec
);
53 printf("%s failed\n", name
[0]);