| /* SPDX-License-Identifier: GPL-2.0-only */ | |
| #ifndef PARSE_VDSO_H | |
| #define PARSE_VDSO_H | |
| #include <stdint.h> | |
| /* | |
| * To use this vDSO parser, first call one of the vdso_init_* functions. | |
| * If you've already parsed auxv, then pass the value of AT_SYSINFO_EHDR | |
| * to vdso_init_from_sysinfo_ehdr. Otherwise pass auxv to vdso_init_from_auxv. | |
| * Then call vdso_sym for each symbol you want. For example, to look up | |
| * gettimeofday on x86_64, use: | |
| * | |
| * <some pointer> = vdso_sym("LINUX_2.6", "gettimeofday"); | |
| * or | |
| * <some pointer> = vdso_sym("LINUX_2.6", "__vdso_gettimeofday"); | |
| * | |
| * vdso_sym will return 0 if the symbol doesn't exist or if the init function | |
| * failed or was not called. vdso_sym is a little slow, so its return value | |
| * should be cached. | |
| * | |
| * vdso_sym is threadsafe; the init functions are not. | |
| * | |
| * These are the prototypes: | |
| */ | |
| void *vdso_sym(const char *version, const char *name); | |
| void vdso_init_from_sysinfo_ehdr(uintptr_t base); | |
| #endif |