Browse Source

tracing/kprobes: Rename Kprobe-tracer to kprobe-event

Rename Kprobes-based event tracer to kprobes-based tracing event
(kprobe-event), since it is not a tracer but an extensible
tracing event interface.

This also changes CONFIG_KPROBE_TRACER to CONFIG_KPROBE_EVENT
and sets it y by default.

Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com>
Acked-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Jim Keniston <jkenisto@us.ibm.com>
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
Cc: Christoph Hellwig <hch@infradead.org>
Cc: Frank Ch. Eigler <fche@redhat.com>
Cc: Jason Baron <jbaron@redhat.com>
Cc: K.Prasad <prasad@linux.vnet.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
LKML-Reference: <20091104001247.3454.14131.stgit@harusame>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Masami Hiramatsu 15 years ago
parent
commit
77b44d1b7c
4 changed files with 31 additions and 30 deletions
  1. 16 18
      Documentation/trace/kprobetrace.txt
  2. 12 7
      kernel/trace/Kconfig
  3. 1 1
      kernel/trace/Makefile
  4. 2 4
      kernel/trace/trace_kprobe.c

+ 16 - 18
Documentation/trace/kprobetrace.txt

@@ -1,26 +1,23 @@
-                        Kprobe-based Event Tracer
-                         =========================
+                        Kprobe-based Event Tracing
+                        ==========================
 
 
                  Documentation is written by Masami Hiramatsu
                  Documentation is written by Masami Hiramatsu
 
 
 
 
 Overview
 Overview
 --------
 --------
-This tracer is similar to the events tracer which is based on Tracepoint
-infrastructure. Instead of Tracepoint, this tracer is based on kprobes(kprobe
-and kretprobe). It probes anywhere where kprobes can probe(this means, all
-functions body except for __kprobes functions).
+These events are similar to tracepoint based events. Instead of Tracepoint,
+this is based on kprobes (kprobe and kretprobe). So it can probe wherever
+kprobes can probe (this means, all functions body except for __kprobes
+functions). Unlike the Tracepoint based event, this can be added and removed
+dynamically, on the fly.
 
 
-Unlike the function tracer, this tracer can probe instructions inside of
-kernel functions. It allows you to check which instruction has been executed.
+To enable this feature, build your kernel with CONFIG_KPROBE_TRACING=y.
 
 
-Unlike the Tracepoint based events tracer, this tracer can add and remove
-probe points on the fly.
-
-Similar to the events tracer, this tracer doesn't need to be activated via
-current_tracer, instead of that, just set probe points via
-/sys/kernel/debug/tracing/kprobe_events. And you can set filters on each
-probe events via /sys/kernel/debug/tracing/events/kprobes/<EVENT>/filter.
+Similar to the events tracer, this doesn't need to be activated via
+current_tracer. Instead of that, add probe points via
+/sys/kernel/debug/tracing/kprobe_events, and enable it via
+/sys/kernel/debug/tracing/events/kprobes/<EVENT>/enabled.
 
 
 
 
 Synopsis of kprobe_events
 Synopsis of kprobe_events
@@ -55,9 +52,9 @@ Per-Probe Event Filtering
 -------------------------
 -------------------------
  Per-probe event filtering feature allows you to set different filter on each
  Per-probe event filtering feature allows you to set different filter on each
 probe and gives you what arguments will be shown in trace buffer. If an event
 probe and gives you what arguments will be shown in trace buffer. If an event
-name is specified right after 'p:' or 'r:' in kprobe_events, the tracer adds
-an event under tracing/events/kprobes/<EVENT>, at the directory you can see
-'id', 'enabled', 'format' and 'filter'.
+name is specified right after 'p:' or 'r:' in kprobe_events, it adds an event
+under tracing/events/kprobes/<EVENT>, at the directory you can see 'id',
+'enabled', 'format' and 'filter'.
 
 
 enabled:
 enabled:
   You can enable/disable the probe by writing 1 or 0 on it.
   You can enable/disable the probe by writing 1 or 0 on it.
