aboutsummaryrefslogtreecommitdiffstats
path: root/samples
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2016-07-28 21:20:09 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2016-07-28 21:20:09 -0400
commitc624c86615fb8aa61fa76ed8c935446d06c80e77 (patch)
treecbb84b5e8185a4c251b574d4b40ad04b6e3e59f0 /samples
parente55884d2c6ac3ae50e49a1f6fe38601a91181719 (diff)
parent78aebca2c955c1c5aeb48e12645e13fe3c3461f2 (diff)
Merge tag 'trace-v4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace
Pull tracing updates from Steven Rostedt: "This is mostly clean ups and small fixes. Some of the more visible changes are: - The function pid code uses the event pid filtering logic - [ku]probe events have access to current->comm - trace_printk now has sample code - PCI devices now trace physical addresses - stack tracing has less unnessary functions traced" * tag 'trace-v4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace: printk, tracing: Avoiding unneeded blank lines tracing: Use __get_str() when manipulating strings tracing, RAS: Cleanup on __get_str() usage tracing: Use outer () on __get_str() definition ftrace: Reduce size of function graph entries tracing: Have HIST_TRIGGERS select TRACING tracing: Using for_each_set_bit() to simplify trace_pid_write() ftrace: Move toplevel init out of ftrace_init_tracefs() tracing/function_graph: Fix filters for function_graph threshold tracing: Skip more functions when doing stack tracing of events tracing: Expose CPU physical addresses (resource values) for PCI devices tracing: Show the preempt count of when the event was called tracing: Add trace_printk sample code tracing: Choose static tp_printk buffer by explicit nesting count tracing: expose current->comm to [ku]probe events ftrace: Have set_ftrace_pid use the bitmap like events do tracing: Move pid_list write processing into its own function tracing: Move the pid_list seq_file functions to be global tracing: Move filtered_pid helper functions into trace.c tracing: Make the pid filtering helper functions global
Diffstat (limited to 'samples')
-rw-r--r--samples/Kconfig7
-rw-r--r--samples/Makefile2
-rw-r--r--samples/trace_printk/Makefile6
-rw-r--r--samples/trace_printk/trace-printk.c56
4 files changed, 70 insertions, 1 deletions
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
11 help 11 help
12 This build trace event example modules. 12 This build trace event example modules.
13 13
14config SAMPLE_TRACE_PRINTK
15 tristate "Build trace_printk module - tests various trace_printk formats"
16 depends on EVENT_TRACING && m
17 help
18 This builds a module that calls trace_printk() and can be used to
19 test various trace_printk() calls from a module.
20
14config SAMPLE_KOBJECT 21config SAMPLE_KOBJECT
15 tristate "Build kobject examples -- loadable modules only" 22 tristate "Build kobject examples -- loadable modules only"
16 depends on m 23 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 @@
2 2
3obj-$(CONFIG_SAMPLES) += kobject/ kprobes/ trace_events/ livepatch/ \ 3obj-$(CONFIG_SAMPLES) += kobject/ kprobes/ trace_events/ livepatch/ \
4 hw_breakpoint/ kfifo/ kdb/ hidraw/ rpmsg/ seccomp/ \ 4 hw_breakpoint/ kfifo/ kdb/ hidraw/ rpmsg/ seccomp/ \
5 configfs/ connector/ v4l/ 5 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 @@
1# builds a module that calls various trace_printk routines
2# then to use one (as root): insmod <module_name.ko>
3
4# This module can also be used to test the trace_printk code.
5
6obj-$(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 @@
1#include <linux/module.h>
2#include <linux/kthread.h>
3#include <linux/irq_work.h>
4
5/* Must not be static to force gcc to consider these non constant */
6char *trace_printk_test_global_str =
7 "This is a dynamic string that will use trace_puts\n";
8
9char *trace_printk_test_global_str_irq =
10 "(irq) This is a dynamic string that will use trace_puts\n";
11
12char *trace_printk_test_global_str_fmt =
13 "%sThis is a %s that will use trace_printk\n";
14
15static struct irq_work irqwork;
16
17static void trace_printk_irq_work(struct irq_work *work)
18{
19 trace_printk("(irq) This is a static string that will use trace_bputs\n");
20 trace_printk(trace_printk_test_global_str_irq);
21
22 trace_printk("(irq) This is a %s that will use trace_bprintk()\n",
23 "static string");
24
25 trace_printk(trace_printk_test_global_str_fmt,
26 "(irq) ", "dynamic string");
27}
28
29static int __init trace_printk_init(void)
30{
31 init_irq_work(&irqwork, trace_printk_irq_work);
32
33 trace_printk("This is a static string that will use trace_bputs\n");
34 trace_printk(trace_printk_test_global_str);
35
36 /* Kick off printing in irq context */
37 irq_work_queue(&irqwork);
38
39 trace_printk("This is a %s that will use trace_bprintk()\n",
40 "static string");
41
42 trace_printk(trace_printk_test_global_str_fmt, "", "dynamic string");
43
44 return 0;
45}
46
47static void __exit trace_printk_exit(void)
48{
49}
50
51module_init(trace_printk_init);
52module_exit(trace_printk_exit);
53
54MODULE_AUTHOR("Steven Rostedt");
55MODULE_DESCRIPTION("trace-printk");
56MODULE_LICENSE("GPL");