Branch data Line data Source code
1 : : /* SPDX-License-Identifier: GPL-2.0 */ 2 : : #ifndef _TRACE_SYSCALL_H 3 : : #define _TRACE_SYSCALL_H 4 : : 5 : : #include <linux/tracepoint.h> 6 : : #include <linux/unistd.h> 7 : : #include <linux/trace_events.h> 8 : : #include <linux/thread_info.h> 9 : : 10 : : #include <asm/ptrace.h> 11 : : 12 : : 13 : : /* 14 : : * A syscall entry in the ftrace syscalls array. 15 : : * 16 : : * @name: name of the syscall 17 : : * @syscall_nr: number of the syscall 18 : : * @nb_args: number of parameters it takes 19 : : * @types: list of types as strings 20 : : * @args: list of args as strings (args[i] matches types[i]) 21 : : * @enter_fields: list of fields for syscall_enter trace event 22 : : * @enter_event: associated syscall_enter trace event 23 : : * @exit_event: associated syscall_exit trace event 24 : : */ 25 : : struct syscall_metadata { 26 : : const char *name; 27 : : int syscall_nr; 28 : : int nb_args; 29 : : const char **types; 30 : : const char **args; 31 : : struct list_head enter_fields; 32 : : 33 : : struct trace_event_call *enter_event; 34 : : struct trace_event_call *exit_event; 35 : : }; 36 : : 37 : : #if defined(CONFIG_TRACEPOINTS) && defined(CONFIG_HAVE_SYSCALL_TRACEPOINTS) 38 : 14073 : static inline void syscall_tracepoint_update(struct task_struct *p) 39 : : { 40 [ - + ]: 14073 : if (test_thread_flag(TIF_SYSCALL_TRACEPOINT)) 41 : 0 : set_tsk_thread_flag(p, TIF_SYSCALL_TRACEPOINT); 42 : : else 43 : 14073 : clear_tsk_thread_flag(p, TIF_SYSCALL_TRACEPOINT); 44 : 14073 : } 45 : : #else 46 : : static inline void syscall_tracepoint_update(struct task_struct *p) 47 : : { 48 : : } 49 : : #endif 50 : : 51 : : #endif /* _TRACE_SYSCALL_H */