Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1186138 > unrolled thread
| Started by | Tal Shorer <tal.shorer@gmail.com> |
|---|---|
| First post | 2015-07-16 19:50 +0200 |
| Last post | 2015-07-16 19:50 +0200 |
| Articles | 3 — 1 participant |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
[PATCH v2 0/2] tracing: allow disabling compilation of specific trace systems Tal Shorer <tal.shorer@gmail.com> - 2015-07-16 19:50 +0200
[PATCH v2 2/2] tracing: gpio: add Kconfig option for enabling/disabling trace events Tal Shorer <tal.shorer@gmail.com> - 2015-07-16 19:50 +0200
[PATCH v2 1/2] tracing: allow disabling compilation of specific trace systems Tal Shorer <tal.shorer@gmail.com> - 2015-07-16 19:50 +0200
| From | Tal Shorer <tal.shorer@gmail.com> |
|---|---|
| Date | 2015-07-16 19:50 +0200 |
| Subject | [PATCH v2 0/2] tracing: allow disabling compilation of specific trace systems |
| Message-ID | <pMVse-5iT-11@gated-at.bofh.it> |
Currently, enabling CONFIG_TRACING on a system comes as all-or-nothing: either tracepoints for all subsystems are compiled (with CONFIG_TRACING) or none of them do (without it). This caused me an unacceptable performance penalty (obviously SOME penalty was expected, but not one so severe) which made me revert the changes in configuration. The first patch in this series modifies the files that actually define the tracepoint to look for a preprocessor macro NOTRACE and define nops (as if CONFIG_TRACING was not set) instead of them. The second patch provides an example of how I see this working, with the gpio subsystem as the example for absolutely no reason. If this idea is deemed worth the time by the community, I'll create patches for the other subsystems. Changelog: v2: - A comment in tracepoint.h explaining NOTRACE and its use - Avoid duplication of the test for both NOTRACE and a config option by defining TRACEPOINTS_ENABLED when both are present and using that to check whether or not to define tracepoints Tal Shorer (2): tracing: allow disabling compilation of specific trace systems tracing: gpio: add Kconfig option for enabling/disabling trace events drivers/gpio/Kconfig | 7 +++++++ include/linux/tracepoint.h | 6 +++--- include/trace/define_trace.h | 2 +- include/trace/events/gpio.h | 4 ++++ 4 files changed, 15 insertions(+), 4 deletions(-) -- 2.4.3 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [next] | [standalone]
| From | Tal Shorer <tal.shorer@gmail.com> |
|---|---|
| Date | 2015-07-16 19:50 +0200 |
| Subject | [PATCH v2 2/2] tracing: gpio: add Kconfig option for enabling/disabling trace events |
| Message-ID | <pMVse-5iT-15@gated-at.bofh.it> |
| In reply to | #1186138 |
Add a new options to gpio Kconfig, CONFIG_GPIO_TRACING, that is used for enabling/disabling compilation of gpio function trace events. Signed-off-by: Tal Shorer <tal.shorer@gmail.com> --- drivers/gpio/Kconfig | 7 +++++++ include/trace/events/gpio.h | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig index c1e2ca3..2829e8e 100644 --- a/drivers/gpio/Kconfig +++ b/drivers/gpio/Kconfig @@ -88,6 +88,13 @@ config GPIO_SYSFS config GPIO_GENERIC tristate +config GPIO_TRACING + bool "gpio tracing" + depends on TRACING + help + Enable tracing for gpio subsystem + + # put drivers in the right section, in alphabetical order config GPIO_DA9052 diff --git a/include/trace/events/gpio.h b/include/trace/events/gpio.h index 927a8ad..09af636 100644 --- a/include/trace/events/gpio.h +++ b/include/trace/events/gpio.h @@ -1,6 +1,10 @@ #undef TRACE_SYSTEM #define TRACE_SYSTEM gpio +#ifndef CONFIG_GPIO_TRACING +#define NOTRACE +#endif + #if !defined(_TRACE_GPIO_H) || defined(TRACE_HEADER_MULTI_READ) #define _TRACE_GPIO_H -- 2.4.3 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Tal Shorer <tal.shorer@gmail.com> |
|---|---|
| Date | 2015-07-16 19:50 +0200 |
| Subject | [PATCH v2 1/2] tracing: allow disabling compilation of specific trace systems |
| Message-ID | <pMVse-5iT-25@gated-at.bofh.it> |
| In reply to | #1186138 |
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@gmail.com>
---
include/linux/tracepoint.h | 17 ++++++++++++++---
include/trace/define_trace.h | 2 +-
2 files changed, 15 insertions(+), 4 deletions(-)
diff --git a/include/linux/tracepoint.h b/include/linux/tracepoint.h
index c728513..a8ddfd3 100644
--- a/include/linux/tracepoint.h
+++ b/include/linux/tracepoint.h
@@ -103,7 +103,18 @@ extern void syscall_unregfunc(void);
#define TP_ARGS(args...) args
#define TP_CONDITION(args...) args
-#ifdef CONFIG_TRACEPOINTS
+/*
+ * 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.
+ */
+#if defined(CONFIG_TRACEPOINTS) && !defined(NOTRACE)
+#define TRACEPOINTS_ENABLED
+#endif
+
+#ifdef TRACEPOINTS_ENABLED
/*
* it_func[0] is never NULL because there is at least one element in the array
@@ -226,7 +237,7 @@ extern void syscall_unregfunc(void);
#define EXPORT_TRACEPOINT_SYMBOL(name) \
EXPORT_SYMBOL(__tracepoint_##name)
-#else /* !CONFIG_TRACEPOINTS */
+#else /* !TRACEPOINTS_ENABLED */
#define __DECLARE_TRACE(name, proto, args, cond, data_proto, data_args) \
static inline void trace_##name(proto) \
{ } \
@@ -258,7 +269,7 @@ extern void syscall_unregfunc(void);
#define EXPORT_TRACEPOINT_SYMBOL_GPL(name)
#define EXPORT_TRACEPOINT_SYMBOL(name)
-#endif /* CONFIG_TRACEPOINTS */
+#endif /* TRACEPOINTS_ENABLED */
#ifdef CONFIG_TRACING
/**
diff --git a/include/trace/define_trace.h b/include/trace/define_trace.h
index 02e1003..b763d3f 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
+#ifdef TRACEPOINTS_ENABLED
#include <trace/ftrace.h>
#endif
--
2.4.3
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web