2012-06-17 19:52:06 +00:00
|
|
|
From 518b3fa7b9cc1ac4f76a28df3349f195444ea2d4 Mon Sep 17 00:00:00 2001
|
2011-11-20 00:01:55 +00:00
|
|
|
From: Thomas Gleixner <tglx@linutronix.de>
|
2012-06-17 19:52:06 +00:00
|
|
|
Date: Fri, 9 Sep 2011 16:55:53 +0200
|
|
|
|
Subject: [155/254] ftrace-crap.patch
|
2011-11-20 00:01:55 +00:00
|
|
|
|
|
|
|
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
|
|
|
---
|
|
|
|
kernel/trace/trace.c | 26 ++++++++++++++++++++++++--
|
|
|
|
kernel/trace/trace.h | 1 -
|
|
|
|
2 files changed, 24 insertions(+), 3 deletions(-)
|
|
|
|
|
2012-06-17 19:52:06 +00:00
|
|
|
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
|
|
|
|
index 096ca81..6665bea 100644
|
|
|
|
--- a/kernel/trace/trace.c
|
|
|
|
+++ b/kernel/trace/trace.c
|
2012-06-04 21:20:09 +00:00
|
|
|
@@ -414,11 +414,13 @@ EXPORT_SYMBOL_GPL(tracing_is_on);
|
2011-11-20 00:01:55 +00:00
|
|
|
*/
|
|
|
|
void trace_wake_up(void)
|
|
|
|
{
|
|
|
|
+#ifndef CONFIG_PREEMPT_RT_FULL
|
|
|
|
const unsigned long delay = msecs_to_jiffies(2);
|
|
|
|
|
|
|
|
if (trace_flags & TRACE_ITER_BLOCK)
|
|
|
|
return;
|
|
|
|
schedule_delayed_work(&wakeup_work, delay);
|
|
|
|
+#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
static int __init set_buf_size(char *str)
|
2012-06-17 19:52:06 +00:00
|
|
|
@@ -775,6 +777,12 @@ update_max_tr_single(struct trace_array *tr, struct task_struct *tsk, int cpu)
|
2011-11-20 00:01:55 +00:00
|
|
|
}
|
|
|
|
#endif /* CONFIG_TRACER_MAX_TRACE */
|
|
|
|
|
|
|
|
+#ifndef CONFIG_PREEMPT_RT_FULL
|
|
|
|
+static void default_wait_pipe(struct trace_iterator *iter);
|
|
|
|
+#else
|
|
|
|
+#define default_wait_pipe poll_wait_pipe
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
/**
|
|
|
|
* register_tracer - register a tracer with the ftrace system.
|
|
|
|
* @type - the plugin for the tracer
|
2012-06-17 19:52:06 +00:00
|
|
|
@@ -3303,6 +3311,7 @@ static int tracing_release_pipe(struct inode *inode, struct file *file)
|
2011-11-20 00:01:55 +00:00
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
+#ifndef CONFIG_PREEMPT_RT_FULL
|
|
|
|
static unsigned int
|
|
|
|
tracing_poll_pipe(struct file *filp, poll_table *poll_table)
|
|
|
|
{
|
2012-06-17 19:52:06 +00:00
|
|
|
@@ -3324,8 +3333,7 @@ tracing_poll_pipe(struct file *filp, poll_table *poll_table)
|
2011-11-20 00:01:55 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
-
|
|
|
|
-void default_wait_pipe(struct trace_iterator *iter)
|
|
|
|
+static void default_wait_pipe(struct trace_iterator *iter)
|
|
|
|
{
|
|
|
|
DEFINE_WAIT(wait);
|
|
|
|
|
2012-06-17 19:52:06 +00:00
|
|
|
@@ -3336,6 +3344,20 @@ void default_wait_pipe(struct trace_iterator *iter)
|
2011-11-20 00:01:55 +00:00
|
|
|
|
|
|
|
finish_wait(&trace_wait, &wait);
|
|
|
|
}
|
|
|
|
+#else
|
|
|
|
+static unsigned int
|
|
|
|
+tracing_poll_pipe(struct file *filp, poll_table *poll_table)
|
|
|
|
+{
|
|
|
|
+ struct trace_iterator *iter = filp->private_data;
|
|
|
|
+
|
|
|
|
+ if ((trace_flags & TRACE_ITER_BLOCK) || !trace_empty(iter))
|
|
|
|
+ return POLLIN | POLLRDNORM;
|
|
|
|
+ poll_wait_pipe(iter);
|
|
|
|
+ if (!trace_empty(iter))
|
|
|
|
+ return POLLIN | POLLRDNORM;
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
+#endif
|
|
|
|
|
|
|
|
/*
|
|
|
|
* This is a make-shift waitqueue.
|
2012-06-17 19:52:06 +00:00
|
|
|
diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h
|
|
|
|
index f95d65d..fe96b7c 100644
|
|
|
|
--- a/kernel/trace/trace.h
|
|
|
|
+++ b/kernel/trace/trace.h
|
|
|
|
@@ -354,7 +354,6 @@ void trace_init_global_iter(struct trace_iterator *iter);
|
2011-11-20 00:01:55 +00:00
|
|
|
|
|
|
|
void tracing_iter_reset(struct trace_iterator *iter, int cpu);
|
|
|
|
|
|
|
|
-void default_wait_pipe(struct trace_iterator *iter);
|
|
|
|
void poll_wait_pipe(struct trace_iterator *iter);
|
|
|
|
|
|
|
|
void ftrace(struct trace_array *tr,
|