[PATCH V6 01/12] perf tools: add debug prints

2013-07-16 Thread Adrian Hunter
It is useful to see the arguments to perf_event_open
and whether the perf events ring buffer was mmapped
per-cpu or per-thread.  That information will now be
displayed when verbose is 2 i.e option -vv

Signed-off-by: Adrian Hunter 
Acked-by: Jiri Olsa 
---
 tools/perf/util/evlist.c |  3 +++
 tools/perf/util/evsel.c  | 58 
 2 files changed, 61 insertions(+)

diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
index 42ea4e9..2b77b33 100644
--- a/tools/perf/util/evlist.c
+++ b/tools/perf/util/evlist.c
@@ -14,6 +14,7 @@
 #include "target.h"
 #include "evlist.h"
 #include "evsel.h"
+#include "debug.h"
 #include 
 
 #include "parse-events.h"
@@ -454,6 +455,7 @@ static int perf_evlist__mmap_per_cpu(struct perf_evlist 
*evlist, int prot, int m
int nr_cpus = cpu_map__nr(evlist->cpus);
int nr_threads = thread_map__nr(evlist->threads);
 
+   pr_debug2("perf event ring buffer mmapped per cpu\n");
for (cpu = 0; cpu < nr_cpus; cpu++) {
int output = -1;
 
@@ -492,6 +494,7 @@ static int perf_evlist__mmap_per_thread(struct perf_evlist 
*evlist, int prot, in
int thread;
int nr_threads = thread_map__nr(evlist->threads);
 
+   pr_debug2("perf event ring buffer mmapped per thread\n");
for (thread = 0; thread < nr_threads; thread++) {
int output = -1;
 
diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
index a635461..0b9c4fd 100644
--- a/tools/perf/util/evsel.c
+++ b/tools/perf/util/evsel.c
@@ -21,6 +21,7 @@
 #include "thread_map.h"
 #include "target.h"
 #include "perf_regs.h"
+#include "debug.h"
 
 static struct {
bool sample_id_all;
@@ -817,6 +818,58 @@ static int get_group_fd(struct perf_evsel *evsel, int cpu, 
int thread)
return fd;
 }
 
+static size_t perf_event_attr__fprintf(struct perf_event_attr *attr, FILE *fp)
+{
+   size_t ret;
+
+   ret = fprintf(fp, 
"\n");
+   ret += fprintf(fp, "perf_event_attr:\n");
+   ret += fprintf(fp, "  type%u\n", attr->type);
+   ret += fprintf(fp, "  size%u\n", attr->size);
+   ret += fprintf(fp, "  config  %#"PRIx64"\n", 
(uint64_t)attr->config);
+   ret += fprintf(fp, "  sample_period   %"PRIu64"\n", 
(uint64_t)attr->sample_period);
+   ret += fprintf(fp, "  sample_freq %"PRIu64"\n", 
(uint64_t)attr->sample_freq);
+   ret += fprintf(fp, "  sample_type %#"PRIx64"\n", 
(uint64_t)attr->sample_type);
+   ret += fprintf(fp, "  read_format %#"PRIx64"\n", 
(uint64_t)attr->read_format);
+
+   ret += fprintf(fp, "  disabled%u", attr->disabled);
+   ret += fprintf(fp, "inherit %u\n", attr->inherit);
+   ret += fprintf(fp, "  pinned  %u", attr->pinned);
+   ret += fprintf(fp, "exclusive   %u\n", attr->exclusive);
+   ret += fprintf(fp, "  exclude_user%u", attr->exclude_user);
+   ret += fprintf(fp, "exclude_kernel  %u\n", attr->exclude_kernel);
+   ret += fprintf(fp, "  exclude_hv  %u", attr->exclude_hv);
+   ret += fprintf(fp, "exclude_idle%u\n", attr->exclude_idle);
+   ret += fprintf(fp, "  mmap%u", attr->mmap);
+   ret += fprintf(fp, "comm%u\n", attr->comm);
+   ret += fprintf(fp, "  freq%u", attr->freq);
+   ret += fprintf(fp, "inherit_stat%u\n", attr->inherit_stat);
+   ret += fprintf(fp, "  enable_on_exec  %u", 
attr->enable_on_exec);
+   ret += fprintf(fp, "task%u\n", attr->task);
+   ret += fprintf(fp, "  watermark   %u", attr->watermark);
+   ret += fprintf(fp, "precise_ip  %u\n", attr->precise_ip);
+   ret += fprintf(fp, "  mmap_data   %u", attr->mmap_data);
+   ret += fprintf(fp, "sample_id_all   %u\n", attr->sample_id_all);
+   ret += fprintf(fp, "  exclude_host%u", attr->exclude_host);
+   ret += fprintf(fp, "exclude_guest   %u\n", attr->exclude_guest);
+   ret += fprintf(fp, "  excl.callchain.kern %u", 
attr->exclude_callchain_kernel);
+   ret += fprintf(fp, "excl.callchain.user %u\n", 
attr->exclude_callchain_user);
+
+   ret += fprintf(fp, "  wakeup_events   %u\n", attr->wakeup_events);
+   ret += fprintf(fp, "  wakeup_watermark%u\n", 
attr->wakeup_watermark);
+   ret += fprintf(fp, "  bp_type %#x\n", attr->bp_type);
+   ret += fprintf(fp, "  bp_addr %#"PRIx64"\n", 
(uint64_t)attr->bp_addr);
+   ret += fprintf(fp, "  config1 %#"PRIx64"\n", 
(uint64_t)attr->config1);
+   ret += fprintf(fp, "  bp_len  %"PRIu64"\n", 
(uint64_t)attr->bp_len);
+   ret += fprintf(fp, "  config2 %#"PRIx64"\n", 
(uint64_t)attr->config2);
+   ret += 

[PATCH V6 01/12] perf tools: add debug prints

2013-07-16 Thread Adrian Hunter
It is useful to see the arguments to perf_event_open
and whether the perf events ring buffer was mmapped
per-cpu or per-thread.  That information will now be
displayed when verbose is 2 i.e option -vv

Signed-off-by: Adrian Hunter adrian.hun...@intel.com
Acked-by: Jiri Olsa jo...@redhat.com
---
 tools/perf/util/evlist.c |  3 +++
 tools/perf/util/evsel.c  | 58 
 2 files changed, 61 insertions(+)

diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
index 42ea4e9..2b77b33 100644
--- a/tools/perf/util/evlist.c
+++ b/tools/perf/util/evlist.c
@@ -14,6 +14,7 @@
 #include target.h
 #include evlist.h
 #include evsel.h
+#include debug.h
 #include unistd.h
 
 #include parse-events.h
@@ -454,6 +455,7 @@ static int perf_evlist__mmap_per_cpu(struct perf_evlist 
*evlist, int prot, int m
int nr_cpus = cpu_map__nr(evlist-cpus);
int nr_threads = thread_map__nr(evlist-threads);
 
+   pr_debug2(perf event ring buffer mmapped per cpu\n);
for (cpu = 0; cpu  nr_cpus; cpu++) {
int output = -1;
 
@@ -492,6 +494,7 @@ static int perf_evlist__mmap_per_thread(struct perf_evlist 
*evlist, int prot, in
int thread;
int nr_threads = thread_map__nr(evlist-threads);
 
+   pr_debug2(perf event ring buffer mmapped per thread\n);
for (thread = 0; thread  nr_threads; thread++) {
int output = -1;
 
diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
index a635461..0b9c4fd 100644
--- a/tools/perf/util/evsel.c
+++ b/tools/perf/util/evsel.c
@@ -21,6 +21,7 @@
 #include thread_map.h
 #include target.h
 #include perf_regs.h
+#include debug.h
 
 static struct {
bool sample_id_all;
@@ -817,6 +818,58 @@ static int get_group_fd(struct perf_evsel *evsel, int cpu, 
int thread)
return fd;
 }
 
+static size_t perf_event_attr__fprintf(struct perf_event_attr *attr, FILE *fp)
+{
+   size_t ret;
+
+   ret = fprintf(fp, 
\n);
+   ret += fprintf(fp, perf_event_attr:\n);
+   ret += fprintf(fp,   type%u\n, attr-type);
+   ret += fprintf(fp,   size%u\n, attr-size);
+   ret += fprintf(fp,   config  %#PRIx64\n, 
(uint64_t)attr-config);
+   ret += fprintf(fp,   sample_period   %PRIu64\n, 
(uint64_t)attr-sample_period);
+   ret += fprintf(fp,   sample_freq %PRIu64\n, 
(uint64_t)attr-sample_freq);
+   ret += fprintf(fp,   sample_type %#PRIx64\n, 
(uint64_t)attr-sample_type);
+   ret += fprintf(fp,   read_format %#PRIx64\n, 
(uint64_t)attr-read_format);
+
+   ret += fprintf(fp,   disabled%u, attr-disabled);
+   ret += fprintf(fp, inherit %u\n, attr-inherit);
+   ret += fprintf(fp,   pinned  %u, attr-pinned);
+   ret += fprintf(fp, exclusive   %u\n, attr-exclusive);
+   ret += fprintf(fp,   exclude_user%u, attr-exclude_user);
+   ret += fprintf(fp, exclude_kernel  %u\n, attr-exclude_kernel);
+   ret += fprintf(fp,   exclude_hv  %u, attr-exclude_hv);
+   ret += fprintf(fp, exclude_idle%u\n, attr-exclude_idle);
+   ret += fprintf(fp,   mmap%u, attr-mmap);
+   ret += fprintf(fp, comm%u\n, attr-comm);
+   ret += fprintf(fp,   freq%u, attr-freq);
+   ret += fprintf(fp, inherit_stat%u\n, attr-inherit_stat);
+   ret += fprintf(fp,   enable_on_exec  %u, 
attr-enable_on_exec);
+   ret += fprintf(fp, task%u\n, attr-task);
+   ret += fprintf(fp,   watermark   %u, attr-watermark);
+   ret += fprintf(fp, precise_ip  %u\n, attr-precise_ip);
+   ret += fprintf(fp,   mmap_data   %u, attr-mmap_data);
+   ret += fprintf(fp, sample_id_all   %u\n, attr-sample_id_all);
+   ret += fprintf(fp,   exclude_host%u, attr-exclude_host);
+   ret += fprintf(fp, exclude_guest   %u\n, attr-exclude_guest);
+   ret += fprintf(fp,   excl.callchain.kern %u, 
attr-exclude_callchain_kernel);
+   ret += fprintf(fp, excl.callchain.user %u\n, 
attr-exclude_callchain_user);
+
+   ret += fprintf(fp,   wakeup_events   %u\n, attr-wakeup_events);
+   ret += fprintf(fp,   wakeup_watermark%u\n, 
attr-wakeup_watermark);
+   ret += fprintf(fp,   bp_type %#x\n, attr-bp_type);
+   ret += fprintf(fp,   bp_addr %#PRIx64\n, 
(uint64_t)attr-bp_addr);
+   ret += fprintf(fp,   config1 %#PRIx64\n, 
(uint64_t)attr-config1);
+   ret += fprintf(fp,   bp_len  %PRIu64\n, 
(uint64_t)attr-bp_len);
+   ret += fprintf(fp,   config2 %#PRIx64\n, 
(uint64_t)attr-config2);
+   ret += fprintf(fp,   branch_sample_type  %#PRIx64\n, 
(uint64_t)attr-branch_sample_type);
+   ret += fprintf(fp,