aboutsummaryrefslogtreecommitdiffstats
path: root/include/trace/ftrace.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/trace/ftrace.h')
-rw-r--r--include/trace/ftrace.h16
1 files changed, 13 insertions, 3 deletions
diff --git a/include/trace/ftrace.h b/include/trace/ftrace.h
index 139b5067345b..41bf65f04dd9 100644
--- a/include/trace/ftrace.h
+++ b/include/trace/ftrace.h
@@ -263,6 +263,14 @@
263#undef __print_hex 263#undef __print_hex
264#define __print_hex(buf, buf_len) ftrace_print_hex_seq(p, buf, buf_len) 264#define __print_hex(buf, buf_len) ftrace_print_hex_seq(p, buf, buf_len)
265 265
266#undef __print_array
267#define __print_array(array, count, el_size) \
268 ({ \
269 BUILD_BUG_ON(el_size != 1 && el_size != 2 && \
270 el_size != 4 && el_size != 8); \
271 ftrace_print_array_seq(p, array, count, el_size); \
272 })
273
266#undef DECLARE_EVENT_CLASS 274#undef DECLARE_EVENT_CLASS
267#define DECLARE_EVENT_CLASS(call, proto, args, tstruct, assign, print) \ 275#define DECLARE_EVENT_CLASS(call, proto, args, tstruct, assign, print) \
268static notrace enum print_line_t \ 276static notrace enum print_line_t \
@@ -674,6 +682,7 @@ static inline void ftrace_test_probe_##call(void) \
674#undef __get_dynamic_array_len 682#undef __get_dynamic_array_len
675#undef __get_str 683#undef __get_str
676#undef __get_bitmask 684#undef __get_bitmask
685#undef __print_array
677 686
678#undef TP_printk 687#undef TP_printk
679#define TP_printk(fmt, args...) "\"" fmt "\", " __stringify(args) 688#define TP_printk(fmt, args...) "\"" fmt "\", " __stringify(args)
@@ -763,7 +772,7 @@ perf_trace_##call(void *__data, proto) \
763 struct ftrace_event_call *event_call = __data; \ 772 struct ftrace_event_call *event_call = __data; \
764 struct ftrace_data_offsets_##call __maybe_unused __data_offsets;\ 773 struct ftrace_data_offsets_##call __maybe_unused __data_offsets;\
765 struct ftrace_raw_##call *entry; \ 774 struct ftrace_raw_##call *entry; \
766 struct pt_regs __regs; \ 775 struct pt_regs *__regs; \
767 u64 __addr = 0, __count = 1; \ 776 u64 __addr = 0, __count = 1; \
768 struct task_struct *__task = NULL; \ 777 struct task_struct *__task = NULL; \
769 struct hlist_head *head; \ 778 struct hlist_head *head; \
@@ -782,18 +791,19 @@ perf_trace_##call(void *__data, proto) \
782 sizeof(u64)); \ 791 sizeof(u64)); \
783 __entry_size -= sizeof(u32); \ 792 __entry_size -= sizeof(u32); \
784 \ 793 \
785 perf_fetch_caller_regs(&__regs); \
786 entry = perf_trace_buf_prepare(__entry_size, \ 794 entry = perf_trace_buf_prepare(__entry_size, \
787 event_call->event.type, &__regs, &rctx); \ 795 event_call->event.type, &__regs, &rctx); \
788 if (!entry) \ 796 if (!entry) \
789 return; \ 797 return; \
790 \ 798 \
799 perf_fetch_caller_regs(__regs); \
800 \
791 tstruct \ 801 tstruct \
792 \ 802 \
793 { assign; } \ 803 { assign; } \
794 \ 804 \
795 perf_trace_buf_submit(entry, __entry_size, rctx, __addr, \ 805 perf_trace_buf_submit(entry, __entry_size, rctx, __addr, \
796 __count, &__regs, head, __task); \ 806 __count, __regs, head, __task); \
797} 807}
798 808
799/* 809/*