]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - tools/perf/builtin-kvm.c
arm: imx6: defconfig: update tx6 defconfigs
[karo-tx-linux.git] / tools / perf / builtin-kvm.c
index 47b35407c2f21705e65be4c0eab75ae89dcd3811..188bb29b373f9ee7280f25f28c127a00e83d195a 100644 (file)
@@ -17,6 +17,7 @@
 #include "util/tool.h"
 #include "util/stat.h"
 #include "util/top.h"
+#include "util/data.h"
 
 #include <sys/prctl.h>
 #include <sys/timerfd.h>
@@ -1165,16 +1166,16 @@ static int kvm_live_open_events(struct perf_kvm_stat *kvm)
                struct perf_event_attr *attr = &pos->attr;
 
                /* make sure these *are* set */
-               attr->sample_type |= PERF_SAMPLE_TID;
-               attr->sample_type |= PERF_SAMPLE_TIME;
-               attr->sample_type |= PERF_SAMPLE_CPU;
-               attr->sample_type |= PERF_SAMPLE_RAW;
+               perf_evsel__set_sample_bit(pos, TID);
+               perf_evsel__set_sample_bit(pos, TIME);
+               perf_evsel__set_sample_bit(pos, CPU);
+               perf_evsel__set_sample_bit(pos, RAW);
                /* make sure these are *not*; want as small a sample as possible */
-               attr->sample_type &= ~PERF_SAMPLE_PERIOD;
-               attr->sample_type &= ~PERF_SAMPLE_IP;
-               attr->sample_type &= ~PERF_SAMPLE_CALLCHAIN;
-               attr->sample_type &= ~PERF_SAMPLE_ADDR;
-               attr->sample_type &= ~PERF_SAMPLE_READ;
+               perf_evsel__reset_sample_bit(pos, PERIOD);
+               perf_evsel__reset_sample_bit(pos, IP);
+               perf_evsel__reset_sample_bit(pos, CALLCHAIN);
+               perf_evsel__reset_sample_bit(pos, ADDR);
+               perf_evsel__reset_sample_bit(pos, READ);
                attr->mmap = 0;
                attr->comm = 0;
                attr->task = 0;
@@ -1215,10 +1216,13 @@ static int read_events(struct perf_kvm_stat *kvm)
                .comm                   = perf_event__process_comm,
                .ordered_samples        = true,
        };
+       struct perf_data_file file = {
+               .path = input_name,
+               .mode = PERF_DATA_MODE_READ,
+       };
 
        kvm->tool = eops;
-       kvm->session = perf_session__new(kvm->file_name, O_RDONLY, 0, false,
-                                        &kvm->tool);
+       kvm->session = perf_session__new(&file, false, &kvm->tool);
        if (!kvm->session) {
                pr_err("Initializing perf session failed\n");
                return -EINVAL;
@@ -1426,8 +1430,9 @@ static int kvm_events_live(struct perf_kvm_stat *kvm,
        const struct option live_options[] = {
                OPT_STRING('p', "pid", &kvm->opts.target.pid, "pid",
                        "record events on existing process id"),
-               OPT_UINTEGER('m', "mmap-pages", &kvm->opts.mmap_pages,
-                       "number of mmap data pages"),
+               OPT_CALLBACK('m', "mmap-pages", &kvm->opts.mmap_pages, "pages",
+                       "number of mmap data pages",
+                       perf_evlist__parse_mmap_pages),
                OPT_INCR('v', "verbose", &verbose,
                        "be more verbose (show counter open errors, etc)"),
                OPT_BOOLEAN('a', "all-cpus", &kvm->opts.target.system_wide,
@@ -1449,6 +1454,9 @@ static int kvm_events_live(struct perf_kvm_stat *kvm,
                "perf kvm stat live [<options>]",
                NULL
        };
+       struct perf_data_file file = {
+               .mode = PERF_DATA_MODE_WRITE,
+       };
 
 
        /* event handling */
@@ -1513,7 +1521,7 @@ static int kvm_events_live(struct perf_kvm_stat *kvm,
        /*
         * perf session
         */
-       kvm->session = perf_session__new(NULL, O_WRONLY, false, false, &kvm->tool);
+       kvm->session = perf_session__new(&file, false, &kvm->tool);
        if (kvm->session == NULL) {
                err = -ENOMEM;
                goto out;