* [PATCH 3/3] ftrace: add debugfs entry 'failures'
@ 2008-06-01 16:17 Abhishek Sagar
2008-06-10 9:58 ` Ingo Molnar
0 siblings, 1 reply; 2+ messages in thread
From: Abhishek Sagar @ 2008-06-01 16:17 UTC (permalink / raw)
To: rostedt; +Cc: Ingo Molnar, Thomas Gleixner, LKML
Identify functions which had their mcount call-site updates failed. This can
help us track functions which ftrace shouldn't fiddle with, and are thus not
being traced. If there is no race with any external agent which is modifying
the mcount call-site, then this file displays no entries (normal case).
Signed-off-by: Abhishek Sagar <sagar.abhishek@gmail.com>
---
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index 2b287ea..0119d62 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -743,6 +743,7 @@ enum {
FTRACE_ITER_FILTER = (1 << 0),
FTRACE_ITER_CONT = (1 << 1),
FTRACE_ITER_NOTRACE = (1 << 2),
+ FTRACE_ITER_FAILURES = (1 << 3),
};
#define FTRACE_BUFF_MAX (KSYM_SYMBOL_LEN+4) /* room for wildcards */
@@ -774,9 +775,16 @@ t_next(struct seq_file *m, void *v, loff_t *pos)
}
} else {
rec = &iter->pg->records[iter->idx++];
- if ((rec->flags & FTRACE_FL_FAILED) ||
+ if ((!(iter->flags & FTRACE_ITER_FAILURES) &&
+ (rec->flags & FTRACE_FL_FAILED)) ||
+
+ ((iter->flags & FTRACE_ITER_FAILURES) &&
+ (!(rec->flags & FTRACE_FL_FAILED) ||
+ (rec->flags & FTRACE_FL_FREE))) ||
+
((iter->flags & FTRACE_ITER_FILTER) &&
!(rec->flags & FTRACE_FL_FILTER)) ||
+
((iter->flags & FTRACE_ITER_NOTRACE) &&
!(rec->flags & FTRACE_FL_NOTRACE))) {
rec = NULL;
@@ -871,6 +879,24 @@ int ftrace_avail_release(struct inode *inode, struct file *file)
return 0;
}
+static int
+ftrace_failures_open(struct inode *inode, struct file *file)
+{
+ int ret;
+ struct seq_file *m;
+ struct ftrace_iterator *iter;
+
+ ret = ftrace_avail_open(inode, file);
+ if (!ret) {
+ m = (struct seq_file *)file->private_data;
+ iter = (struct ftrace_iterator *)m->private;
+ iter->flags = FTRACE_ITER_FAILURES;
+ }
+
+ return ret;
+}
+
+
static void ftrace_filter_reset(int enable)
{
struct ftrace_page *pg;
@@ -1235,6 +1261,13 @@ static struct file_operations ftrace_avail_fops = {
.release = ftrace_avail_release,
};
+static struct file_operations ftrace_failures_fops = {
+ .open = ftrace_failures_open,
+ .read = seq_read,
+ .llseek = seq_lseek,
+ .release = ftrace_avail_release,
+};
+
static struct file_operations ftrace_filter_fops = {
.open = ftrace_filter_open,
.read = ftrace_regex_read,
@@ -1329,6 +1362,11 @@ static __init int ftrace_init_debugfs(void)
pr_warning("Could not create debugfs "
"'available_filter_functions' entry\n");
+ entry = debugfs_create_file("failures", 0444,
+ d_tracer, NULL, &ftrace_failures_fops);
+ if (!entry)
+ pr_warning("Could not create debugfs 'failures' entry\n");
+
entry = debugfs_create_file("set_ftrace_filter", 0644, d_tracer,
NULL, &ftrace_filter_fops);
if (!entry)
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH 3/3] ftrace: add debugfs entry 'failures'
2008-06-01 16:17 [PATCH 3/3] ftrace: add debugfs entry 'failures' Abhishek Sagar
@ 2008-06-10 9:58 ` Ingo Molnar
0 siblings, 0 replies; 2+ messages in thread
From: Ingo Molnar @ 2008-06-10 9:58 UTC (permalink / raw)
To: Abhishek Sagar; +Cc: rostedt, Thomas Gleixner, LKML
* Abhishek Sagar <sagar.abhishek@gmail.com> wrote:
> Identify functions which had their mcount call-site updates failed.
> This can help us track functions which ftrace shouldn't fiddle with,
> and are thus not being traced. If there is no race with any external
> agent which is modifying the mcount call-site, then this file displays
> no entries (normal case).
applied to tip/tracing/ftrace, thanks.
Ingo
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2008-06-10 9:58 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-06-01 16:17 [PATCH 3/3] ftrace: add debugfs entry 'failures' Abhishek Sagar
2008-06-10 9:58 ` Ingo Molnar
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox