diff options
Diffstat (limited to 'tools/perf/util/svghelper.c')
-rw-r--r-- | tools/perf/util/svghelper.c | 30 |
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 | |
29 | int 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 | ||
53 | void open_svg(const char *filename, int cpus, int rows) | 54 | void 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 | ||
407 | void svg_time_grid(u64 start, u64 end) | 422 | void 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 | ||