Skip to content

Commit cd76ca4

Browse files
broonieshuahkh
authored andcommitted
selftests: vdso: Use a header file to prototype parse_vdso API
Both vdso_test_gettimeofday and vdso_standalone_test_x86 use the library in parse_vdso.c but each separately declares the API it offers which is not ideal. Create a header file with prototypes of the functions and use it in both the library and the tests to ensure that the same prototypes are used throughout. Signed-off-by: Mark Brown <[email protected]> Signed-off-by: Shuah Khan <[email protected]>
1 parent babf8a9 commit cd76ca4

File tree

4 files changed

+34
-30
lines changed

4 files changed

+34
-30
lines changed

tools/testing/selftests/vDSO/parse_vdso.c

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -21,29 +21,7 @@
2121
#include <limits.h>
2222
#include <elf.h>
2323

24-
/*
25-
* To use this vDSO parser, first call one of the vdso_init_* functions.
26-
* If you've already parsed auxv, then pass the value of AT_SYSINFO_EHDR
27-
* to vdso_init_from_sysinfo_ehdr. Otherwise pass auxv to vdso_init_from_auxv.
28-
* Then call vdso_sym for each symbol you want. For example, to look up
29-
* gettimeofday on x86_64, use:
30-
*
31-
* <some pointer> = vdso_sym("LINUX_2.6", "gettimeofday");
32-
* or
33-
* <some pointer> = vdso_sym("LINUX_2.6", "__vdso_gettimeofday");
34-
*
35-
* vdso_sym will return 0 if the symbol doesn't exist or if the init function
36-
* failed or was not called. vdso_sym is a little slow, so its return value
37-
* should be cached.
38-
*
39-
* vdso_sym is threadsafe; the init functions are not.
40-
*
41-
* These are the prototypes:
42-
*/
43-
extern void vdso_init_from_auxv(void *auxv);
44-
extern void vdso_init_from_sysinfo_ehdr(uintptr_t base);
45-
extern void *vdso_sym(const char *version, const char *name);
46-
24+
#include "parse_vdso.h"
4725

4826
/* And here's the code. */
4927
#ifndef ELF_BITS
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/* SPDX-License-Identifier: GPL-2.0-only */
2+
3+
#ifndef PARSE_VDSO_H
4+
#define PARSE_VDSO_H
5+
6+
#include <stdint.h>
7+
8+
/*
9+
* To use this vDSO parser, first call one of the vdso_init_* functions.
10+
* If you've already parsed auxv, then pass the value of AT_SYSINFO_EHDR
11+
* to vdso_init_from_sysinfo_ehdr. Otherwise pass auxv to vdso_init_from_auxv.
12+
* Then call vdso_sym for each symbol you want. For example, to look up
13+
* gettimeofday on x86_64, use:
14+
*
15+
* <some pointer> = vdso_sym("LINUX_2.6", "gettimeofday");
16+
* or
17+
* <some pointer> = vdso_sym("LINUX_2.6", "__vdso_gettimeofday");
18+
*
19+
* vdso_sym will return 0 if the symbol doesn't exist or if the init function
20+
* failed or was not called. vdso_sym is a little slow, so its return value
21+
* should be cached.
22+
*
23+
* vdso_sym is threadsafe; the init functions are not.
24+
*
25+
* These are the prototypes:
26+
*/
27+
void *vdso_sym(const char *version, const char *name);
28+
void vdso_init_from_sysinfo_ehdr(uintptr_t base);
29+
void vdso_init_from_auxv(void *auxv);
30+
31+
#endif

tools/testing/selftests/vDSO/vdso_standalone_test_x86.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,7 @@
1616
#include <unistd.h>
1717
#include <stdint.h>
1818

19-
extern void *vdso_sym(const char *version, const char *name);
20-
extern void vdso_init_from_sysinfo_ehdr(uintptr_t base);
21-
extern void vdso_init_from_auxv(void *auxv);
19+
#include "parse_vdso.h"
2220

2321
/* We need a libc functions... */
2422
int strcmp(const char *a, const char *b)

tools/testing/selftests/vDSO/vdso_test_gettimeofday.c

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,7 @@
1717
#include <sys/time.h>
1818

1919
#include "../kselftest.h"
20-
21-
extern void *vdso_sym(const char *version, const char *name);
22-
extern void vdso_init_from_sysinfo_ehdr(uintptr_t base);
23-
extern void vdso_init_from_auxv(void *auxv);
20+
#include "parse_vdso.h"
2421

2522
/*
2623
* ARM64's vDSO exports its gettimeofday() implementation with a different

0 commit comments

Comments
 (0)