2009-12-09 07:17:01

by Lai Jiangshan

[permalink] [raw]
Subject: [PATCH 10/10] tracing: delete ->show_format()


remove ->show_format() and corresponding codes.

Signed-off-by: Lai Jiangshan <[email protected]>
---
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 <trace/trace_events.h> 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_<call>,
* .unregfunc = ftrace_unreg_event_<call>,
- * .show_format = ftrace_format_<call>,
* }
*
*/
@@ -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;


2009-12-09 18:05:11

by Masami Hiramatsu

[permalink] [raw]
Subject: Re: [PATCH 10/10] tracing: delete ->show_format()

Lai Jiangshan wrote:
>
> remove ->show_format() and corresponding codes.
>
> Signed-off-by: Lai Jiangshan<[email protected]>

Looks good for me, at least trace_kprobe.c.

Acked-by: Masami Hiramatsu <[email protected]>

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<trace/trace_events.h> 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_<call>,
> * .unregfunc = ftrace_unreg_event_<call>,
> - * .show_format = ftrace_format_<call>,
> * }
> *
> */
> @@ -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: [email protected]