36 lines
		
	
	
	
		
			1,017 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			36 lines
		
	
	
	
		
			1,017 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								#ifndef _TRACE_SYSCALL_H
							 | 
						||
| 
								 | 
							
								#define _TRACE_SYSCALL_H
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <asm/ptrace.h>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								 * A syscall entry in the ftrace syscalls array.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @name: name of the syscall
							 | 
						||
| 
								 | 
							
								 * @nb_args: number of parameters it takes
							 | 
						||
| 
								 | 
							
								 * @types: list of types as strings
							 | 
						||
| 
								 | 
							
								 * @args: list of args as strings (args[i] matches types[i])
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								struct syscall_metadata {
							 | 
						||
| 
								 | 
							
									const char	*name;
							 | 
						||
| 
								 | 
							
									int		nb_args;
							 | 
						||
| 
								 | 
							
									const char	**types;
							 | 
						||
| 
								 | 
							
									const char	**args;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef CONFIG_FTRACE_SYSCALLS
							 | 
						||
| 
								 | 
							
								extern void arch_init_ftrace_syscalls(void);
							 | 
						||
| 
								 | 
							
								extern struct syscall_metadata *syscall_nr_to_meta(int nr);
							 | 
						||
| 
								 | 
							
								extern void start_ftrace_syscalls(void);
							 | 
						||
| 
								 | 
							
								extern void stop_ftrace_syscalls(void);
							 | 
						||
| 
								 | 
							
								extern void ftrace_syscall_enter(struct pt_regs *regs);
							 | 
						||
| 
								 | 
							
								extern void ftrace_syscall_exit(struct pt_regs *regs);
							 | 
						||
| 
								 | 
							
								#else
							 | 
						||
| 
								 | 
							
								static inline void start_ftrace_syscalls(void)			{ }
							 | 
						||
| 
								 | 
							
								static inline void stop_ftrace_syscalls(void)			{ }
							 | 
						||
| 
								 | 
							
								static inline void ftrace_syscall_enter(struct pt_regs *regs)	{ }
							 | 
						||
| 
								 | 
							
								static inline void ftrace_syscall_exit(struct pt_regs *regs)	{ }
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif /* _TRACE_SYSCALL_H */
							 |