Branch data Line data Source code
1 : : /* SPDX-License-Identifier: GPL-2.0 */ 2 : : #undef TRACE_SYSTEM 3 : : #define TRACE_SYSTEM raw_syscalls 4 : : #undef TRACE_INCLUDE_FILE 5 : : #define TRACE_INCLUDE_FILE syscalls 6 : : 7 : : #if !defined(_TRACE_EVENTS_SYSCALLS_H) || defined(TRACE_HEADER_MULTI_READ) 8 : : #define _TRACE_EVENTS_SYSCALLS_H 9 : : 10 : : #include <linux/tracepoint.h> 11 : : 12 : : #include <asm/ptrace.h> 13 : : #include <asm/syscall.h> 14 : : 15 : : 16 : : #ifdef CONFIG_HAVE_SYSCALL_TRACEPOINTS 17 : : 18 : 3 : TRACE_EVENT_FN(sys_enter, 19 : : 20 : : TP_PROTO(struct pt_regs *regs, long id), 21 : : 22 : : TP_ARGS(regs, id), 23 : : 24 : : TP_STRUCT__entry( 25 : : __field( long, id ) 26 : : __array( unsigned long, args, 6 ) 27 : : ), 28 : : 29 : : TP_fast_assign( 30 : : __entry->id = id; 31 : : syscall_get_arguments(current, regs, __entry->args); 32 : : ), 33 : : 34 : : TP_printk("NR %ld (%lx, %lx, %lx, %lx, %lx, %lx)", 35 : : __entry->id, 36 : : __entry->args[0], __entry->args[1], __entry->args[2], 37 : : __entry->args[3], __entry->args[4], __entry->args[5]), 38 : : 39 : : syscall_regfunc, syscall_unregfunc 40 : : ); 41 : : 42 : 3 : TRACE_EVENT_FLAGS(sys_enter, TRACE_EVENT_FL_CAP_ANY) 43 : : 44 : 3 : TRACE_EVENT_FN(sys_exit, 45 : : 46 : : TP_PROTO(struct pt_regs *regs, long ret), 47 : : 48 : : TP_ARGS(regs, ret), 49 : : 50 : : TP_STRUCT__entry( 51 : : __field( long, id ) 52 : : __field( long, ret ) 53 : : ), 54 : : 55 : : TP_fast_assign( 56 : : __entry->id = syscall_get_nr(current, regs); 57 : : __entry->ret = ret; 58 : : ), 59 : : 60 : : TP_printk("NR %ld = %ld", 61 : : __entry->id, __entry->ret), 62 : : 63 : : syscall_regfunc, syscall_unregfunc 64 : : ); 65 : : 66 : 3 : TRACE_EVENT_FLAGS(sys_exit, TRACE_EVENT_FL_CAP_ANY) 67 : : 68 : : #endif /* CONFIG_HAVE_SYSCALL_TRACEPOINTS */ 69 : : 70 : : #endif /* _TRACE_EVENTS_SYSCALLS_H */ 71 : : 72 : : /* This part must be outside protection */ 73 : : #include <trace/define_trace.h> 74 : :