ksyms.h 833 B

1234567891011121314151617181920212223
  1. #ifndef _KSYM_H
  2. #define _KSYM_H
  3. #include <linux/kallsyms.h>
  4. #define __KSYM(name) __ksym_##name
  5. #define KSYM(name) \
  6. ({ \
  7. BUG_ON(!__KSYM(name)); \
  8. __KSYM(name); \
  9. })
  10. #define IMPORT_KSYM(name) __typeof(name)* __KSYM(name)
  11. #define IMPORT_KSYM_PROTO(name, ret, ...) ret (*__KSYM(name))(__VA_ARGS__)
  12. #define LOOKUP_KSYM(name) \
  13. do { \
  14. __KSYM(name) = (void*)kallsyms_lookup_name(#name); \
  15. if (!__KSYM(name)) { \
  16. pr_err("Unknown symbol: " #name "\n"); \
  17. return -EINVAL; \
  18. } \
  19. } while (0)
  20. #endif