On Fri, 2012-12-07 at 11:07 +0900, Hiraku Toyooka wrote: > Hi, Steven, > > (2012/11/30 23:17), Steven Rostedt wrote: > [snip] > > > > Actually, I would have: > > > > status\input | 0 | 1 | else | > > --------------+------------+------------+------------+ > > not allocated |(do nothing)| alloc+swap | EINVAL | > > --------------+------------+------------+------------+ > > allocated | free | swap | clear | > > --------------+------------+------------+------------+ > > > > Perhaps we don't need to do the clear on swap, just let the trace > > continue where it left off? But in case we should swap... > > > > I think we don't need the clear on swap too. > I'll update my patches like this table. > > > There's a fast way to clear the tracer. Look at what the wakeup tracer > > does. We can make that generic. If you want, I can write that code up > > too. Hmm, maybe I'll do that, as it will speed things up for > > everyone :-) > > > > (I looked over the wakeup tracer, but I couldn't find that code...)
Heh, sorry, you needed to look at the "update_max_tr()" in kernel/trace/trace.c. Where we update the time_start value. Then the output skips all timestamps before that start. This is much more efficient than a 'reset', as we don't need to sync or anything. Just record the timestamp of where we want to consider the buffer started, and ignore any event before that. > I think that seq_read() calls s_stop() even if s_start() failed. > > seq_read()@fs/seq_file.c: > > p = m->op->start(m, &pos); > while (1) { > err = PTR_ERR(p); > if (!p || IS_ERR(p)) > break; > ... > } > m->op->stop(m, p); > > So, I think we need the check in s_stop(), don't we? Crap, you're right. Hmm, why was I thinking that it didn't. I better go and review some of my recent code to make sure that I didn't have that wrong assumption. -- Steve -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/