Merge commit 'v3.1-rc9' into perf/core
[cascardo/linux.git] / tools / perf / builtin-top.c
index d28013b..5ede7d7 100644 (file)
@@ -251,7 +251,7 @@ static void __list_insert_active_sym(struct sym_entry *syme)
        list_add(&syme->node, &top.active_symbols);
 }
 
-static void print_sym_table(struct perf_session *session)
+static void print_sym_table(void)
 {
        char bf[160];
        int printed = 0;
@@ -271,10 +271,11 @@ static void print_sym_table(struct perf_session *session)
 
        printf("%-*.*s\n", win_width, win_width, graph_dotted_line);
 
-       if (session->hists.stats.total_lost != 0) {
+       if (top.total_lost_warned != top.session->hists.stats.total_lost) {
+               top.total_lost_warned = top.session->hists.stats.total_lost;
                color_fprintf(stdout, PERF_COLOR_RED, "WARNING:");
                printf(" LOST %" PRIu64 " events, Check IO/CPU overload\n",
-                      session->hists.stats.total_lost);
+                      top.total_lost_warned);
        }
 
        if (top.sym_filter_entry) {
@@ -475,7 +476,7 @@ static int key_mapped(int c)
        return 0;
 }
 
-static void handle_keypress(struct perf_session *session, int c)
+static void handle_keypress(int c)
 {
        if (!key_mapped(c)) {
                struct pollfd stdin_poll = { .fd = 0, .events = POLLIN };
@@ -551,7 +552,7 @@ static void handle_keypress(struct perf_session *session, int c)
                case 'Q':
                        printf("exiting.\n");
                        if (dump_symtab)
-                               perf_session__fprintf_dsos(session, stderr);
+                               perf_session__fprintf_dsos(top.session, stderr);
                        exit(0);
                case 's':
                        prompt_symbol(&top.sym_filter_entry, "Enter details symbol");
@@ -603,7 +604,6 @@ static void *display_thread(void *arg __used)
        struct pollfd stdin_poll = { .fd = 0, .events = POLLIN };
        struct termios tc, save;
        int delay_msecs, c;
-       struct perf_session *session = (struct perf_session *) arg;
 
        tcgetattr(0, &save);
        tc = save;
@@ -618,13 +618,13 @@ repeat:
        getc(stdin);
 
        do {
-               print_sym_table(session);
+               print_sym_table();
        } while (!poll(&stdin_poll, 1, delay_msecs) == 1);
 
        c = getc(stdin);
        tcsetattr(0, TCSAFLUSH, &save);
 
-       handle_keypress(session, c);
+       handle_keypress(c);
        goto repeat;
 
        return NULL;
@@ -936,27 +936,27 @@ static int __cmd_top(void)
         * FIXME: perf_session__new should allow passing a O_MMAP, so that all this
         * mmap reading, etc is encapsulated in it. Use O_WRONLY for now.
         */
-       struct perf_session *session = perf_session__new(NULL, O_WRONLY, false, false, NULL);
-       if (session == NULL)
+       top.session = perf_session__new(NULL, O_WRONLY, false, false, NULL);
+       if (top.session == NULL)
                return -ENOMEM;
 
        if (top.target_tid != -1)
                perf_event__synthesize_thread_map(top.evlist->threads,
-                                                 perf_event__process, session);
+                                                 perf_event__process, top.session);
        else
-               perf_event__synthesize_threads(perf_event__process, session);
+               perf_event__synthesize_threads(perf_event__process, top.session);
 
        start_counters(top.evlist);
-       session->evlist = top.evlist;
-       perf_session__update_sample_type(session);
+       top.session->evlist = top.evlist;
+       perf_session__update_sample_type(top.session);
 
        /* Wait for a minimal set of events before starting the snapshot */
        poll(top.evlist->pollfd, top.evlist->nr_fds, 100);
 
-       perf_session__mmap_read(session);
+       perf_session__mmap_read(top.session);
 
        if (pthread_create(&thread, NULL, (use_browser > 0 ? display_thread_tui :
-                                                            display_thread), session)) {
+                                                            display_thread), NULL)) {
                printf("Could not create display thread.\n");
                exit(-1);
        }
@@ -974,7 +974,7 @@ static int __cmd_top(void)
        while (1) {
                u64 hits = top.samples;
 
-               perf_session__mmap_read(session);
+               perf_session__mmap_read(top.session);
 
                if (hits == top.samples)
                        ret = poll(top.evlist->pollfd, top.evlist->nr_fds, 100);