forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
1009 B
31 lines
1009 B
/* 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); |
|
void vdso_init_from_auxv(void *auxv); |
|
|
|
#endif
|
|
|