41 lines
		
	
	
		
			874 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			874 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0 */
 | |
| #ifndef PERF_UTIL_PERF_HOOKS_H
 | |
| #define PERF_UTIL_PERF_HOOKS_H
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| 
 | |
| typedef void (*perf_hook_func_t)(void *ctx);
 | |
| struct perf_hook_desc {
 | |
| 	const char * const hook_name;
 | |
| 	perf_hook_func_t * const p_hook_func;
 | |
| 	void *hook_ctx;
 | |
| };
 | |
| 
 | |
| extern void perf_hooks__invoke(const struct perf_hook_desc *);
 | |
| extern void perf_hooks__recover(void);
 | |
| 
 | |
| #define PERF_HOOK(name)					\
 | |
| extern struct perf_hook_desc __perf_hook_desc_##name;	\
 | |
| static inline void perf_hooks__invoke_##name(void)	\
 | |
| { 							\
 | |
| 	perf_hooks__invoke(&__perf_hook_desc_##name);	\
 | |
| }
 | |
| 
 | |
| #include "perf-hooks-list.h"
 | |
| #undef PERF_HOOK
 | |
| 
 | |
| extern int
 | |
| perf_hooks__set_hook(const char *hook_name,
 | |
| 		     perf_hook_func_t hook_func,
 | |
| 		     void *hook_ctx);
 | |
| 
 | |
| extern perf_hook_func_t
 | |
| perf_hooks__get_hook(const char *hook_name);
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif
 | |
| #endif
 |