Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756459AbZLISFL (ORCPT ); Wed, 9 Dec 2009 13:05:11 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753809AbZLISFF (ORCPT ); Wed, 9 Dec 2009 13:05:05 -0500 Received: from mx1.redhat.com ([209.132.183.28]:59555 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752210AbZLISFD (ORCPT ); Wed, 9 Dec 2009 13:05:03 -0500 Message-ID: <4B1FE6D4.5060608@redhat.com> Date: Wed, 09 Dec 2009 13:05:08 -0500 From: Masami Hiramatsu User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.4pre) Gecko/20091014 Fedora/3.0-2.8.b4.fc11 Thunderbird/3.0b4 MIME-Version: 1.0 To: Lai Jiangshan CC: Ingo Molnar , Steven Rostedt , Frederic Weisbecker , Jason Baron , LKML Subject: Re: [PATCH 10/10] tracing: delete ->show_format() References: <4B1F4EB6.60408@cn.fujitsu.com> In-Reply-To: <4B1F4EB6.60408@cn.fujitsu.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 19471 Lines: 583 Lai Jiangshan wrote: > > remove ->show_format() and corresponding codes. > > Signed-off-by: Lai Jiangshan Looks good for me, at least trace_kprobe.c. Acked-by: Masami Hiramatsu Thank you! > --- > include/linux/ftrace_event.h | 2 > include/linux/syscalls.h | 2 > include/trace/ftrace.h | 133 +----------------------------------------- > include/trace/syscall.h | 4 - > kernel/trace/trace_events.c | 31 --------- > kernel/trace/trace_export.c | 73 ----------------------- > kernel/trace/trace_kprobe.c | 78 ------------------------ > kernel/trace/trace_syscalls.c | 66 -------------------- > 8 files changed, 6 insertions(+), 383 deletions(-) > diff --git a/include/linux/ftrace_event.h b/include/linux/ftrace_event.h > index 58db567..e44f9a3 100644 > --- a/include/linux/ftrace_event.h > +++ b/include/linux/ftrace_event.h > @@ -122,8 +122,6 @@ struct ftrace_event_call { > int id; > const char *print_fmt; > int (*raw_init)(struct ftrace_event_call *); > - int (*show_format)(struct ftrace_event_call *, > - struct trace_seq *); > int (*define_fields)(struct ftrace_event_call *); > struct list_head fields; > int filter_active; > diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h > index bee1d41..6b5985b 100644 > --- a/include/linux/syscalls.h > +++ b/include/linux/syscalls.h > @@ -145,7 +145,6 @@ struct perf_event_attr; > .system = "syscalls", \ > .event =&enter_syscall_print_##sname, \ > .raw_init = init_syscall_trace, \ > - .show_format = syscall_enter_format, \ > .define_fields = syscall_enter_define_fields, \ > .regfunc = reg_event_syscall_enter, \ > .unregfunc = unreg_event_syscall_enter, \ > @@ -167,7 +166,6 @@ struct perf_event_attr; > .system = "syscalls", \ > .event =&exit_syscall_print_##sname, \ > .raw_init = init_syscall_trace, \ > - .show_format = syscall_exit_format, \ > .define_fields = syscall_exit_define_fields, \ > .regfunc = reg_event_syscall_exit, \ > .unregfunc = unreg_event_syscall_exit, \ > diff --git a/include/trace/ftrace.h b/include/trace/ftrace.h > index eb63c97..cf39e57 100644 > --- a/include/trace/ftrace.h > +++ b/include/trace/ftrace.h > @@ -131,130 +131,6 @@ > #include TRACE_INCLUDE(TRACE_INCLUDE_FILE) > > /* > - * Setup the showing format of trace point. > - * > - * int > - * ftrace_format_##call(struct trace_seq *s) > - * { > - * struct ftrace_raw_##call field; > - * int ret; > - * > - * ret = trace_seq_printf(s, #type " " #item ";" > - * " offset:%u; size:%u;\n", > - * offsetof(struct ftrace_raw_##call, item), > - * sizeof(field.type)); > - * > - * } > - */ > - > -#undef TP_STRUCT__entry > -#define TP_STRUCT__entry(args...) args > - > -#undef __field > -#define __field(type, item) \ > - ret = trace_seq_printf(s, "\tfield:" #type " " #item ";\t" \ > - "offset:%u;\tsize:%u;\tsigned:%u;\n", \ > - (unsigned int)offsetof(typeof(field), item), \ > - (unsigned int)sizeof(field.item), \ > - (unsigned int)is_signed_type(type)); \ > - if (!ret) \ > - return 0; > - > -#undef __field_ext > -#define __field_ext(type, item, filter_type) __field(type, item) > - > -#undef __array > -#define __array(type, item, len) \ > - ret = trace_seq_printf(s, "\tfield:" #type " " #item "[" #len "];\t" \ > - "offset:%u;\tsize:%u;\tsigned:%u;\n", \ > - (unsigned int)offsetof(typeof(field), item), \ > - (unsigned int)sizeof(field.item), \ > - (unsigned int)is_signed_type(type)); \ > - if (!ret) \ > - return 0; > - > -#undef __dynamic_array > -#define __dynamic_array(type, item, len) \ > - ret = trace_seq_printf(s, "\tfield:__data_loc " #type "[] " #item ";\t"\ > - "offset:%u;\tsize:%u;\tsigned:%u;\n", \ > - (unsigned int)offsetof(typeof(field), \ > - __data_loc_##item), \ > - (unsigned int)sizeof(field.__data_loc_##item), \ > - (unsigned int)is_signed_type(type)); \ > - if (!ret) \ > - return 0; > - > -#undef __string > -#define __string(item, src) __dynamic_array(char, item, -1) > - > -#undef __entry > -#define __entry REC > - > -#undef __print_symbolic > -#undef __get_dynamic_array > -#undef __get_str > - > -#undef TP_printk > -#define TP_printk(fmt, args...) "\"%s\", %s\n", fmt, __stringify(args) > - > -#undef TP_fast_assign > -#define TP_fast_assign(args...) args > - > -#undef TP_perf_assign > -#define TP_perf_assign(args...) > - > -#undef DECLARE_EVENT_CLASS > -#define DECLARE_EVENT_CLASS(call, proto, args, tstruct, func, print) \ > -static int \ > -ftrace_format_setup_##call(struct ftrace_event_call *unused, \ > - struct trace_seq *s) \ > -{ \ > - struct ftrace_raw_##call field __attribute__((unused)); \ > - int ret = 0; \ > - \ > - tstruct; \ > - \ > - return ret; \ > -} \ > - \ > -static int \ > -ftrace_format_##call(struct ftrace_event_call *unused, \ > - struct trace_seq *s) \ > -{ \ > - int ret = 0; \ > - \ > - ret = ftrace_format_setup_##call(unused, s); \ > - if (!ret) \ > - return ret; \ > - \ > - ret = trace_seq_printf(s, "\nprint fmt: " print); \ > - \ > - return ret; \ > -} > - > -#undef DEFINE_EVENT > -#define DEFINE_EVENT(template, name, proto, args) > - > -#undef DEFINE_EVENT_PRINT > -#define DEFINE_EVENT_PRINT(template, name, proto, args, print) \ > -static int \ > -ftrace_format_##name(struct ftrace_event_call *unused, \ > - struct trace_seq *s) \ > -{ \ > - int ret = 0; \ > - \ > - ret = ftrace_format_setup_##template(unused, s); \ > - if (!ret) \ > - return ret; \ > - \ > - trace_seq_printf(s, "\nprint fmt: " print); \ > - \ > - return ret; \ > -} > - > -#include TRACE_INCLUDE(TRACE_INCLUDE_FILE) > - > -/* > * Stage 3 of the trace events. > * > * Override the macros in to include the following: > @@ -622,7 +498,6 @@ static void ftrace_profile_disable_##name(struct ftrace_event_call *unused)\ > * .raw_init = trace_event_raw_init, > * .regfunc = ftrace_reg_event_, > * .unregfunc = ftrace_unreg_event_, > - * .show_format = ftrace_format_, > * } > * > */ > @@ -658,6 +533,12 @@ static void ftrace_profile_disable_##name(struct ftrace_event_call *unused)\ > #define __assign_str(dst, src) \ > strcpy(__get_str(dst), src); > > +#undef TP_fast_assign > +#define TP_fast_assign(args...) args > + > +#undef TP_perf_assign > +#define TP_perf_assign(args...) > + > #undef DECLARE_EVENT_CLASS > #define DECLARE_EVENT_CLASS(call, proto, args, tstruct, assign, print) \ > \ > @@ -751,7 +632,6 @@ __attribute__((section("_ftrace_events"))) event_##call = { \ > .regfunc = ftrace_raw_reg_event_##call, \ > .unregfunc = ftrace_raw_unreg_event_##call, \ > .print_fmt = print_fmt_##template, \ > - .show_format = ftrace_format_##template, \ > .define_fields = ftrace_define_fields_##template, \ > _TRACE_PROFILE_INIT(call) \ > } > @@ -771,7 +651,6 @@ __attribute__((section("_ftrace_events"))) event_##call = { \ > .regfunc = ftrace_raw_reg_event_##call, \ > .unregfunc = ftrace_raw_unreg_event_##call, \ > .print_fmt = print_fmt_##call, \ > - .show_format = ftrace_format_##call, \ > .define_fields = ftrace_define_fields_##template, \ > _TRACE_PROFILE_INIT(call) \ > } > diff --git a/include/trace/syscall.h b/include/trace/syscall.h > index 961fda3..8cd4102 100644 > --- a/include/trace/syscall.h > +++ b/include/trace/syscall.h > @@ -34,10 +34,6 @@ struct syscall_metadata { > extern unsigned long arch_syscall_addr(int nr); > extern int init_syscall_trace(struct ftrace_event_call *call); > > -extern int syscall_enter_format(struct ftrace_event_call *call, > - struct trace_seq *s); > -extern int syscall_exit_format(struct ftrace_event_call *call, > - struct trace_seq *s); > extern int syscall_enter_define_fields(struct ftrace_event_call *call); > extern int syscall_exit_define_fields(struct ftrace_event_call *call); > extern int reg_event_syscall_enter(struct ftrace_event_call *call); > diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c > index d12e75c..4474661 100644 > --- a/kernel/trace/trace_events.c > +++ b/kernel/trace/trace_events.c > @@ -519,33 +519,6 @@ out: > return ret; > } > > -extern char *__bad_type_size(void); > - > -#undef FIELD > -#define FIELD(type, name) \ > - sizeof(type) != sizeof(field.name) ? __bad_type_size() : \ > - #type, "common_" #name, offsetof(typeof(field), name), \ > - sizeof(field.name), is_signed_type(type) > - > -static int trace_write_header(struct trace_seq *s) > -{ > - struct trace_entry field; > - > - /* struct trace_entry */ > - return trace_seq_printf(s, > - "\tfield:%s %s;\toffset:%zu;\tsize:%zu;\tsigned:%u;\n" > - "\tfield:%s %s;\toffset:%zu;\tsize:%zu;\tsigned:%u;\n" > - "\tfield:%s %s;\toffset:%zu;\tsize:%zu;\tsigned:%u;\n" > - "\tfield:%s %s;\toffset:%zu;\tsize:%zu;\tsigned:%u;\n" > - "\tfield:%s %s;\toffset:%zu;\tsize:%zu;\tsigned:%u;\n" > - "\n", > - FIELD(unsigned short, type), > - FIELD(unsigned char, flags), > - FIELD(unsigned char, preempt_count), > - FIELD(int, pid), > - FIELD(int, lock_depth)); > -} > - > static ssize_t > event_format_read(struct file *filp, char __user *ubuf, size_t cnt, > loff_t *ppos) > @@ -977,10 +950,6 @@ event_create_dir(struct ftrace_event_call *call, struct dentry *d_events, > filter); > } > > - /* A trace may not want to export its format */ > - if (!call->show_format) > - return 0; > - > trace_create_file("format", 0444, call->dir, call, > format); > > diff --git a/kernel/trace/trace_export.c b/kernel/trace/trace_export.c > index 95d14b6..e091f64 100644 > --- a/kernel/trace/trace_export.c > +++ b/kernel/trace/trace_export.c > @@ -62,78 +62,6 @@ static void __always_unused ____ftrace_check_##name(void) \ > > #include "trace_entries.h" > > - > -#undef __field > -#define __field(type, item) \ > - ret = trace_seq_printf(s, "\tfield:" #type " " #item ";\t" \ > - "offset:%zu;\tsize:%zu;\tsigned:%u;\n", \ > - offsetof(typeof(field), item), \ > - sizeof(field.item), is_signed_type(type)); \ > - if (!ret) \ > - return 0; > - > -#undef __field_desc > -#define __field_desc(type, container, item) \ > - ret = trace_seq_printf(s, "\tfield:" #type " " #item ";\t" \ > - "offset:%zu;\tsize:%zu;\tsigned:%u;\n", \ > - offsetof(typeof(field), container.item), \ > - sizeof(field.container.item), \ > - is_signed_type(type)); \ > - if (!ret) \ > - return 0; > - > -#undef __array > -#define __array(type, item, len) \ > - ret = trace_seq_printf(s, "\tfield:" #type " " #item "[" #len "];\t" \ > - "offset:%zu;\tsize:%zu;\tsigned:%u;\n", \ > - offsetof(typeof(field), item), \ > - sizeof(field.item), is_signed_type(type)); \ > - if (!ret) \ > - return 0; > - > -#undef __array_desc > -#define __array_desc(type, container, item, len) \ > - ret = trace_seq_printf(s, "\tfield:" #type " " #item "[" #len "];\t" \ > - "offset:%zu;\tsize:%zu;\tsigned:%u;\n", \ > - offsetof(typeof(field), container.item), \ > - sizeof(field.container.item), \ > - is_signed_type(type)); \ > - if (!ret) \ > - return 0; > - > -#undef __dynamic_array > -#define __dynamic_array(type, item) \ > - ret = trace_seq_printf(s, "\tfield:" #type " " #item ";\t" \ > - "offset:%zu;\tsize:0;\tsigned:%u;\n", \ > - offsetof(typeof(field), item), \ > - is_signed_type(type)); \ > - if (!ret) \ > - return 0; > - > -#undef F_printk > -#define F_printk(fmt, args...) "%s, %s\n", #fmt, __stringify(args) > - > -#undef __entry > -#define __entry REC > - > -#undef FTRACE_ENTRY > -#define FTRACE_ENTRY(name, struct_name, id, tstruct, print) \ > -static int \ > -ftrace_format_##name(struct ftrace_event_call *unused, \ > - struct trace_seq *s) \ > -{ \ > - struct struct_name field __attribute__((unused)); \ > - int ret = 0; \ > - \ > - tstruct; \ > - \ > - trace_seq_printf(s, "\nprint fmt: " print); \ > - \ > - return ret; \ > -} > - > -#include "trace_entries.h" > - > #undef __field > #define __field(type, item) \ > ret = trace_define_field(event_call, #type, #item, \ > @@ -235,7 +163,6 @@ __attribute__((section("_ftrace_events"))) event_##call = { \ > .system = __stringify(TRACE_SYSTEM), \ > .raw_init = ftrace_raw_init_event, \ > .print_fmt = print, \ > - .show_format = ftrace_format_##call, \ > .define_fields = ftrace_define_fields_##call, \ > }; \ > > diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c > index a12d39b..0c9802d 100644 > --- a/kernel/trace/trace_kprobe.c > +++ b/kernel/trace/trace_kprobe.c > @@ -1136,82 +1136,6 @@ static int kretprobe_event_define_fields(struct ftrace_event_call *event_call) > return 0; > } > > -static int __probe_event_show_format(struct trace_seq *s, > - struct trace_probe *tp, const char *fmt, > - const char *arg) > -{ > - int i; > - > - /* Show format */ > - if (!trace_seq_printf(s, "\nprint fmt: \"%s", fmt)) > - return 0; > - > - for (i = 0; i< tp->nr_args; i++) > - if (!trace_seq_printf(s, " %s=%%lx", tp->args[i].name)) > - return 0; > - > - if (!trace_seq_printf(s, "\", %s", arg)) > - return 0; > - > - for (i = 0; i< tp->nr_args; i++) > - if (!trace_seq_printf(s, ", REC->%s", tp->args[i].name)) > - return 0; > - > - return trace_seq_puts(s, "\n"); > -} > - > -#undef SHOW_FIELD > -#define SHOW_FIELD(type, item, name) \ > - do { \ > - ret = trace_seq_printf(s, "\tfield:" #type " %s;\t" \ > - "offset:%u;\tsize:%u;\tsigned:%d;\n", name,\ > - (unsigned int)offsetof(typeof(field), item),\ > - (unsigned int)sizeof(type), \ > - is_signed_type(type)); \ > - if (!ret) \ > - return 0; \ > - } while (0) > - > -static int kprobe_event_show_format(struct ftrace_event_call *call, > - struct trace_seq *s) > -{ > - struct kprobe_trace_entry field __attribute__((unused)); > - int ret, i; > - struct trace_probe *tp = (struct trace_probe *)call->data; > - > - SHOW_FIELD(unsigned long, ip, FIELD_STRING_IP); > - SHOW_FIELD(int, nargs, FIELD_STRING_NARGS); > - > - /* Show fields */ > - for (i = 0; i< tp->nr_args; i++) > - SHOW_FIELD(unsigned long, args[i], tp->args[i].name); > - trace_seq_puts(s, "\n"); > - > - return __probe_event_show_format(s, tp, "(%lx)", > - "REC->" FIELD_STRING_IP); > -} > - > -static int kretprobe_event_show_format(struct ftrace_event_call *call, > - struct trace_seq *s) > -{ > - struct kretprobe_trace_entry field __attribute__((unused)); > - int ret, i; > - struct trace_probe *tp = (struct trace_probe *)call->data; > - > - SHOW_FIELD(unsigned long, func, FIELD_STRING_FUNC); > - SHOW_FIELD(unsigned long, ret_ip, FIELD_STRING_RETIP); > - SHOW_FIELD(int, nargs, FIELD_STRING_NARGS); > - > - /* Show fields */ > - for (i = 0; i< tp->nr_args; i++) > - SHOW_FIELD(unsigned long, args[i], tp->args[i].name); > - trace_seq_puts(s, "\n"); > - > - return __probe_event_show_format(s, tp, "(%lx<- %lx)", > - "REC->" FIELD_STRING_FUNC > - ", REC->" FIELD_STRING_RETIP); > -} > - > static int __set_print_fmt(struct trace_probe *tp, char *buf, int len) > { > int i; > @@ -1459,12 +1383,10 @@ static int register_probe_event(struct trace_probe *tp) > if (probe_is_return(tp)) { > tp->event.trace = print_kretprobe_event; > call->raw_init = probe_event_raw_init; > - call->show_format = kretprobe_event_show_format; > call->define_fields = kretprobe_event_define_fields; > } else { > tp->event.trace = print_kprobe_event; > call->raw_init = probe_event_raw_init; > - call->show_format = kprobe_event_show_format; > call->define_fields = kprobe_event_define_fields; > } > if (set_print_fmt(tp)< 0) > diff --git a/kernel/trace/trace_syscalls.c b/kernel/trace/trace_syscalls.c > index dcd8699..a56cb97 100644 > --- a/kernel/trace/trace_syscalls.c > +++ b/kernel/trace/trace_syscalls.c > @@ -143,54 +143,6 @@ extern char *__bad_type_size(void); > #type, #name, offsetof(typeof(trace), name), \ > sizeof(trace.name), is_signed_type(type) > > -int syscall_enter_format(struct ftrace_event_call *call, struct trace_seq *s) > -{ > - int i; > - int ret; > - struct syscall_metadata *entry = call->data; > - struct syscall_trace_enter trace; > - int offset = offsetof(struct syscall_trace_enter, args); > - > - ret = trace_seq_printf(s, "\tfield:%s %s;\toffset:%zu;\tsize:%zu;" > - "\tsigned:%u;\n", > - SYSCALL_FIELD(int, nr)); > - if (!ret) > - return 0; > - > - for (i = 0; i< entry->nb_args; i++) { > - ret = trace_seq_printf(s, "\tfield:%s %s;", entry->types[i], > - entry->args[i]); > - if (!ret) > - return 0; > - ret = trace_seq_printf(s, "\toffset:%d;\tsize:%zu;" > - "\tsigned:%u;\n", offset, > - sizeof(unsigned long), > - is_signed_type(unsigned long)); > - if (!ret) > - return 0; > - offset += sizeof(unsigned long); > - } > - > - trace_seq_puts(s, "\nprint fmt: \""); > - for (i = 0; i< entry->nb_args; i++) { > - ret = trace_seq_printf(s, "%s: 0x%%0%zulx%s", entry->args[i], > - sizeof(unsigned long), > - i == entry->nb_args - 1 ? "" : ", "); > - if (!ret) > - return 0; > - } > - trace_seq_putc(s, '"'); > - > - for (i = 0; i< entry->nb_args; i++) { > - ret = trace_seq_printf(s, ", ((unsigned long)(REC->%s))", > - entry->args[i]); > - if (!ret) > - return 0; > - } > - > - return trace_seq_putc(s, '\n'); > -} > - > static > int __set_enter_print_fmt(struct syscall_metadata *entry, char *buf, int len) > { > @@ -246,24 +198,6 @@ static void free_syscall_print_fmt(struct ftrace_event_call *call) > kfree(call->print_fmt); > } > > -int syscall_exit_format(struct ftrace_event_call *call, struct trace_seq *s) > -{ > - int ret; > - struct syscall_trace_exit trace; > - > - ret = trace_seq_printf(s, > - "\tfield:%s %s;\toffset:%zu;\tsize:%zu;" > - "\tsigned:%u;\n" > - "\tfield:%s %s;\toffset:%zu;\tsize:%zu;" > - "\tsigned:%u;\n", > - SYSCALL_FIELD(int, nr), > - SYSCALL_FIELD(long, ret)); > - if (!ret) > - return 0; > - > - return trace_seq_printf(s, "\nprint fmt: \"0x%%lx\", REC->ret\n"); > -} > - > int syscall_enter_define_fields(struct ftrace_event_call *call) > { > struct syscall_trace_enter trace; > > -- Masami Hiramatsu Software Engineer Hitachi Computer Products (America), Inc. Software Solutions Division e-mail: mhiramat@redhat.com -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/