Message ID | 20240722101202.26915-8-james.clark@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | coresight: Use per-sink trace ID maps for Perf sessions | expand |
On Mon, 22 Jul 2024 at 11:13, James Clark <james.clark@linaro.org> wrote: > > From: James Clark <james.clark@arm.com> > > Now that we have overlapping trace IDs it's also useful to know what the > queue number is to be able to distinguish the source of the trace so > print it inline. Hide it behind the -v option because it might not be > obvious to users what the queue number is. > > Signed-off-by: James Clark <james.clark@arm.com> > Signed-off-by: James Clark <james.clark@linaro.org> > --- > tools/perf/util/cs-etm-decoder/cs-etm-decoder.c | 4 ++-- > tools/perf/util/cs-etm-decoder/cs-etm-decoder.h | 2 +- > tools/perf/util/cs-etm.c | 13 ++++++++++--- > 3 files changed, 13 insertions(+), 6 deletions(-) > > diff --git a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c > index d49c3e9c7c21..b78ef0262135 100644 > --- a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c > +++ b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c > @@ -41,7 +41,7 @@ const u32 INSTR_PER_NS = 10; > > struct cs_etm_decoder { > void *data; > - void (*packet_printer)(const char *msg); > + void (*packet_printer)(const char *msg, void *data); > bool suppress_printing; > dcd_tree_handle_t dcd_tree; > cs_etm_mem_cb_type mem_access; > @@ -202,7 +202,7 @@ static void cs_etm_decoder__print_str_cb(const void *p_context, > const struct cs_etm_decoder *decoder = p_context; > > if (p_context && str_len && !decoder->suppress_printing) > - decoder->packet_printer(msg); > + decoder->packet_printer(msg, decoder->data); > } > > static int > diff --git a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.h b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.h > index 272c2efe78ee..12c782fa6db2 100644 > --- a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.h > +++ b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.h > @@ -60,7 +60,7 @@ struct cs_etm_trace_params { > > struct cs_etm_decoder_params { > int operation; > - void (*packet_printer)(const char *msg); > + void (*packet_printer)(const char *msg, void *data); > cs_etm_mem_cb_type mem_acc_cb; > bool formatted; > bool fsyncs; > diff --git a/tools/perf/util/cs-etm.c b/tools/perf/util/cs-etm.c > index b11b0cae608e..6298a5c7a651 100644 > --- a/tools/perf/util/cs-etm.c > +++ b/tools/perf/util/cs-etm.c > @@ -762,15 +762,22 @@ static void cs_etm__packet_swap(struct cs_etm_auxtrace *etm, > } > } > > -static void cs_etm__packet_dump(const char *pkt_string) > +static void cs_etm__packet_dump(const char *pkt_string, void *data) > { > const char *color = PERF_COLOR_BLUE; > int len = strlen(pkt_string); > + struct cs_etm_queue *etmq = data; > + char queue_nr[64]; > + > + if (verbose) > + snprintf(queue_nr, sizeof(queue_nr), "Qnr:%d; ", etmq->queue_nr); > + else > + queue_nr[0] = '\0'; > > if (len && (pkt_string[len-1] == '\n')) > - color_fprintf(stdout, color, " %s", pkt_string); > + color_fprintf(stdout, color, " %s%s", queue_nr, pkt_string); > else > - color_fprintf(stdout, color, " %s\n", pkt_string); > + color_fprintf(stdout, color, " %s%s\n", queue_nr, pkt_string); > > fflush(stdout); > } > -- > 2.34.1 > Reviewed-by: Mike Leach <mike.leach@linaro.org>
diff --git a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c index d49c3e9c7c21..b78ef0262135 100644 --- a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c +++ b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c @@ -41,7 +41,7 @@ const u32 INSTR_PER_NS = 10; struct cs_etm_decoder { void *data; - void (*packet_printer)(const char *msg); + void (*packet_printer)(const char *msg, void *data); bool suppress_printing; dcd_tree_handle_t dcd_tree; cs_etm_mem_cb_type mem_access; @@ -202,7 +202,7 @@ static void cs_etm_decoder__print_str_cb(const void *p_context, const struct cs_etm_decoder *decoder = p_context; if (p_context && str_len && !decoder->suppress_printing) - decoder->packet_printer(msg); + decoder->packet_printer(msg, decoder->data); } static int diff --git a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.h b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.h index 272c2efe78ee..12c782fa6db2 100644 --- a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.h +++ b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.h @@ -60,7 +60,7 @@ struct cs_etm_trace_params { struct cs_etm_decoder_params { int operation; - void (*packet_printer)(const char *msg); + void (*packet_printer)(const char *msg, void *data); cs_etm_mem_cb_type mem_acc_cb; bool formatted; bool fsyncs; diff --git a/tools/perf/util/cs-etm.c b/tools/perf/util/cs-etm.c index b11b0cae608e..6298a5c7a651 100644 --- a/tools/perf/util/cs-etm.c +++ b/tools/perf/util/cs-etm.c @@ -762,15 +762,22 @@ static void cs_etm__packet_swap(struct cs_etm_auxtrace *etm, } } -static void cs_etm__packet_dump(const char *pkt_string) +static void cs_etm__packet_dump(const char *pkt_string, void *data) { const char *color = PERF_COLOR_BLUE; int len = strlen(pkt_string); + struct cs_etm_queue *etmq = data; + char queue_nr[64]; + + if (verbose) + snprintf(queue_nr, sizeof(queue_nr), "Qnr:%d; ", etmq->queue_nr); + else + queue_nr[0] = '\0'; if (len && (pkt_string[len-1] == '\n')) - color_fprintf(stdout, color, " %s", pkt_string); + color_fprintf(stdout, color, " %s%s", queue_nr, pkt_string); else - color_fprintf(stdout, color, " %s\n", pkt_string); + color_fprintf(stdout, color, " %s%s\n", queue_nr, pkt_string); fflush(stdout); }