perf probe: Provide perf interface for uprobes
- Enhances perf to probe user space executables and libraries. - Enhances -F/--funcs option of "perf probe" to list possible probe points in an executable file or library. - Documents userspace probing support in perf. [ Probing a function in the executable using function name ] perf probe -x /bin/zsh zfree [ Probing a library function using function name ] perf probe -x /lib64/libc.so.6 malloc [ list probe-able functions in an executable ] perf probe -F -x /bin/zsh [ list probe-able functions in an library] perf probe -F -x /lib/libc.so.6 Signed-off-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com> Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com> Cc: Andi Kleen <andi@firstfloor.org> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Anton Arapov <anton@redhat.com> Cc: Christoph Hellwig <hch@infradead.org> Cc: Ingo Molnar <mingo@elte.hu> Cc: Jim Keniston <jkenisto@linux.vnet.ibm.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Linux-mm <linux-mm@kvack.org> Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> Cc: Oleg Nesterov <oleg@redhat.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Thomas Gleixner <tglx@linutronix.de> Link: http://lkml.kernel.org/r/20120416120909.30661.99781.sendpatchset@srdronam.in.ibm.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
committed by
Arnaldo Carvalho de Melo
parent
5dcefda0fd
commit
225466f1c2
@@ -7,7 +7,7 @@
|
||||
|
||||
extern bool probe_event_dry_run;
|
||||
|
||||
/* kprobe-tracer tracing point */
|
||||
/* kprobe-tracer and uprobe-tracer tracing point */
|
||||
struct probe_trace_point {
|
||||
char *symbol; /* Base symbol */
|
||||
char *module; /* Module name */
|
||||
@@ -21,7 +21,7 @@ struct probe_trace_arg_ref {
|
||||
long offset; /* Offset value */
|
||||
};
|
||||
|
||||
/* kprobe-tracer tracing argument */
|
||||
/* kprobe-tracer and uprobe-tracer tracing argument */
|
||||
struct probe_trace_arg {
|
||||
char *name; /* Argument name */
|
||||
char *value; /* Base value */
|
||||
@@ -29,12 +29,13 @@ struct probe_trace_arg {
|
||||
struct probe_trace_arg_ref *ref; /* Referencing offset */
|
||||
};
|
||||
|
||||
/* kprobe-tracer tracing event (point + arg) */
|
||||
/* kprobe-tracer and uprobe-tracer tracing event (point + arg) */
|
||||
struct probe_trace_event {
|
||||
char *event; /* Event name */
|
||||
char *group; /* Group name */
|
||||
struct probe_trace_point point; /* Trace point */
|
||||
int nargs; /* Number of args */
|
||||
bool uprobes; /* uprobes only */
|
||||
struct probe_trace_arg *args; /* Arguments */
|
||||
};
|
||||
|
||||
@@ -70,6 +71,7 @@ struct perf_probe_event {
|
||||
char *group; /* Group name */
|
||||
struct perf_probe_point point; /* Probe point */
|
||||
int nargs; /* Number of arguments */
|
||||
bool uprobes;
|
||||
struct perf_probe_arg *args; /* Arguments */
|
||||
};
|
||||
|
||||
@@ -129,8 +131,8 @@ extern int show_line_range(struct line_range *lr, const char *module);
|
||||
extern int show_available_vars(struct perf_probe_event *pevs, int npevs,
|
||||
int max_probe_points, const char *module,
|
||||
struct strfilter *filter, bool externs);
|
||||
extern int show_available_funcs(const char *module, struct strfilter *filter);
|
||||
|
||||
extern int show_available_funcs(const char *module, struct strfilter *filter,
|
||||
bool user);
|
||||
|
||||
/* Maximum index number of event-name postfix */
|
||||
#define MAX_EVENT_INDEX 1024
|
||||
|
||||
Reference in New Issue
Block a user