@@ -71,6 +68,7 @@ filter:
 id:
 id:
   This shows the id of this probe event.
   This shows the id of this probe event.
 
 
+
 Event Profiling
 Event Profiling
 ---------------
 ---------------
  You can check the total number of probe hits and probe miss-hits via
  You can check the total number of probe hits and probe miss-hits via

+ 12 - 7
kernel/trace/Kconfig

@@ -428,17 +428,22 @@ config BLK_DEV_IO_TRACE
 
 
 	  If unsure, say N.
 	  If unsure, say N.
 
 
-config KPROBE_TRACER
+config KPROBE_EVENT
 	depends on KPROBES
 	depends on KPROBES
 	depends on X86
 	depends on X86
-	bool "Trace kprobes"
+	bool "Enable kprobes-based dynamic events"
 	select TRACING
 	select TRACING
-	select GENERIC_TRACER
+	default y
 	help
 	help
-	  This tracer probes everywhere where kprobes can probe it, and
-	  records various registers and memories specified by user.
-	  This also allows you to trace kprobe probe points as a dynamic
-	  defined events. It provides per-probe event filtering interface.
+	  This allows the user to add tracing events (similar to tracepoints) on the fly
+	  via the ftrace interface. See Documentation/trace/kprobetrace.txt
+	  for more details.
+
+	  Those events can be inserted wherever kprobes can probe, and record
+	  various register and memory values.
+
+	  This option is also required by perf-probe subcommand of perf tools. If
+	  you want to use perf tools, this option is strongly recommended.
 
 
 config DYNAMIC_FTRACE
 config DYNAMIC_FTRACE
 	bool "enable/disable ftrace tracepoints dynamically"
 	bool "enable/disable ftrace tracepoints dynamically"

+ 1 - 1
kernel/trace/Makefile

@@ -53,7 +53,7 @@ obj-$(CONFIG_EVENT_TRACING) += trace_export.o
 obj-$(CONFIG_FTRACE_SYSCALLS) += trace_syscalls.o
 obj-$(CONFIG_FTRACE_SYSCALLS) += trace_syscalls.o
 obj-$(CONFIG_EVENT_PROFILE) += trace_event_profile.o
 obj-$(CONFIG_EVENT_PROFILE) += trace_event_profile.o
 obj-$(CONFIG_EVENT_TRACING) += trace_events_filter.o
 obj-$(CONFIG_EVENT_TRACING) += trace_events_filter.o
-obj-$(CONFIG_KPROBE_TRACER) += trace_kprobe.o
+obj-$(CONFIG_KPROBE_EVENT) += trace_kprobe.o
 obj-$(CONFIG_EVENT_TRACING) += power-traces.o
 obj-$(CONFIG_EVENT_TRACING) += power-traces.o
 
 
 libftrace-y := ftrace.o
 libftrace-y := ftrace.o

+ 2 - 4
kernel/trace/trace_kprobe.c

@@ -1,5 +1,5 @@
 /*
 /*
- * kprobe based kernel tracer
+ * Kprobes-based tracing events
  *
  *
  * Created by Masami Hiramatsu <mhiramat@redhat.com>
  * Created by Masami Hiramatsu <mhiramat@redhat.com>
  *
  *
@@ -57,8 +57,6 @@ const char *reserved_field_names[] = {
 	FIELD_STRING_FUNC,
 	FIELD_STRING_FUNC,
 };
 };
 
 
-/* currently, trace_kprobe only supports X86. */
-
 struct fetch_func {
 struct fetch_func {
 	unsigned long (*func)(struct pt_regs *, void *);
 	unsigned long (*func)(struct pt_regs *, void *);
 	void *data;
 	void *data;
@@ -191,7 +189,7 @@ static __kprobes void free_indirect_fetch_data(struct indirect_fetch_data *data)
 }
 }
 
 
 /**
 /**
- * Kprobe tracer core functions
+ * Kprobe event core functions
  */
  */
 
 
 struct probe_arg {
 struct probe_arg {