From: Frederic Weisbecker <fweisbec@gmail.com>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: linux-kernel@vger.kernel.org, Ingo Molnar <mingo@elte.hu>,
Andrew Morton <akpm@linux-foundation.org>,
Thomas Gleixner <tglx@linutronix.de>,
Peter Zijlstra <peterz@infradead.org>,
Arnaldo Carvalho de Melo <acme@redhat.com>,
Mathieu Desnoyers <compudj@krystal.dyndns.org>,
Lai Jiangshan <laijs@cn.fujitsu.com>,
Li Zefan <lizf@cn.fujitsu.com>,
Masami Hiramatsu <mhiramat@redhat.com>,
Christoph Hellwig <hch@lst.de>,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Subject: Re: [PATCH 08/10 final] tracing: Move print functions into event class
Date: Wed, 12 May 2010 20:37:34 +0200 [thread overview]
Message-ID: <20100512183733.GB10028@nowhere> (raw)
In-Reply-To: <20100512152854.333118709@goodmis.org>
On Wed, May 12, 2010 at 11:28:18AM -0400, Steven Rostedt wrote:
> From: Steven Rostedt <srostedt@redhat.com>
>
> Currently, every event has its own trace_event structure. This is
> fine since the structure is needed anyway. But the print function
> structure (trace_event_functions) is now separate. Since the output
> of the trace event is done by the class (with the exception of events
> defined by DEFINE_EVENT_PRINT), it makes sense to have the class
> define the print functions that all events in the class can use.
>
> This makes a bigger deal with the syscall events since all syscall events
> use the same class. The savings here is another 30K.
>
> text data bss dec hex filename
> 4913961 1088356 861512 6863829 68bbd5 vmlinux.orig
> 4900382 1048964 861512 6810858 67ecea vmlinux.init
> 4900446 1049028 861512 6810986 67ed6a vmlinux.preprint
> 4895024 1023812 861512 6780348 6775bc vmlinux.print
>
> To accomplish this, and to let the class know what event is being
> printed, the event structure is embedded in the ftrace_event_call
> structure. This should not be an issues since the event structure
> was created for each event anyway.
>
> Acked-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
> ---
> include/linux/ftrace_event.h | 2 +-
> include/linux/syscalls.h | 18 +++------------
> include/trace/ftrace.h | 45 +++++++++++++++++-----------------------
> kernel/trace/trace_events.c | 6 ++--
> kernel/trace/trace_kprobe.c | 14 +++++-------
> kernel/trace/trace_syscalls.c | 8 +++++++
> 6 files changed, 41 insertions(+), 52 deletions(-)
>
> diff --git a/include/linux/ftrace_event.h b/include/linux/ftrace_event.h
> index 4f77932..b1a007d 100644
> --- a/include/linux/ftrace_event.h
> +++ b/include/linux/ftrace_event.h
> @@ -148,7 +148,7 @@ struct ftrace_event_call {
> struct ftrace_event_class *class;
> char *name;
> struct dentry *dir;
> - struct trace_event *event;
> + struct trace_event event;
> int enabled;
> int id;
> const char *print_fmt;
> diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
> index f725677..a1a86a5 100644
> --- a/include/linux/syscalls.h
> +++ b/include/linux/syscalls.h
> @@ -120,24 +120,20 @@ struct perf_event_attr;
>
> extern struct ftrace_event_class event_class_syscall_enter;
> extern struct ftrace_event_class event_class_syscall_exit;
> +extern struct trace_event_functions enter_syscall_print_funcs;
> +extern struct trace_event_functions exit_syscall_print_funcs;
>
> #define SYSCALL_TRACE_ENTER_EVENT(sname) \
> static struct syscall_metadata __syscall_meta_##sname; \
> static struct ftrace_event_call \
> __attribute__((__aligned__(4))) event_enter_##sname; \
> - static struct trace_event_functions enter_syscall_print_funcs_##sname = { \
> - .trace = print_syscall_enter, \
> - }; \
> - static struct trace_event enter_syscall_print_##sname = { \
> - .funcs = &enter_syscall_print_funcs_##sname, \
> - }; \
> static struct ftrace_event_call __used \
> __attribute__((__aligned__(4))) \
> __attribute__((section("_ftrace_events"))) \
> event_enter_##sname = { \
> .name = "sys_enter"#sname, \
> .class = &event_class_syscall_enter, \
> - .event = &enter_syscall_print_##sname, \
> + .event.funcs = &enter_syscall_print_funcs, \
Ah ok, looks like I don't need to write this patch in fact :)
next prev parent reply other threads:[~2010-05-12 18:37 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-12 15:28 [PATCH 00/10 final] tracing: Lowering the footprint of TRACE_EVENTs Steven Rostedt
2010-05-12 15:28 ` [PATCH 01/10 final] tracing: Create class struct for events Steven Rostedt
2010-05-12 15:28 ` [PATCH 02/10 final] tracepoints: Add check trace callback type Steven Rostedt
2010-05-12 15:28 ` [PATCH 03/10 final] tracing: Let tracepoints have data passed to tracepoint callbacks Steven Rostedt
2010-05-12 15:28 ` [PATCH 04/10 final] tracing: Remove per event trace registering Steven Rostedt
2010-05-12 15:28 ` [PATCH 05/10 final] tracing: Move fields from event to class structure Steven Rostedt
2010-05-12 15:28 ` [PATCH 06/10 final] tracing: Move raw_init from events to class Steven Rostedt
2010-05-12 15:28 ` [PATCH 07/10 final] tracing: Allow events to share their print functions Steven Rostedt
2010-05-12 18:31 ` Frederic Weisbecker
2010-05-12 15:28 ` [PATCH 08/10 final] tracing: Move print functions into event class Steven Rostedt
2010-05-12 18:37 ` Frederic Weisbecker [this message]
2010-05-12 15:28 ` [PATCH 09/10 final] tracing: Remove duplicate id information in event structure Steven Rostedt
2010-05-12 15:28 ` [PATCH 10/10 final] tracing: Combine event filter_active and enable into single flags field Steven Rostedt
2010-05-12 18:43 ` [PATCH 00/10 final] tracing: Lowering the footprint of TRACE_EVENTs Frederic Weisbecker
2010-05-12 21:17 ` Masami Hiramatsu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100512183733.GB10028@nowhere \
--to=fweisbec@gmail.com \
--cc=acme@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=compudj@krystal.dyndns.org \
--cc=hch@lst.de \
--cc=laijs@cn.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lizf@cn.fujitsu.com \
--cc=mathieu.desnoyers@efficios.com \
--cc=mhiramat@redhat.com \
--cc=mingo@elte.hu \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.