mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 16:48:26 +02:00 
			
		
		
		
	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>
This commit is contained in:
		
							parent
							
								
									91365bbe4f
								
							
						
					
					
						commit
						77b44d1b7c
					
				
					 4 changed files with 31 additions and 30 deletions
				
			
		|  | @ -1,26 +1,23 @@ | |||
|                         Kprobe-based Event Tracer | ||||
|                          ========================= | ||||
|                         Kprobe-based Event Tracing | ||||
|                         ========================== | ||||
| 
 | ||||
|                  Documentation is written by Masami Hiramatsu | ||||
| 
 | ||||
| 
 | ||||
| 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 | ||||
|  | @ -55,9 +52,9 @@ Per-Probe Event Filtering | |||
| ------------------------- | ||||
|  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 | ||||
| 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: | ||||
|   You can enable/disable the probe by writing 1 or 0 on it. | ||||
|  | @ -71,6 +68,7 @@ filter: | |||
| id: | ||||
|   This shows the id of this probe event. | ||||
| 
 | ||||
| 
 | ||||
| Event Profiling | ||||
| --------------- | ||||
|  You can check the total number of probe hits and probe miss-hits via | ||||
|  |  | |||
|  | @ -428,17 +428,22 @@ config BLK_DEV_IO_TRACE | |||
| 
 | ||||
| 	  If unsure, say N. | ||||
| 
 | ||||
| config KPROBE_TRACER | ||||
| config KPROBE_EVENT | ||||
| 	depends on KPROBES | ||||
| 	depends on X86 | ||||
| 	bool "Trace kprobes" | ||||
| 	bool "Enable kprobes-based dynamic events" | ||||
| 	select TRACING | ||||
| 	select GENERIC_TRACER | ||||
| 	default y | ||||
| 	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 | ||||
| 	bool "enable/disable ftrace tracepoints dynamically" | ||||
|  |  | |||
|  | @ -53,7 +53,7 @@ obj-$(CONFIG_EVENT_TRACING) += trace_export.o | |||
| obj-$(CONFIG_FTRACE_SYSCALLS) += trace_syscalls.o | ||||
| obj-$(CONFIG_EVENT_PROFILE) += trace_event_profile.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 | ||||
| 
 | ||||
| libftrace-y := ftrace.o | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| /*
 | ||||
|  * kprobe based kernel tracer | ||||
|  * Kprobes-based tracing events | ||||
|  * | ||||
|  * Created by Masami Hiramatsu <mhiramat@redhat.com> | ||||
|  * | ||||
|  | @ -57,8 +57,6 @@ const char *reserved_field_names[] = { | |||
| 	FIELD_STRING_FUNC, | ||||
| }; | ||||
| 
 | ||||
| /* currently, trace_kprobe only supports X86. */ | ||||
| 
 | ||||
| struct fetch_func { | ||||
| 	unsigned long (*func)(struct pt_regs *, void *); | ||||
| 	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 { | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Masami Hiramatsu
						Masami Hiramatsu