Re: [PATCH 03/13] tracing: Move a printk out offtrace_raw_reg_event_foo()

From: Frederic Weisbecker
Date: Tue Dec 08 2009 - 02:43:54 EST


On Tue, Dec 08, 2009 at 11:14:52AM +0800, Li Zefan wrote:
> Move the printk from each ftrace_raw_reg_event_foo() to
> its caller ftrace_event_enable_disable().
>
> See how much space this saves:
>
> text data bss dec hex filename
> 5345151 1961864 7103260 14410275 dbe223 vmlinux.o.old
> 5331487 1961864 7103260 14396611 dbacc3 vmlinux.o
>
> Signed-off-by: Li Zefan <lizf@xxxxxxxxxxxxxx>
> ---
> include/trace/ftrace.h | 16 ++--------------
> kernel/trace/trace_events.c | 17 +++++++++++++----
> kernel/trace/trace_syscalls.c | 10 ++--------
> 3 files changed, 17 insertions(+), 26 deletions(-)
>
> diff --git a/include/trace/ftrace.h b/include/trace/ftrace.h
> index f978376..0c21af8 100644
> --- a/include/trace/ftrace.h
> +++ b/include/trace/ftrace.h
> @@ -555,13 +555,7 @@ static void ftrace_profile_disable_##name(struct ftrace_event_call *unused)\
> *
> * static int ftrace_reg_event_<call>(struct ftrace_event_call *unused)
> * {
> - * int ret;
> - *
> - * ret = register_trace_<call>(ftrace_event_<call>);
> - * if (!ret)
> - * pr_info("event trace: Could not activate trace point "
> - * "probe to <call>");
> - * return ret;
> + * return register_trace_<call>(ftrace_event_<call>);
> * }
> *
> * static void ftrace_unreg_event_<call>(struct ftrace_event_call *unused)
> @@ -710,13 +704,7 @@ static void ftrace_raw_event_##call(proto) \
> \
> static int ftrace_raw_reg_event_##call(struct ftrace_event_call *unused)\
> { \
> - int ret; \
> - \
> - ret = register_trace_##call(ftrace_raw_event_##call); \
> - if (ret) \
> - pr_info("event trace: Could not activate trace point " \
> - "probe to " #call "\n"); \
> - return ret; \
> + return register_trace_##call(ftrace_raw_event_##call); \
> } \
> \
> static void ftrace_raw_unreg_event_##call(struct ftrace_event_call *unused)\
> diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c
> index 97b0b3a..bf2f1b9 100644
> --- a/kernel/trace/trace_events.c
> +++ b/kernel/trace/trace_events.c
> @@ -118,9 +118,11 @@ int trace_event_raw_init(struct ftrace_event_call *call)
> }
> EXPORT_SYMBOL_GPL(trace_event_raw_init);
>
> -static void ftrace_event_enable_disable(struct ftrace_event_call *call,
> +static int ftrace_event_enable_disable(struct ftrace_event_call *call,
> int enable)
> {
> + int ret = 0;
> +
> switch (enable) {
> case 0:
> if (call->enabled) {
> @@ -131,12 +133,19 @@ static void ftrace_event_enable_disable(struct ftrace_event_call *call,
> break;
> case 1:
> if (!call->enabled) {
> + ret = call->regfunc(call);
> + if (ret) {
> + pr_info("event trace: Could not enable event "
> + "%s\n", call->name);
> + break;
> + }
> call->enabled = 1;
> tracing_start_cmdline_record();
> - call->regfunc(call);



That seems to open a tiny window during which we'll lose
some pid -> comm resolution records.

We should probably keep the previous call order.

Other than that:

Acked-by: Frederic Weisbecker <fweisbec@xxxxxxxxx>

Thanks.

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