aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/util/mem-events.c
diff options
context:
space:
mode:
authorJiri Olsa <jolsa@kernel.org>2016-02-24 03:46:48 -0500
committerArnaldo Carvalho de Melo <acme@redhat.com>2016-02-24 08:20:45 -0500
commit2c07af13dcd4d971578041b50598f1269b33e68a (patch)
tree738fae5d702c8f9ccbd647ae95b9cd5bcbc77348 /tools/perf/util/mem-events.c
parent071e9a1e12dceaec6f9d3ffe6e77ee68364166d6 (diff)
perf tools: Introduce perf_mem__snp_scnprintf function
Move meminfo's snp display function into mem-events.c object, so it could be reused later from script code. Signed-off-by: Jiri Olsa <jolsa@kernel.org> Cc: Andi Kleen <ak@linux.intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Stephane Eranian <eranian@google.com> Link: http://lkml.kernel.org/r/1456303616-26926-8-git-send-email-jolsa@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/util/mem-events.c')
-rw-r--r--tools/perf/util/mem-events.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/tools/perf/util/mem-events.c b/tools/perf/util/mem-events.c
index bddb1217d129..d03edc2ec607 100644
--- a/tools/perf/util/mem-events.c
+++ b/tools/perf/util/mem-events.c
@@ -183,3 +183,37 @@ void perf_mem__lvl_scnprintf(char *out, size_t sz, struct mem_info *mem_info)
183 if (miss) 183 if (miss)
184 strncat(out, " miss", sz - l); 184 strncat(out, " miss", sz - l);
185} 185}
186
187static const char * const snoop_access[] = {
188 "N/A",
189 "None",
190 "Miss",
191 "Hit",
192 "HitM",
193};
194
195void perf_mem__snp_scnprintf(char *out, size_t sz, struct mem_info *mem_info)
196{
197 size_t i, l = 0;
198 u64 m = PERF_MEM_SNOOP_NA;
199
200 sz -= 1; /* -1 for null termination */
201 out[0] = '\0';
202
203 if (mem_info)
204 m = mem_info->data_src.mem_snoop;
205
206 for (i = 0; m && i < ARRAY_SIZE(snoop_access); i++, m >>= 1) {
207 if (!(m & 0x1))
208 continue;
209 if (l) {
210 strcat(out, " or ");
211 l += 4;
212 }
213 strncat(out, snoop_access[i], sz - l);
214 l += strlen(snoop_access[i]);
215 }
216
217 if (*out == '\0')
218 strcpy(out, "N/A");
219}