Messages in this thread |  | | | Subject | Re: [PATCH] tracing: wake up tasks reading trace_pipe on write to trace_marker | | From | Steven Rostedt <> | | Date | Fri, 06 Aug 2010 16:38:56 -0400 |
| |
On Wed, 2010-07-28 at 00:44 +0200, Marcin Slusarz wrote: > Currently we rely on other code periodically waking up trace reader. > If there aren't any other data than markers, reader will never be woken up. > Fix it. > > Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com> > Cc: Steven Rostedt <rostedt@goodmis.org> > Cc: Frederic Weisbecker <fweisbec@gmail.com> > Cc: Ingo Molnar <mingo@redhat.com> > --- > kernel/trace/trace.c | 1 + > 1 files changed, 1 insertions(+), 0 deletions(-) > > diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c > index 086d363..02e04c8 100644 > --- a/kernel/trace/trace.c > +++ b/kernel/trace/trace.c > @@ -1520,6 +1520,7 @@ int trace_array_vprintk(struct trace_array *tr, > if (!filter_check_discard(call, entry, buffer, event)) { > ring_buffer_unlock_commit(buffer, event); > ftrace_trace_stack(buffer, irq_flags, 6, pc); > + trace_wake_up(); > } >
This can't work. trace_printk() and friends must be able to be used anywhere. This can cause race conditions with the rq locks in the scheduler.
But you do bring up a good idea. That is, perhaps we should have a way to attach to known safe tracepoints that we can hook to to check if a wake up should happen or not.
-- Steve
|  |