mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-16 17:23:55 +08:00
perf c2c report: Add 'dcacheline' dimension key
It displays cacheline address as hex number. Using c2c wrapper to standard 'dcacheline' object to defined own header and simple (just address) cacheline output. Signed-off-by: Jiri Olsa <jolsa@kernel.org> Cc: Andi Kleen <andi@firstfloor.org> Cc: David Ahern <dsahern@gmail.com> Cc: Don Zickus <dzickus@redhat.com> Cc: Joe Mario <jmario@redhat.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Link: http://lkml.kernel.org/r/1474558645-19956-21-git-send-email-jolsa@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
600a8cf45b
commit
cbb88500a7
@ -1,5 +1,6 @@
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/stringify.h>
|
||||
#include "util.h"
|
||||
#include "debug.h"
|
||||
#include "builtin.h"
|
||||
@ -7,6 +8,7 @@
|
||||
#include "mem-events.h"
|
||||
#include "session.h"
|
||||
#include "hist.h"
|
||||
#include "sort.h"
|
||||
#include "tool.h"
|
||||
#include "data.h"
|
||||
#include "sort.h"
|
||||
@ -273,6 +275,32 @@ static int c2c_header(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
|
||||
return scnprintf(hpp->buf, hpp->size, "%*s", width, text);
|
||||
}
|
||||
|
||||
#define HEX_STR(__s, __v) \
|
||||
({ \
|
||||
scnprintf(__s, sizeof(__s), "0x%" PRIx64, __v); \
|
||||
__s; \
|
||||
})
|
||||
|
||||
static int64_t
|
||||
dcacheline_cmp(struct perf_hpp_fmt *fmt __maybe_unused,
|
||||
struct hist_entry *left, struct hist_entry *right)
|
||||
{
|
||||
return sort__dcacheline_cmp(left, right);
|
||||
}
|
||||
|
||||
static int dcacheline_entry(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
|
||||
struct hist_entry *he)
|
||||
{
|
||||
uint64_t addr = 0;
|
||||
int width = c2c_width(fmt, hpp, he->hists);
|
||||
char buf[20];
|
||||
|
||||
if (he->mem_info)
|
||||
addr = cl_address(he->mem_info->daddr.addr);
|
||||
|
||||
return scnprintf(hpp->buf, hpp->size, "%*s", width, HEX_STR(buf, addr));
|
||||
}
|
||||
|
||||
#define HEADER_LOW(__h) \
|
||||
{ \
|
||||
.line[1] = { \
|
||||
@ -308,7 +336,16 @@ static int c2c_header(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
|
||||
}, \
|
||||
}
|
||||
|
||||
static struct c2c_dimension dim_dcacheline = {
|
||||
.header = HEADER_LOW("Cacheline"),
|
||||
.name = "dcacheline",
|
||||
.cmp = dcacheline_cmp,
|
||||
.entry = dcacheline_entry,
|
||||
.width = 18,
|
||||
};
|
||||
|
||||
static struct c2c_dimension *dimensions[] = {
|
||||
&dim_dcacheline,
|
||||
NULL,
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user