diff options
-rw-r--r-- | tools/intel_gpu_top.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/tools/intel_gpu_top.c b/tools/intel_gpu_top.c index d314edaf..9ef3ae4d 100644 --- a/tools/intel_gpu_top.c +++ b/tools/intel_gpu_top.c @@ -29,6 +29,7 @@ #include <stdlib.h> #include <stdio.h> #include <err.h> +#include <sys/ioctl.h> #include "intel_gpu_tools.h" #include "instdone.h" @@ -257,6 +258,13 @@ int main(int argc, char **argv) qsort(top_bits_sorted, num_instdone_bits, sizeof(struct top_bit *), top_bits_sort); + /* Limit the number of lines printed to the terminal height so the + * most important info (at the top) will stay on screen. */ + unsigned short int max_lines = -1; + struct winsize ws; + if (ioctl(0, TIOCGWINSZ, &ws) != -1) + max_lines = ws.ws_row - 6; /* exclude header lines */ + printf("%s", clear_screen); print_clock_info(); @@ -275,11 +283,13 @@ int main(int argc, char **argv) if (top_bits_sorted[i]->count < 1) break; - percent = top_bits_sorted[i]->count / SAMPLES_TO_PERCENT_RATIO; - len = printf("%30s: %3d%%: ", - top_bits_sorted[i]->bit->name, - percent); - print_percentage_bar (percent, len); + if (i < max_lines) { + percent = top_bits_sorted[i]->count / SAMPLES_TO_PERCENT_RATIO; + len = printf("%30s: %3d%%: ", + top_bits_sorted[i]->bit->name, + percent); + print_percentage_bar (percent, len); + } top_bits_sorted[i]->count = 0; } |