perf-hooks.h 790 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #ifndef PERF_UTIL_PERF_HOOKS_H
  2. #define PERF_UTIL_PERF_HOOKS_H
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. typedef void (*perf_hook_func_t)(void);
  7. struct perf_hook_desc {
  8. const char * const hook_name;
  9. perf_hook_func_t * const p_hook_func;
  10. };
  11. extern void perf_hooks__invoke(const struct perf_hook_desc *);
  12. extern void perf_hooks__recover(void);
  13. #define PERF_HOOK(name) \
  14. extern struct perf_hook_desc __perf_hook_desc_##name; \
  15. static inline void perf_hooks__invoke_##name(void) \
  16. { \
  17. perf_hooks__invoke(&__perf_hook_desc_##name); \
  18. }
  19. #include "perf-hooks-list.h"
  20. #undef PERF_HOOK
  21. extern int
  22. perf_hooks__set_hook(const char *hook_name,
  23. perf_hook_func_t hook_func);
  24. extern perf_hook_func_t
  25. perf_hooks__get_hook(const char *hook_name);
  26. #ifdef __cplusplus
  27. }
  28. #endif
  29. #endif