Skip to contentSkip to conversation

perf: fix perf top number of samples displayed

PATCH In review Stephane Eranian 1 participant 3 messages Jan 30, 2012 – Jan 31, 2012 perf events

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 perf: fix perf top number of samples displayed

In recent versions of perf top, pressing the 'e' key to change the number of displayed samples had no effect. The number of samples was still dictated by the size of the terminal (stdio mode). That was quite annoying because typically only the first dozen samples really matter.

This patch fixes this.

---

tools/perf/builtin-top.c +10 -3
index e8b033c..d869b21 100644
@@ -88,8 +88,6 @@ void get_term_dimensions(struct winsize *ws)
 
 static void perf_top__update_print_entries(struct perf_top *top)
 {
-	top->print_entries = top->winsize.ws_row;
-
 	if (top->print_entries > 9)
 		top->print_entries -= 9;
 }
@@ -99,6 +97,13 @@ static void perf_top__sig_winch(int sig __used, siginfo_t *info __used, void *ar
 	struct perf_top *top = arg;
 
 	get_term_dimensions(&top->winsize);
+	if (!top->print_entries
+	    || (top->print_entries+4) > top->winsize.ws_row) {
+		top->print_entries = top->winsize.ws_row;
+	} else {
+		top->print_entries += 4;
+		top->winsize.ws_row = top->print_entries;
+	}
 	perf_top__update_print_entries(top);
 }
 
@@ -452,8 +457,10 @@ static void perf_top__handle_keypress(struct perf_top *top, int c)
 				};
 				perf_top__sig_winch(SIGWINCH, NULL, top);
 				sigaction(SIGWINCH, &act, NULL);
-			} else
+			} else {
+				perf_top__sig_winch(SIGWINCH, NULL, top);
 				signal(SIGWINCH, SIG_DFL);
+			}
 			break;
 		case 'E':
 			if (top->evlist->nr_entries > 1) {
#1 lore raw

[tip:perf/core] perf top: Fix number of samples displayed

Commit-ID:  008953dc6a3164b7ec2be2684a8fad1e636d5648
Gitweb:     http://git.kernel.org/tip/008953dc6a3164b7ec2be2684a8fad1e636d5648
Author:     Stephane Eranian <[email protected]>
AuthorDate: Mon, 30 Jan 2012 11:50:37 +0100
Committer:  Arnaldo Carvalho de Melo <[email protected]>
CommitDate: Mon, 30 Jan 2012 18:30:10 -0200

perf top: Fix number of samples displayed

In recent versions of perf top, pressing the 'e' key to change the number of displayed samples had no effect.

The number of samples was still dictated by the size of the terminal (stdio mode). That was quite annoying because typically only the first dozen samples really matter.

This patch fixes this.

---
 tools/perf/builtin-top.c |   13 ++++++++++---
 1 files changed, 10 insertions(+), 3 deletions(-)
tools/perf/builtin-top.c +10 -3
index e8b033c..d869b21 100644
@@ -88,8 +88,6 @@ void get_term_dimensions(struct winsize *ws)
 
 static void perf_top__update_print_entries(struct perf_top *top)
 {
-	top->print_entries = top->winsize.ws_row;
-
 	if (top->print_entries > 9)
 		top->print_entries -= 9;
 }
@@ -99,6 +97,13 @@ static void perf_top__sig_winch(int sig __used, siginfo_t *info __used, void *ar
 	struct perf_top *top = arg;
 
 	get_term_dimensions(&top->winsize);
+	if (!top->print_entries
+	    || (top->print_entries+4) > top->winsize.ws_row) {
+		top->print_entries = top->winsize.ws_row;
+	} else {
+		top->print_entries += 4;
+		top->winsize.ws_row = top->print_entries;
+	}
 	perf_top__update_print_entries(top);
 }
 
@@ -452,8 +457,10 @@ static void perf_top__handle_keypress(struct perf_top *top, int c)
 				};
 				perf_top__sig_winch(SIGWINCH, NULL, top);
 				sigaction(SIGWINCH, &act, NULL);
-			} else
+			} else {
+				perf_top__sig_winch(SIGWINCH, NULL, top);
 				signal(SIGWINCH, SIG_DFL);
+			}
 			break;
 		case 'E':
 			if (top->evlist->nr_entries > 1) {
#2 lore raw

[tip:perf/core] perf top: Fix number of samples displayed

In reply to Stephane Eranian
Commit-ID:  509605dbe9395ce1abbfac1dba375f074ff57a53
Gitweb:     http://git.kernel.org/tip/509605dbe9395ce1abbfac1dba375f074ff57a53
Author:     Stephane Eranian <[email protected]>
AuthorDate: Mon, 30 Jan 2012 11:50:37 +0100
Committer:  Arnaldo Carvalho de Melo <[email protected]>
CommitDate: Mon, 30 Jan 2012 22:29:49 -0200

perf top: Fix number of samples displayed

In recent versions of perf top, pressing the 'e' key to change the number of displayed samples had no effect.

The number of samples was still dictated by the size of the terminal (stdio mode). That was quite annoying because typically only the first dozen samples really matter.

This patch fixes this.

---
 tools/perf/builtin-top.c |   13 ++++++++++---
 1 files changed, 10 insertions(+), 3 deletions(-)
tools/perf/builtin-top.c +10 -3
index 8f80df8..dd162aa 100644
@@ -89,8 +89,6 @@ void get_term_dimensions(struct winsize *ws)
 
 static void perf_top__update_print_entries(struct perf_top *top)
 {
-	top->print_entries = top->winsize.ws_row;
-
 	if (top->print_entries > 9)
 		top->print_entries -= 9;
 }
@@ -100,6 +98,13 @@ static void perf_top__sig_winch(int sig __used, siginfo_t *info __used, void *ar
 	struct perf_top *top = arg;
 
 	get_term_dimensions(&top->winsize);
+	if (!top->print_entries
+	    || (top->print_entries+4) > top->winsize.ws_row) {
+		top->print_entries = top->winsize.ws_row;
+	} else {
+		top->print_entries += 4;
+		top->winsize.ws_row = top->print_entries;
+	}
 	perf_top__update_print_entries(top);
 }
 
@@ -453,8 +458,10 @@ static void perf_top__handle_keypress(struct perf_top *top, int c)
 				};
 				perf_top__sig_winch(SIGWINCH, NULL, top);
 				sigaction(SIGWINCH, &act, NULL);
-			} else
+			} else {
+				perf_top__sig_winch(SIGWINCH, NULL, top);
 				signal(SIGWINCH, SIG_DFL);
+			}
 			break;
 		case 'E':
 			if (top->evlist->nr_entries > 1) {