summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Rostedt2009-02-17 05:06:01 +0100
committerSteven Rostedt2009-02-17 05:06:01 +0100
commit809dcf29ce4e1723709910878e050bd187617e0e (patch)
tree4747ede5ad0678d6ae88176f403a2c26f277182e
parentftrace: show selected functions in set_ftrace_filter (diff)
downloadkernel-qcow2-linux-809dcf29ce4e1723709910878e050bd187617e0e.tar.gz
kernel-qcow2-linux-809dcf29ce4e1723709910878e050bd187617e0e.tar.xz
kernel-qcow2-linux-809dcf29ce4e1723709910878e050bd187617e0e.zip
ftrace: add pretty print to selected fuction traces
This patch adds a call back for the tracers that have hooks to selected functions. This allows the tracer to show better output in the set_ftrace_filter file. Signed-off-by: Steven Rostedt <srostedt@redhat.com>
-rw-r--r--include/linux/ftrace.h6
-rw-r--r--kernel/trace/ftrace.c3
2 files changed, 9 insertions, 0 deletions
diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h
index 13918c4400ad..b331e216d8a1 100644
--- a/include/linux/ftrace.h
+++ b/include/linux/ftrace.h
@@ -106,12 +106,18 @@ struct ftrace_func_command {
/* asm/ftrace.h must be defined for archs supporting dynamic ftrace */
#include <asm/ftrace.h>
+struct seq_file;
+
struct ftrace_hook_ops {
void (*func)(unsigned long ip,
unsigned long parent_ip,
void **data);
int (*callback)(unsigned long ip, void **data);
void (*free)(void **data);
+ int (*print)(struct seq_file *m,
+ unsigned long ip,
+ struct ftrace_hook_ops *ops,
+ void *data);
};
extern int
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index 1e058848cddb..6533c1d20155 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -834,6 +834,9 @@ static int t_hash_show(struct seq_file *m, void *v)
rec = hlist_entry(hnd, struct ftrace_func_hook, node);
+ if (rec->ops->print)
+ return rec->ops->print(m, rec->ip, rec->ops, rec->data);
+
kallsyms_lookup(rec->ip, NULL, NULL, NULL, str);
seq_printf(m, "%s:", str);