diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/trace/events/syscalls.h | 70 | ||||
| -rw-r--r-- | include/trace/syscall.h | 17 |
2 files changed, 70 insertions, 17 deletions
diff --git a/include/trace/events/syscalls.h b/include/trace/events/syscalls.h new file mode 100644 index 000000000000..397dff2dbd5a --- /dev/null +++ b/include/trace/events/syscalls.h | |||
| @@ -0,0 +1,70 @@ | |||
| 1 | #undef TRACE_SYSTEM | ||
| 2 | #define TRACE_SYSTEM syscalls | ||
| 3 | |||
| 4 | #if !defined(_TRACE_EVENTS_SYSCALLS_H) || defined(TRACE_HEADER_MULTI_READ) | ||
| 5 | #define _TRACE_EVENTS_SYSCALLS_H | ||
| 6 | |||
| 7 | #include <linux/tracepoint.h> | ||
| 8 | |||
| 9 | #include <asm/ptrace.h> | ||
| 10 | #include <asm/syscall.h> | ||
| 11 | |||
| 12 | |||
| 13 | #ifdef CONFIG_HAVE_SYSCALL_TRACEPOINTS | ||
| 14 | |||
| 15 | extern void syscall_regfunc(void); | ||
| 16 | extern void syscall_unregfunc(void); | ||
| 17 | |||
| 18 | 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, 0, 6, __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 | TRACE_EVENT_FN(sys_exit, | ||
| 43 | |||
| 44 | TP_PROTO(struct pt_regs *regs, long ret), | ||
| 45 | |||
| 46 | TP_ARGS(regs, ret), | ||
| 47 | |||
| 48 | TP_STRUCT__entry( | ||
| 49 | __field( long, id ) | ||
| 50 | __field( long, ret ) | ||
| 51 | ), | ||
| 52 | |||
| 53 | TP_fast_assign( | ||
| 54 | __entry->id = syscall_get_nr(current, regs); | ||
| 55 | __entry->ret = ret; | ||
| 56 | ), | ||
| 57 | |||
| 58 | TP_printk("NR %ld = %ld", | ||
| 59 | __entry->id, __entry->ret), | ||
| 60 | |||
| 61 | syscall_regfunc, syscall_unregfunc | ||
| 62 | ); | ||
| 63 | |||
| 64 | #endif /* CONFIG_HAVE_SYSCALL_TRACEPOINTS */ | ||
| 65 | |||
| 66 | #endif /* _TRACE_EVENTS_SYSCALLS_H */ | ||
| 67 | |||
| 68 | /* This part must be outside protection */ | ||
| 69 | #include <trace/define_trace.h> | ||
| 70 | |||
diff --git a/include/trace/syscall.h b/include/trace/syscall.h index 4e1943001854..5dc283ba5ae0 100644 --- a/include/trace/syscall.h +++ b/include/trace/syscall.h | |||
| @@ -8,23 +8,6 @@ | |||
| 8 | #include <asm/ptrace.h> | 8 | #include <asm/ptrace.h> |
| 9 | 9 | ||
| 10 | 10 | ||
| 11 | #ifdef CONFIG_HAVE_SYSCALL_TRACEPOINTS | ||
| 12 | |||
| 13 | extern void syscall_regfunc(void); | ||
| 14 | extern void syscall_unregfunc(void); | ||
| 15 | |||
| 16 | DECLARE_TRACE(syscall_enter, | ||
| 17 | TP_PROTO(struct pt_regs *regs, long id), | ||
| 18 | TP_ARGS(regs, id) | ||
| 19 | ); | ||
| 20 | |||
| 21 | DECLARE_TRACE(syscall_exit, | ||
| 22 | TP_PROTO(struct pt_regs *regs, long ret), | ||
| 23 | TP_ARGS(regs, ret) | ||
| 24 | ); | ||
| 25 | |||
| 26 | #endif | ||
| 27 | |||
| 28 | /* | 11 | /* |
| 29 | * A syscall entry in the ftrace syscalls array. | 12 | * A syscall entry in the ftrace syscalls array. |
| 30 | * | 13 | * |
