lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:	Wed, 09 Dec 2009 13:05:08 -0500
From:	Masami Hiramatsu <mhiramat@...hat.com>
To:	Lai Jiangshan <laijs@...fujitsu.com>
CC:	Ingo Molnar <mingo@...e.hu>, Steven Rostedt <rostedt@...dmis.org>,
	Frederic Weisbecker <fweisbec@...il.com>,
	Jason Baron <jbaron@...hat.com>,
	LKML <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH 10/10] tracing: delete ->show_format()

Lai Jiangshan wrote:
>
> remove ->show_format() and corresponding codes.
>
> Signed-off-by: Lai Jiangshan<laijs@...fujitsu.com>

Looks good for me, at least trace_kprobe.c.

Acked-by: Masami Hiramatsu <mhiramat@...hat.com>

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: mhiramat@...hat.com

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