Messages in this thread | | | Date | Sat, 27 Sep 2008 00:21:21 +0300 | From | Pekka Paalanen <> | Subject | Re: [PATCH -tip 2/3] Tracing/ftrace: Adapt mmiotrace to the new type of print_line |
| |
On Fri, 26 Sep 2008 17:44:07 +0200 Frederic Weisbecker <fweisbec@gmail.com> wrote:
> Adapt mmiotrace to the new print_line type. > By default, it refuses types it doesn't support. > But a tracer needs to print something to the seq anyway. > That's why it needs to warn about unsupported types. > > Pekka if you disagree with it, please don't hesitate to tell me.
Yes, I do disagree about printing stuff that doesn't belong there. First, I doubt printing bogus text is a right way to fix the early pipe EOF problem. Second, if you really have to do that, do it so that it obeys the mmiotrace log format specification. (I'd recommend a MARK entry.) The spec is in Documentation/tracers/mmiotrace.txt.
This is just a very quick comment, and I should look at your two patches better. I hope to do that during the weekend.
Was there supposed to be a third patch, as the subject suggests?
Thanks.
> Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com> > --- > diff --git a/kernel/trace/trace_mmiotrace.c b/kernel/trace/trace_mmiotrace.c > index 2bbb7dd..69480a5 100644 > --- a/kernel/trace/trace_mmiotrace.c > +++ b/kernel/trace/trace_mmiotrace.c > @@ -171,7 +171,7 @@ print_out: > return (ret == -EBUSY) ? 0 : ret; > } > > -static int mmio_print_rw(struct trace_iterator *iter) > +static enum print_line_t mmio_print_rw(struct trace_iterator *iter) > { > struct trace_entry *entry = iter->ent; > struct mmiotrace_rw *rw = &entry->field.mmiorw; > @@ -209,11 +209,11 @@ static int mmio_print_rw(struct trace_iterator *iter) > break; > } > if (ret) > - return 1; > - return 0; > + return TRACE_TYPE_HANDLED; > + return TRACE_TYPE_PARTIAL_LINE; > } > > -static int mmio_print_map(struct trace_iterator *iter) > +static enum print_line_t mmio_print_map(struct trace_iterator *iter) > { > struct trace_entry *entry = iter->ent; > struct mmiotrace_map *m = &entry->field.mmiomap; > @@ -221,7 +221,7 @@ static int mmio_print_map(struct trace_iterator *iter) > unsigned long long t = ns2usecs(entry->field.t); > unsigned long usec_rem = do_div(t, 1000000ULL); > unsigned secs = (unsigned long)t; > - int ret = 1; > + int ret; > > switch (entry->field.mmiorw.opcode) { > case MMIO_PROBE: > @@ -241,11 +241,11 @@ static int mmio_print_map(struct trace_iterator *iter) > break; > } > if (ret) > - return 1; > - return 0; > + return TRACE_TYPE_HANDLED; > + return TRACE_TYPE_PARTIAL_LINE; > } > > -static int mmio_print_mark(struct trace_iterator *iter) > +static enum print_line_t mmio_print_mark(struct trace_iterator *iter) > { > struct trace_entry *entry = iter->ent; > const char *msg = entry->field.print.buf; > @@ -258,16 +258,16 @@ static int mmio_print_mark(struct trace_iterator *iter) > /* The trailing newline must be in the message. */ > ret = trace_seq_printf(s, "MARK %lu.%06lu %s", secs, usec_rem, msg); > if (!ret) > - return 0; > + return TRACE_TYPE_PARTIAL_LINE; > > if (entry->field.flags & TRACE_FLAG_CONT) > trace_seq_print_cont(s, iter); > > - return 1; > + return TRACE_TYPE_HANDLED; > } > > /* return 0 to abort printing without consuming current entry in pipe mode */ > -static int mmio_print_line(struct trace_iterator *iter) > +static enum print_line_t mmio_print_line(struct trace_iterator *iter) > { > switch (iter->ent->type) { > case TRACE_MMIO_RW: > @@ -277,7 +277,9 @@ static int mmio_print_line(struct trace_iterator *iter) > case TRACE_PRINT: > return mmio_print_mark(iter); > default: > - return 0; /* ignore unknown entries whithout consuming */ > + /* ignore unknown entries */ > + trace_seq_printf(&iter->seq, "Unknown trace type\n"); > + return TRACE_TYPE_HANDLED; > } > } > >
-- Pekka Paalanen http://www.iki.fi/pq/
| |