parse_vdso.h 971 B

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