lkml.org 
[lkml]   [2020]   [Aug]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH V6 10/16] perf mem: Clean up output format
    Date
    Now, "--phys-data" is the only option which impacts the output format.
    A simple "if else" is enough to handle the option. But there will be
    more options added, e.g. "--data-page-size", which also impact the
    output format. The code will become too complex to be maintained.

    Divide the big printf into several small pieces. Output the specific
    piece only if the related option is applied.

    No functional change.

    Signed-off-by: Kan Liang <kan.liang@linux.intel.com>
    ---
    tools/perf/builtin-mem.c | 93 ++++++++++++++++------------------------
    1 file changed, 38 insertions(+), 55 deletions(-)

    diff --git a/tools/perf/builtin-mem.c b/tools/perf/builtin-mem.c
    index 7fb04f41cd99..200ff7c9d7b7 100644
    --- a/tools/perf/builtin-mem.c
    +++ b/tools/perf/builtin-mem.c
    @@ -147,7 +147,7 @@ dump_raw_samples(struct perf_tool *tool,
    {
    struct perf_mem *mem = container_of(tool, struct perf_mem, tool);
    struct addr_location al;
    - const char *fmt;
    + const char *fmt, *field_sep;

    if (machine__resolve(machine, &al, sample) < 0) {
    fprintf(stderr, "problem processing %d event, skipping it.\n",
    @@ -161,60 +161,41 @@ dump_raw_samples(struct perf_tool *tool,
    if (al.map != NULL)
    al.map->dso->hit = 1;

    - if (mem->phys_addr) {
    - if (symbol_conf.field_sep) {
    - fmt = "%d%s%d%s0x%"PRIx64"%s0x%"PRIx64"%s0x%016"PRIx64
    - "%s%"PRIu64"%s0x%"PRIx64"%s%s:%s\n";
    - } else {
    - fmt = "%5d%s%5d%s0x%016"PRIx64"%s0x016%"PRIx64
    - "%s0x%016"PRIx64"%s%5"PRIu64"%s0x%06"PRIx64
    - "%s%s:%s\n";
    - symbol_conf.field_sep = " ";
    - }
    -
    - printf(fmt,
    - sample->pid,
    - symbol_conf.field_sep,
    - sample->tid,
    - symbol_conf.field_sep,
    - sample->ip,
    - symbol_conf.field_sep,
    - sample->addr,
    - symbol_conf.field_sep,
    - sample->phys_addr,
    - symbol_conf.field_sep,
    - sample->weight,
    - symbol_conf.field_sep,
    - sample->data_src,
    - symbol_conf.field_sep,
    - al.map ? (al.map->dso ? al.map->dso->long_name : "???") : "???",
    - al.sym ? al.sym->name : "???");
    + field_sep = symbol_conf.field_sep;
    + if (field_sep) {
    + fmt = "%d%s%d%s0x%"PRIx64"%s0x%"PRIx64"%s";
    } else {
    - if (symbol_conf.field_sep) {
    - fmt = "%d%s%d%s0x%"PRIx64"%s0x%"PRIx64"%s%"PRIu64
    - "%s0x%"PRIx64"%s%s:%s\n";
    - } else {
    - fmt = "%5d%s%5d%s0x%016"PRIx64"%s0x016%"PRIx64
    - "%s%5"PRIu64"%s0x%06"PRIx64"%s%s:%s\n";
    - symbol_conf.field_sep = " ";
    - }
    + fmt = "%5d%s%5d%s0x%016"PRIx64"%s0x016%"PRIx64"%s";
    + symbol_conf.field_sep = " ";
    + }
    + printf(fmt,
    + sample->pid,
    + symbol_conf.field_sep,
    + sample->tid,
    + symbol_conf.field_sep,
    + sample->ip,
    + symbol_conf.field_sep,
    + sample->addr,
    + symbol_conf.field_sep);

    - printf(fmt,
    - sample->pid,
    - symbol_conf.field_sep,
    - sample->tid,
    - symbol_conf.field_sep,
    - sample->ip,
    - symbol_conf.field_sep,
    - sample->addr,
    - symbol_conf.field_sep,
    - sample->weight,
    - symbol_conf.field_sep,
    - sample->data_src,
    - symbol_conf.field_sep,
    - al.map ? (al.map->dso ? al.map->dso->long_name : "???") : "???",
    - al.sym ? al.sym->name : "???");
    + if (mem->phys_addr) {
    + printf("0x%016"PRIx64"%s",
    + sample->phys_addr,
    + symbol_conf.field_sep);
    }
    +
    + if (field_sep)
    + fmt = "%"PRIu64"%s0x%"PRIx64"%s%s:%s\n";
    + else
    + fmt = "%5"PRIu64"%s0x%06"PRIx64"%s%s:%s\n";
    +
    + printf(fmt,
    + sample->weight,
    + symbol_conf.field_sep,
    + sample->data_src,
    + symbol_conf.field_sep,
    + al.map ? (al.map->dso ? al.map->dso->long_name : "???") : "???",
    + al.sym ? al.sym->name : "???");
    out_put:
    addr_location__put(&al);
    return 0;
    @@ -254,10 +235,12 @@ static int report_raw_events(struct perf_mem *mem)
    if (ret < 0)
    goto out_delete;

    + printf("# PID, TID, IP, ADDR, ");
    +
    if (mem->phys_addr)
    - printf("# PID, TID, IP, ADDR, PHYS ADDR, LOCAL WEIGHT, DSRC, SYMBOL\n");
    - else
    - printf("# PID, TID, IP, ADDR, LOCAL WEIGHT, DSRC, SYMBOL\n");
    + printf("PHYS ADDR, ");
    +
    + printf("LOCAL WEIGHT, DSRC, SYMBOL\n");

    ret = perf_session__process_events(session);

    --
    2.17.1
    \
     
     \ /
      Last update: 2020-08-10 23:28    [W:4.300 / U:0.288 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site