| From 0ec48e3c940c8354f40d578a47bc8ef1f2b8a1f7 Mon Sep 17 00:00:00 2001 |
| From: Thomas Gleixner <tglx@linutronix.de> |
| Date: Fri, 9 Sep 2011 16:55:53 +0200 |
| Subject: [PATCH 155/274] ftrace-crap.patch |
| |
| 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(-) |
| |
| diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c |
| index 1b35162..f360d0d 100644 |
| --- a/kernel/trace/trace.c |
| +++ b/kernel/trace/trace.c |
| @@ -414,11 +414,13 @@ EXPORT_SYMBOL_GPL(tracing_is_on); |
| */ |
| 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) |
| @@ -775,6 +777,12 @@ update_max_tr_single(struct trace_array *tr, struct task_struct *tsk, int cpu) |
| } |
| #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 |
| @@ -3305,6 +3313,7 @@ static int tracing_release_pipe(struct inode *inode, struct file *file) |
| return 0; |
| } |
| |
| +#ifndef CONFIG_PREEMPT_RT_FULL |
| static unsigned int |
| tracing_poll_pipe(struct file *filp, poll_table *poll_table) |
| { |
| @@ -3326,8 +3335,7 @@ tracing_poll_pipe(struct file *filp, poll_table *poll_table) |
| } |
| } |
| |
| - |
| -void default_wait_pipe(struct trace_iterator *iter) |
| +static void default_wait_pipe(struct trace_iterator *iter) |
| { |
| DEFINE_WAIT(wait); |
| |
| @@ -3338,6 +3346,20 @@ void default_wait_pipe(struct trace_iterator *iter) |
| |
| 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. |
| 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); |
| |
| 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, |
| -- |
| 1.7.10.4 |
| |