Subject: ftrace-crap.patch From: Thomas Gleixner Date: Fri, 09 Sep 2011 16:55:53 +0200 Signed-off-by: Thomas Gleixner --- kernel/trace/trace.c | 26 ++++++++++++++++++++++++-- kernel/trace/trace.h | 1 - 2 files changed, 24 insertions(+), 3 deletions(-) Index: linux-3.2/kernel/trace/trace.c =================================================================== --- linux-3.2.orig/kernel/trace/trace.c +++ linux-3.2/kernel/trace/trace.c @@ -359,11 +359,13 @@ static DECLARE_DELAYED_WORK(wakeup_work, */ 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) @@ -719,6 +721,12 @@ update_max_tr_single(struct trace_array } #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 @@ -3192,6 +3200,7 @@ static int tracing_release_pipe(struct i return 0; } +#ifndef CONFIG_PREEMPT_RT_FULL static unsigned int tracing_poll_pipe(struct file *filp, poll_table *poll_table) { @@ -3213,8 +3222,7 @@ tracing_poll_pipe(struct file *filp, pol } } - -void default_wait_pipe(struct trace_iterator *iter) +static void default_wait_pipe(struct trace_iterator *iter) { DEFINE_WAIT(wait); @@ -3225,6 +3233,20 @@ void default_wait_pipe(struct trace_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. Index: linux-3.2/kernel/trace/trace.h =================================================================== --- linux-3.2.orig/kernel/trace/trace.h +++ linux-3.2/kernel/trace/trace.h @@ -345,7 +345,6 @@ void trace_init_global_iter(struct trace 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,