aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/util/svghelper.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/perf/util/svghelper.c')
-rw-r--r--tools/perf/util/svghelper.c30
1 files changed, 20 insertions, 10 deletions
diff --git a/tools/perf/util/svghelper.c b/tools/perf/util/svghelper.c
index 52f628fe6421..be1555e241b2 100644
--- a/tools/perf/util/svghelper.c
+++ b/tools/perf/util/svghelper.c
@@ -25,7 +25,8 @@ static u64 turbo_frequency, max_freq;
25 25
26#define SLOT_MULT 30.0 26#define SLOT_MULT 30.0
27#define SLOT_HEIGHT 25.0 27#define SLOT_HEIGHT 25.0
28#define WIDTH 1000.0 28
29int svg_page_width = 1000;
29 30
30#define MIN_TEXT_SIZE 0.001 31#define MIN_TEXT_SIZE 0.001
31 32
@@ -46,21 +47,35 @@ static double time2pixels(u64 time)
46{ 47{
47 double X; 48 double X;
48 49
49 X = WIDTH * (time - first_time) / (last_time - first_time); 50 X = 1.0 * svg_page_width * (time - first_time) / (last_time - first_time);
50 return X; 51 return X;
51} 52}
52 53
53void open_svg(const char *filename, int cpus, int rows) 54void open_svg(const char *filename, int cpus, int rows, u64 start, u64 end)
54{ 55{
56 int new_width;
55 57
56 svgfile = fopen(filename, "w"); 58 svgfile = fopen(filename, "w");
57 if (!svgfile) { 59 if (!svgfile) {
58 fprintf(stderr, "Cannot open %s for output\n", filename); 60 fprintf(stderr, "Cannot open %s for output\n", filename);
59 return; 61 return;
60 } 62 }
63 first_time = start;
64 first_time = first_time / 100000000 * 100000000;
65 last_time = end;
66
67 /*
68 * if the recording is short, we default to a width of 1000, but
69 * for longer recordings we want at least 200 units of width per second
70 */
71 new_width = (last_time - first_time) / 5000000;
72
73 if (new_width > svg_page_width)
74 svg_page_width = new_width;
75
61 total_height = (1 + rows + cpu2slot(cpus)) * SLOT_MULT; 76 total_height = (1 + rows + cpu2slot(cpus)) * SLOT_MULT;
62 fprintf(svgfile, "<?xml version=\"1.0\" standalone=\"no\"?> \n"); 77 fprintf(svgfile, "<?xml version=\"1.0\" standalone=\"no\"?> \n");
63 fprintf(svgfile, "<svg width=\"%4.1f\" height=\"%llu\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n", WIDTH, total_height); 78 fprintf(svgfile, "<svg width=\"%i\" height=\"%llu\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n", svg_page_width, total_height);
64 79
65 fprintf(svgfile, "<defs>\n <style type=\"text/css\">\n <![CDATA[\n"); 80 fprintf(svgfile, "<defs>\n <style type=\"text/css\">\n <![CDATA[\n");
66 81
@@ -404,15 +419,10 @@ void svg_legenda(void)
404 svg_legenda_box(800, "Blocked on IO", "blocked"); 419 svg_legenda_box(800, "Blocked on IO", "blocked");
405} 420}
406 421
407void svg_time_grid(u64 start, u64 end) 422void svg_time_grid(void)
408{ 423{
409 u64 i; 424 u64 i;
410 425
411 first_time = start;
412 last_time = end;
413
414 first_time = first_time / 100000000 * 100000000;
415
416 if (!svgfile) 426 if (!svgfile)
417 return; 427 return;
418 428