Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1436053

[for-next][PATCH 08/12] tracing: Add trace_printk sample code

From Steven Rostedt <rostedt@goodmis.org>
Newsgroups linux.kernel
Subject [for-next][PATCH 08/12] tracing: Add trace_printk sample code
Date 2016-07-03 22:40 +0200
Message-ID <rQWlk-4MM-35@gated-at.bofh.it> (permalink)
References <rQWlj-4MM-3@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


From: "Steven Rostedt (Red Hat)" <rostedt@goodmis.org>

Add sample code to test trace_printk(). The trace_printk() functions should
never be used in production code. This makes testing it a bit more
difficult. Having a sample module that can test use cases of trace_printk()
can help out.

Currently it just tests trace_printk() where it will be converted into:

 trace_bputs()
 trace_puts()
 trace_bprintk()

as well as staying as the normal _trace_printk().

It also tests its use in interrupt context as that will test the auxilery
buffers.

Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
 samples/Kconfig                     |  7 +++++
 samples/Makefile                    |  2 +-
 samples/trace_printk/Makefile       |  6 ++++
 samples/trace_printk/trace-printk.c | 56 +++++++++++++++++++++++++++++++++++++
 4 files changed, 70 insertions(+), 1 deletion(-)
 create mode 100644 samples/trace_printk/Makefile
 create mode 100644 samples/trace_printk/trace-printk.c

diff --git a/samples/Kconfig b/samples/Kconfig
index 559a58baff6e..27a24571e96c 100644
--- a/samples/Kconfig
+++ b/samples/Kconfig
@@ -11,6 +11,13 @@ config SAMPLE_TRACE_EVENTS
 	help
 	  This build trace event example modules.
 
+config SAMPLE_TRACE_PRINTK
+        tristate "Build trace_printk module - tests various trace_printk formats"
+	depends on EVENT_TRACING && m
+	help
+	 This builds a module that calls trace_printk() and can be used to
+	 test various trace_printk() calls from a module.
+
 config SAMPLE_KOBJECT
 	tristate "Build kobject examples -- loadable modules only"
 	depends on m
diff --git a/samples/Makefile b/samples/Makefile
index 2e3b523d7097..1a20169d85ac 100644
--- a/samples/Makefile
+++ b/samples/Makefile
@@ -2,4 +2,4 @@
 
 obj-$(CONFIG_SAMPLES)	+= kobject/ kprobes/ trace_events/ livepatch/ \
 			   hw_breakpoint/ kfifo/ kdb/ hidraw/ rpmsg/ seccomp/ \
-			   configfs/ connector/ v4l/
+			   configfs/ connector/ v4l/ trace_printk/
diff --git a/samples/trace_printk/Makefile b/samples/trace_printk/Makefile
new file mode 100644
index 000000000000..19900ab2b00d
--- /dev/null
+++ b/samples/trace_printk/Makefile
@@ -0,0 +1,6 @@
+# builds a module that calls various trace_printk routines
+# then to use one (as root):  insmod <module_name.ko>
+
+# This module can also be used to test the trace_printk code.
+
+obj-$(CONFIG_SAMPLE_TRACE_PRINTK) += trace-printk.o
diff --git a/samples/trace_printk/trace-printk.c b/samples/trace_printk/trace-printk.c
new file mode 100644
index 000000000000..e9e0040ff7be
--- /dev/null
+++ b/samples/trace_printk/trace-printk.c
@@ -0,0 +1,56 @@
+#include <linux/module.h>
+#include <linux/kthread.h>
+#include <linux/irq_work.h>
+
+/* Must not be static to force gcc to consider these non constant */
+char *trace_printk_test_global_str =
+	"This is a dynamic string that will use trace_puts\n";
+
+char *trace_printk_test_global_str_irq =
+	"(irq) This is a dynamic string that will use trace_puts\n";
+
+char *trace_printk_test_global_str_fmt =
+	"%sThis is a %s that will use trace_printk\n";
+
+static struct irq_work irqwork;
+
+static void trace_printk_irq_work(struct irq_work *work)
+{
+	trace_printk("(irq) This is a static string that will use trace_bputs\n");
+	trace_printk(trace_printk_test_global_str_irq);
+
+	trace_printk("(irq) This is a %s that will use trace_bprintk()\n",
+		     "static string");
+
+	trace_printk(trace_printk_test_global_str_fmt,
+		     "(irq) ", "dynamic string");
+}
+
+static int __init trace_printk_init(void)
+{
+	init_irq_work(&irqwork, trace_printk_irq_work);
+
+	trace_printk("This is a static string that will use trace_bputs\n");
+	trace_printk(trace_printk_test_global_str);
+
+	/* Kick off printing in irq context */
+	irq_work_queue(&irqwork);
+
+	trace_printk("This is a %s that will use trace_bprintk()\n",
+		     "static string");
+
+	trace_printk(trace_printk_test_global_str_fmt, "", "dynamic string");
+
+	return 0;
+}
+
+static void __exit trace_printk_exit(void)
+{
+}
+
+module_init(trace_printk_init);
+module_exit(trace_printk_exit);
+
+MODULE_AUTHOR("Steven Rostedt");
+MODULE_DESCRIPTION("trace-printk");
+MODULE_LICENSE("GPL");
-- 
2.8.1

Back to linux.kernel | Previous | Next — Previous in thread | Find similar | Unroll thread


Thread

[for-next][PATCH 00/12] tracing: Updates for 4.8 Steven Rostedt <rostedt@goodmis.org> - 2016-07-03 22:40 +0200
  [for-next][PATCH 09/12] tracing: Show the preempt count of when the event was called Steven Rostedt <rostedt@goodmis.org> - 2016-07-03 22:40 +0200
  [for-next][PATCH 01/12] tracing: Make the pid filtering helper functions global Steven Rostedt <rostedt@goodmis.org> - 2016-07-03 22:40 +0200
  [for-next][PATCH 11/12] tracing: Skip more functions when doing stack tracing of events Steven Rostedt <rostedt@goodmis.org> - 2016-07-03 22:40 +0200
  [for-next][PATCH 04/12] tracing: Move pid_list write processing into its own function Steven Rostedt <rostedt@goodmis.org> - 2016-07-03 22:40 +0200
  [for-next][PATCH 12/12] tracing/function_graph: Fix filters for function_graph threshold Steven Rostedt <rostedt@goodmis.org> - 2016-07-03 22:40 +0200
  [for-next][PATCH 06/12] tracing: expose current->comm to [ku]probe events Steven Rostedt <rostedt@goodmis.org> - 2016-07-03 22:40 +0200
  [for-next][PATCH 02/12] tracing: Move filtered_pid helper functions into trace.c Steven Rostedt <rostedt@goodmis.org> - 2016-07-03 22:40 +0200
  [for-next][PATCH 03/12] tracing: Move the pid_list seq_file functions to be global Steven Rostedt <rostedt@goodmis.org> - 2016-07-03 22:40 +0200
  [for-next][PATCH 07/12] tracing: Choose static tp_printk buffer by explicit nesting count Steven Rostedt <rostedt@goodmis.org> - 2016-07-03 22:40 +0200
  [for-next][PATCH 08/12] tracing: Add trace_printk sample code Steven Rostedt <rostedt@goodmis.org> - 2016-07-03 22:40 +0200

csiph-web