Merge branch 'topic/enum-info-cleanup' into for-next
[firefly-linux-kernel-4.4.55.git] / tools / perf / builtin-kvm.c
index d8bf2271f4ea7e298811c7aa4759ed7ffda84dbd..b65eb0507b38a97bb86b948eec3d6c045b5c27e1 100644 (file)
@@ -376,7 +376,7 @@ struct vcpu_event_record *per_vcpu_record(struct thread *thread,
                                          struct perf_sample *sample)
 {
        /* Only kvm_entry records vcpu id. */
-       if (!thread->priv && kvm_entry_event(evsel)) {
+       if (!thread__priv(thread) && kvm_entry_event(evsel)) {
                struct vcpu_event_record *vcpu_record;
 
                vcpu_record = zalloc(sizeof(*vcpu_record));
@@ -386,10 +386,10 @@ struct vcpu_event_record *per_vcpu_record(struct thread *thread,
                }
 
                vcpu_record->vcpu_id = perf_evsel__intval(evsel, sample, VCPU_ID);
-               thread->priv = vcpu_record;
+               thread__set_priv(thread, vcpu_record);
        }
 
-       return thread->priv;
+       return thread__priv(thread);
 }
 
 static bool handle_kvm_event(struct perf_kvm_stat *kvm,
@@ -896,8 +896,7 @@ static int perf_kvm__handle_stdin(void)
 
 static int kvm_events_live_report(struct perf_kvm_stat *kvm)
 {
-       struct pollfd *pollfds = NULL;
-       int nr_fds, nr_stdin, ret, err = -EINVAL;
+       int nr_stdin, ret, err = -EINVAL;
        struct termios save;
 
        /* live flag must be set first */
@@ -919,34 +918,27 @@ static int kvm_events_live_report(struct perf_kvm_stat *kvm)
        signal(SIGINT, sig_handler);
        signal(SIGTERM, sig_handler);
 
-       /* use pollfds -- need to add timerfd and stdin */
-       nr_fds = kvm->evlist->pollfd.nr;
-
        /* add timer fd */
        if (perf_kvm__timerfd_create(kvm) < 0) {
                err = -1;
                goto out;
        }
 
-       if (perf_evlist__add_pollfd(kvm->evlist, kvm->timerfd))
+       if (perf_evlist__add_pollfd(kvm->evlist, kvm->timerfd) < 0)
                goto out;
 
-       nr_fds++;
-
-       if (perf_evlist__add_pollfd(kvm->evlist, fileno(stdin)))
+       nr_stdin = perf_evlist__add_pollfd(kvm->evlist, fileno(stdin));
+       if (nr_stdin < 0)
                goto out;
 
-       nr_stdin = nr_fds;
-       nr_fds++;
        if (fd_set_nonblock(fileno(stdin)) != 0)
                goto out;
 
-       pollfds  = kvm->evlist->pollfd.entries;
-
        /* everything is good - enable the events and process */
        perf_evlist__enable(kvm->evlist);
 
        while (!done) {
+               struct fdarray *fda = &kvm->evlist->pollfd;
                int rc;
 
                rc = perf_kvm__mmap_read(kvm);
@@ -957,11 +949,11 @@ static int kvm_events_live_report(struct perf_kvm_stat *kvm)
                if (err)
                        goto out;
 
-               if (pollfds[nr_stdin].revents & POLLIN)
+               if (fda->entries[nr_stdin].revents & POLLIN)
                        done = perf_kvm__handle_stdin();
 
                if (!rc && !done)
-                       err = poll(pollfds, nr_fds, 100);
+                       err = fdarray__poll(fda, 100);
        }
 
        perf_evlist__disable(kvm->evlist);
@@ -1366,6 +1358,7 @@ static int kvm_events_live(struct perf_kvm_stat *kvm,
        }
        kvm->session->evlist = kvm->evlist;
        perf_session__set_id_hdr_size(kvm->session);
+       ordered_events__set_copy_on_queue(&kvm->session->ordered_events, true);
        machine__synthesize_threads(&kvm->session->machines.host, &kvm->opts.target,
                                    kvm->evlist->threads, false);
        err = kvm_live_open_events(kvm);