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 07/10 final] tracing: Allow events to share their print functions
Date: Wed, 12 May 2010 20:31:04 +0200 [thread overview]
Message-ID: <20100512183100.GA10028@nowhere> (raw)
In-Reply-To: <20100512152854.079439206@goodmis.org>
On Wed, May 12, 2010 at 11:28:17AM -0400, Steven Rostedt wrote:
> From: Steven Rostedt <srostedt@redhat.com>
>
> Multiple events may use the same method to print their data.
> Instead of having all events have a pointer to their print funtions,
> the trace_event structure now points to a trace_event_functions structure
> that will hold the way to print ouf the event.
>
> The event itself is now passed to the print function to let the print
> function know what kind of event it should print.
>
> This opens the door to consolidating the way several events print
> their output.
>
> 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
>
> This change slightly increases the size but is needed for the next change.
>
> v2: Fix the new function graph tracer event calls to handle this change.
>
> Acked-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
> ---
> include/linux/ftrace_event.h | 17 +++-
> include/linux/syscalls.h | 10 ++-
> include/trace/ftrace.h | 13 ++-
> include/trace/syscall.h | 6 +-
> kernel/trace/blktrace.c | 13 ++-
> kernel/trace/kmemtrace.c | 28 +++++--
> kernel/trace/trace.c | 9 +-
> kernel/trace/trace_functions_graph.c | 13 ++-
> kernel/trace/trace_kprobe.c | 22 ++++--
> kernel/trace/trace_output.c | 137 +++++++++++++++++++++++-----------
> kernel/trace/trace_output.h | 2 +-
> kernel/trace/trace_syscalls.c | 6 +-
> 12 files changed, 186 insertions(+), 90 deletions(-)
>
> diff --git a/include/linux/ftrace_event.h b/include/linux/ftrace_event.h
> index 393a839..4f77932 100644
> --- a/include/linux/ftrace_event.h
> +++ b/include/linux/ftrace_event.h
> @@ -70,18 +70,25 @@ struct trace_iterator {
> };
>
>
> +struct trace_event;
> +
> typedef enum print_line_t (*trace_print_func)(struct trace_iterator *iter,
> - int flags);
> -struct trace_event {
> - struct hlist_node node;
> - struct list_head list;
> - int type;
> + int flags, struct trace_event *event);
> +
> +struct trace_event_functions {
> trace_print_func trace;
> trace_print_func raw;
> trace_print_func hex;
> trace_print_func binary;
> };
>
> +struct trace_event {
> + struct hlist_node node;
> + struct list_head list;
> + int type;
> + struct trace_event_functions *funcs;
> +};
> +
> extern int register_ftrace_event(struct trace_event *event);
> extern int unregister_ftrace_event(struct trace_event *event);
>
> diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
> index 211c704..f725677 100644
> --- a/include/linux/syscalls.h
> +++ b/include/linux/syscalls.h
> @@ -125,9 +125,12 @@ extern struct ftrace_event_class event_class_syscall_exit;
> static struct syscall_metadata __syscall_meta_##sname; \
> static struct ftrace_event_call \
> __attribute__((__aligned__(4))) event_enter_##sname; \
> - static struct trace_event enter_syscall_print_##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, \
> + }; \
It looks like having a generic enter_syscall_print_func and enter_syscall_print
would reduce the footprint even more.
I'll make an incremental patch.
next prev parent reply other threads:[~2010-05-12 18:31 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 [this message]
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
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=20100512183100.GA10028@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.