diff options
author | Eugeni Dodonov <eugeni.dodonov@intel.com> | 2011-09-05 16:29:39 -0300 |
---|---|---|
committer | Eugeni Dodonov <eugeni.dodonov@intel.com> | 2011-09-05 19:11:49 -0300 |
commit | 4b0a15e45d1823888cfed9a76e54036658ab8e61 (patch) | |
tree | 788e2d33705c7e31f20c0f32114a995516726c79 /tools | |
parent | 09e4b0cd26e800c203c1de071b83d879a09bb0dc (diff) |
intel_gpu_tool: initial support for non-screen output
This patch adds initial support for non-stdio output, to be used for
non-interactive monitoring.
Signed-off-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/intel_gpu_top.c | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/tools/intel_gpu_top.c b/tools/intel_gpu_top.c index 11823f04..2000c176 100644 --- a/tools/intel_gpu_top.c +++ b/tools/intel_gpu_top.c @@ -373,7 +373,8 @@ static void ring_sample(struct ring *ring) ring->full += full; } -static void ring_print(struct ring *ring, unsigned long samples_per_sec) +static void ring_print(struct ring *ring, unsigned long samples_per_sec, + FILE *output) { int samples_to_percent_ratio, percent, len; @@ -383,9 +384,9 @@ static void ring_print(struct ring *ring, unsigned long samples_per_sec) /* Calculate current value of samples_to_percent_ratio */ samples_to_percent_ratio = (ring->idle * 100) / samples_per_sec; percent = 100 - samples_to_percent_ratio; - len = printf("%25s busy: %3d%%: ", ring->name, percent); + len = fprintf(output, "%25s busy: %3d%%: ", ring->name, percent); print_percentage_bar (percent, len); - printf("%24s space: %d/%d (%d%%)\n", + fprintf(output, "%24s space: %d/%d (%d%%)\n", ring->name, (int)(ring->full / samples_per_sec), ring->size, @@ -427,6 +428,7 @@ int main(int argc, char **argv) }; int i, ch; int samples_per_sec = SAMPLES_PER_SEC; + FILE *output = stdout; /* Parse options? */ while ((ch = getopt(argc, argv, "s:h")) != -1) @@ -544,30 +546,30 @@ int main(int argc, char **argv) if (max_lines >= num_instdone_bits) max_lines = num_instdone_bits; - printf("%s", clear_screen); + fprintf(output, "%s", clear_screen); print_clock_info(pci_dev); - ring_print(&render_ring, last_samples_per_sec); - ring_print(&bsd_ring, last_samples_per_sec); - ring_print(&bsd6_ring, last_samples_per_sec); - ring_print(&blt_ring, last_samples_per_sec); + ring_print(&render_ring, last_samples_per_sec, output); + ring_print(&bsd_ring, last_samples_per_sec, output); + ring_print(&bsd6_ring, last_samples_per_sec, output); + ring_print(&blt_ring, last_samples_per_sec, output); - printf("\n%30s %s\n", "task", "percent busy"); + fprintf(output, "\n%30s %s\n", "task", "percent busy"); for (i = 0; i < max_lines; i++) { if (top_bits_sorted[i]->count > 0) { percent = (top_bits_sorted[i]->count * 100) / last_samples_per_sec; - len = printf("%30s: %3d%%: ", + len = fprintf(output, "%30s: %3d%%: ", top_bits_sorted[i]->bit->name, percent); print_percentage_bar (percent, len); } else { - printf("%*s", PERCENTAGE_BAR_END, ""); + fprintf(output, "%*s", PERCENTAGE_BAR_END, ""); } if (i < STATS_COUNT && HAS_STATS_REGS(devid)) { - printf("%13s: %llu (%lld/sec)", + fprintf(output, "%13s: %llu (%lld/sec)", stats_reg_names[i], stats[i], stats[i] - last_stats[i]); @@ -576,7 +578,7 @@ int main(int argc, char **argv) if (!top_bits_sorted[i]->count) break; } - printf("\n"); + fprintf(output, "\n"); } for (i = 0; i < num_instdone_bits; i++) { |