Re: [Patch RFC 1/2] tracing: allow disabling compilation of specific trace systems

From: Tal Shorer
Date: Mon Jul 13 2015 - 17:38:15 EST


On Mon, Jul 13, 2015 at 9:34 PM, Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:
> On Sat, 20 Jun 2015 23:21:18 +0300
> Tal Shorer <tal.shorer@xxxxxxxxx> wrote:
>
>> Allow a trace events header file to disable compilation of its
>> trace events by defining the preprocessor macro NOTRACE.
>>
>> This could be done, for example, according to a Kconfig option.
>>
>> Signed-off-by: Tal Shorer <tal.shorer@xxxxxxxxx>
>> ---
>> include/linux/tracepoint.h | 6 +++---
>> include/trace/define_trace.h | 2 +-
>> 2 files changed, 4 insertions(+), 4 deletions(-)
>>
>> diff --git a/include/linux/tracepoint.h b/include/linux/tracepoint.h
>> index a5f7f3e..c869f84 100644
>> --- a/include/linux/tracepoint.h
>> +++ b/include/linux/tracepoint.h
>> @@ -111,7 +111,7 @@ extern void syscall_unregfunc(void);
>> #define TP_ARGS(args...) args
>> #define TP_CONDITION(args...) args
>>
>> -#ifdef CONFIG_TRACEPOINTS
>> +#if defined(CONFIG_TRACEPOINTS) && !defined(NOTRACE)
>
> Instead of the duplicate condition above, it would be better to make a
> new macro at the top. And we can add a nice comment to it as well.
Technically they're a little different, one with CONFIG_TRACEPOINTS
and the other with CONFIG_EVENT_TRACING.
Looking briefly at the Kconfig files, it appears you can't really have
CONFIG_TRACEPOINTS without also getting CONFIG_EVENT_TRACING along the
way.
If it's fine with you to effectively change the check for
CONFIG_EVENT_TRACING with a check for CONFIG_TRACEPOINTS (or vice
versa, let me know if you have a preference), it's fine with me and
will be added in v2.
>
> /*
> * Individual subsystem my have a separate configuration to
> * enable their tracepoints. By default, this file will create
> * the tracepoints if CONFIG_TRACEPOINT is defined. If a subsystem
> * wants to be able to disable its tracepoints from being created
> * it can define NOTRACE before including the tracepoint headers.
> */
Will be added in v2. I believe I'll have time to write and test it
during the week.
> #if defined(CONFIG_TRACEPOINTS) && !defined(NOTRACE)
> # define TRACEPOINTS_ENABLED
> #endif
>
> Then switch all the conditions below to:
>
> #ifdef TRACEPOINTS_ENABLED
>
> -- Steve
>
>
>>
>> /*
>> * it_func[0] is never NULL because there is at least one element in the array
>> @@ -234,7 +234,7 @@ extern void syscall_unregfunc(void);
>> #define EXPORT_TRACEPOINT_SYMBOL(name) \
>> EXPORT_SYMBOL(__tracepoint_##name)
>>
>> -#else /* !CONFIG_TRACEPOINTS */
>> +#else /* !(defined(CONFIG_TRACEPOINTS) && !defined(NOTRACE)) */
>> #define __DECLARE_TRACE(name, proto, args, cond, data_proto, data_args) \
>> static inline void trace_##name(proto) \
>> { } \
>> @@ -266,7 +266,7 @@ extern void syscall_unregfunc(void);
>> #define EXPORT_TRACEPOINT_SYMBOL_GPL(name)
>> #define EXPORT_TRACEPOINT_SYMBOL(name)
>>
>> -#endif /* CONFIG_TRACEPOINTS */
>> +#endif /* defined(CONFIG_TRACEPOINTS) && !defined(NOTRACE) */
>>
>> #ifdef CONFIG_TRACING
>> /**
>> diff --git a/include/trace/define_trace.h b/include/trace/define_trace.h
>> index 02e1003..e847fd7 100644
>> --- a/include/trace/define_trace.h
>> +++ b/include/trace/define_trace.h
>> @@ -86,7 +86,7 @@
>> #undef DECLARE_TRACE
>> #define DECLARE_TRACE(name, proto, args)
>>
>> -#ifdef CONFIG_EVENT_TRACING
>> +#if defined(CONFIG_EVENT_TRACING) && !defined(NOTRACE)
>> #include <trace/ftrace.h>
>> #endif
>>
>
--
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/