]> granicus.if.org Git - sysstat/blobdiff - svg_stats.c
Merge branch 'scop-grep-E'
[sysstat] / svg_stats.c
index 492a23cce020cbf74261ccb8982224e3f120cd9b..aea9bda0cd862e86a2c2ba037b343b13a991dda3 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * svg_stats.c: Funtions used by sadf to display statistics in SVG format.
- * (C) 2016-2020 by Sebastien GODARD (sysstat <at> orange.fr)
+ * svg_stats.c: Functions used by sadf to display statistics in SVG format.
+ * (C) 2016-2021 by Sebastien GODARD (sysstat <at> orange.fr)
  *
  ***************************************************************************
  * This program is free software; you can redistribute it and/or modify it *
@@ -37,7 +37,7 @@
 #define _(string) (string)
 #endif
 
-extern unsigned int flags;
+extern uint64_t flags;
 extern int palette;
 
 unsigned int svg_colors[SVG_COL_PALETTE_NR][SVG_COL_PALETTE_SIZE] =
@@ -86,8 +86,8 @@ unsigned int svg_colors[SVG_COL_PALETTE_NR][SVG_COL_PALETTE_SIZE] =
  *             the fields in the statistics structure.
  *
  * OUT:
- * @spmin      Array containg the possible new min values for current activity.
- * @spmax      Array containg the possible new max values for current activity.
+ * @spmin      Array containing the possible new min values for current activity.
+ * @spmax      Array containing the possible new max values for current activity.
  ***************************************************************************
  */
 void save_extrema(unsigned int types_nr[], void *cs, void *ps, unsigned long long itv,
@@ -605,6 +605,11 @@ void display_hgrid(double ypos, double yfactor, double lmax, int dp)
        int j = 0;
        char stmp[32];
 
+       /* Print marker in debug mode */
+       if (DISPLAY_DEBUG_MODE(flags)) {
+               printf("<!-- Hgrid -->\n");
+       }
+
        do {
                /* Display horizontal lines (except on X axis) */
                if (j > 0) {
@@ -652,6 +657,11 @@ void display_vgrid(long int xpos, double xfactor, int v_gridnr, struct svg_parm
 
        stamp.ust_time = svg_p->ust_time_ref; /* Only ust_time field needs to be set. TRUE_TIME not allowed */
 
+       /* Print marker in debug mode */
+       if (DISPLAY_DEBUG_MODE(flags)) {
+               printf("<!-- Vgrid -->\n");
+       }
+
        /*
         * What really matters to know when we should stop drawing vertical lines
         * is the time end. v_gridnr is only informative and used to calculate
@@ -660,7 +670,12 @@ void display_vgrid(long int xpos, double xfactor, int v_gridnr, struct svg_parm
        for (j = 0; (j <= (2 * v_gridnr)) && (stamp.ust_time <= svg_p->ust_time_end); j++) {
 
                /* Display vertical lines */
-               sa_get_record_timestamp_struct(flags, &stamp, &rectime);
+               if (sa_get_record_timestamp_struct(flags, &stamp, &rectime)) {
+#ifdef DEBUG
+                       fprintf(stderr, "%s: ust_time: %llu\n", __FUNCTION__, stamp.ust_time);
+#endif
+                       exit(1);
+               }
                set_record_timestamp_string(flags, &stamp, NULL, cur_time, TIMESTAMP_LEN, &rectime);
                printf("<polyline points=\"%ld,0 %ld,%d\" style=\"vector-effect: non-scaling-stroke; "
                       "stroke: #%06x\" transform=\"scale(%f,1)\"/>\n",
@@ -841,7 +856,7 @@ void skip_current_view(char **out, int *pos, int group)
  * @skip_void  Set to <> 0 if graphs with no data should be skipped.
  *             This is typicallly used to not display CPU offline on the
  *             whole period.
- * @id         Current activity id.
+ * @a          Current activity structure.
  * @xid                Current activity extra id number.
  *
  * RETURNS:
@@ -851,7 +866,7 @@ void skip_current_view(char **out, int *pos, int group)
 int draw_activity_graphs(int g_nr, int g_type[], char *title[], char *g_title[], char *item_name,
                         int group[], double *spmin, double *spmax, char **out, int *outsize,
                         struct svg_parm *svg_p, struct record_header *record_hdr, int skip_void,
-                        unsigned int id, unsigned int xid)
+                        struct activity *a, unsigned int xid)
 {
        char *out_p;
        int i, j, dp, pos = 0, views_nr = 0, displayed = FALSE, palpos;
@@ -862,9 +877,19 @@ int draw_activity_graphs(int g_nr, int g_type[], char *title[], char *g_title[],
        char val[32], cur_date[TIMESTAMP_LEN];
        struct tm rectime;
 
+       /* Print activity name in debug mode */
+       if (DISPLAY_DEBUG_MODE(flags)) {
+               printf("<!-- Name: %s -->\n", a->name);
+       }
+
        /* For each view which is part of current activity */
        for (i = 0; i < g_nr; i++) {
 
+               /* Print view number in debug mode */
+               if (DISPLAY_DEBUG_MODE(flags)) {
+                       printf("<!-- View %d -->\n", i + 1);
+               }
+
                /* Used as index in color palette */
                palpos = (palette == SVG_BW_COL_PALETTE ? 0 : pos);
 
@@ -883,7 +908,7 @@ int draw_activity_graphs(int g_nr, int g_type[], char *title[], char *g_title[],
                if (!displayed) {
                        /* Translate to proper position for current activity */
                        printf("<g id=\"g%d-%d\" transform=\"translate(0,%d)\">\n",
-                              id, xid,
+                              a->id, xid,
                               SVG_H_YSIZE +
                               SVG_C_YSIZE * (DISPLAY_TOC(flags) ? svg_p->nr_act_dispd : 0) +
                               SVG_T_YSIZE * svg_p->graph_no);
@@ -1028,6 +1053,11 @@ int draw_activity_graphs(int g_nr, int g_type[], char *title[], char *g_title[],
                /* Display vertical lines and graduations */
                display_vgrid(xpos, xfactor, v_gridnr, svg_p);
 
+               /* Print marker in debug mode */
+               if (DISPLAY_DEBUG_MODE(flags)) {
+                       printf("<!-- Graphs -->\n");
+               }
+
                /* Draw current graphs set */
                for (j = 0; j < group[i]; j++) {
                        out_p = *(out + pos + j);
@@ -1325,13 +1355,13 @@ __print_funct_t svg_print_cpu_stats(struct activity *a, int curr, int action, st
                                displayed = draw_activity_graphs(a->g_nr, g_type,
                                                                 title, g_title1, item_name, group1,
                                                                 spmin + pos, spmax + pos, out + pos, outsize + pos,
-                                                                svg_p, record_hdr, i, a->id, xid);
+                                                                svg_p, record_hdr, i, a, xid);
                        }
                        else {
                                displayed = draw_activity_graphs(a->g_nr, g_type,
                                                                 title, g_title2, item_name, group2,
                                                                 spmin + pos, spmax + pos, out + pos, outsize + pos,
-                                                                svg_p, record_hdr, i, a->id, xid);
+                                                                svg_p, record_hdr, i, a, xid);
                        }
                        if (displayed) {
                                xid++;
@@ -1399,7 +1429,7 @@ __print_funct_t svg_print_pcsw_stats(struct activity *a, int curr, int action, s
 
        if (action & F_END) {
                draw_activity_graphs(a->g_nr, g_type, title, g_title, NULL, group,
-                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a->id, 0);
+                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a, 0);
 
                /* Free remaining structures */
                free_graphs(out, outsize, spmin, spmax);
@@ -1461,7 +1491,7 @@ __print_funct_t svg_print_swap_stats(struct activity *a, int curr, int action, s
 
        if (action & F_END) {
                draw_activity_graphs(a->g_nr, g_type, title, g_title, NULL, group,
-                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a->id, 0);
+                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a, 0);
 
                /* Free remaining structures */
                free_graphs(out, outsize, spmin, spmax);
@@ -1549,7 +1579,7 @@ __print_funct_t svg_print_paging_stats(struct activity *a, int curr, int action,
 
        if (action & F_END) {
                draw_activity_graphs(a->g_nr, g_type, title, g_title, NULL, group,
-                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a->id, 0);
+                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a, 0);
 
                /* Free remaining structures */
                free_graphs(out, outsize, spmin, spmax);
@@ -1657,7 +1687,7 @@ __print_funct_t svg_print_io_stats(struct activity *a, int curr, int action, str
 
        if (action & F_END) {
                draw_activity_graphs(a->g_nr, g_type, title, g_title, NULL, group,
-                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a->id, 0);
+                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a, 0);
 
                /* Free remaining structures */
                free_graphs(out, outsize, spmin, spmax);
@@ -1884,7 +1914,7 @@ __print_funct_t svg_print_memory_stats(struct activity *a, int curr, int action,
                        if (draw_activity_graphs(DISPLAY_MEM_ALL(a->opt_flags) ? 6 : 5,
                                                 g_type1, title1, g_title1, NULL, group1,
                                                 spmin, spmax, out, outsize, svg_p, record_hdr,
-                                                FALSE, a->id, xid)) {
+                                                FALSE, a, xid)) {
                                xid++;
                        }
                }
@@ -1892,7 +1922,7 @@ __print_funct_t svg_print_memory_stats(struct activity *a, int curr, int action,
                if (DISPLAY_SWAP(a->opt_flags)) {
                        draw_activity_graphs(3, g_type2, title2, g_title2, NULL, group2,
                                             spmin + 16, spmax + 16, out + 16, outsize + 16,
-                                            svg_p, record_hdr, FALSE, a->id, xid);
+                                            svg_p, record_hdr, FALSE, a, xid);
                }
 
                /* Free remaining structures */
@@ -1963,7 +1993,7 @@ __print_funct_t svg_print_ktables_stats(struct activity *a, int curr, int action
 
        if (action & F_END) {
                draw_activity_graphs(a->g_nr, g_type, title, g_title, NULL, group,
-                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a->id, 0);
+                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a, 0);
 
                /* Free remaining structures */
                free_graphs(out, outsize, spmin, spmax);
@@ -2047,7 +2077,7 @@ __print_funct_t svg_print_queue_stats(struct activity *a, int curr, int action,
                *(spmin + 5) /= 100; *(spmax + 5) /= 100;
 
                draw_activity_graphs(a->g_nr, g_type, title, g_title, NULL, group,
-                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a->id, 0);
+                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a, 0);
 
                /* Free remaining structures */
                free_graphs(out, outsize, spmin, spmax);
@@ -2300,7 +2330,7 @@ __print_funct_t svg_print_disk_stats(struct activity *a, int curr, int action, s
                        if (draw_activity_graphs(a->g_nr, g_type,
                                                 title, g_title, item_name, group,
                                                 spmin + pos, spmax + pos, out + pos, outsize + pos,
-                                                svg_p, record_hdr, FALSE, a->id, xid)) {
+                                                svg_p, record_hdr, FALSE, a, xid)) {
                                xid++;
                        }
                }
@@ -2519,7 +2549,7 @@ __print_funct_t svg_print_net_dev_stats(struct activity *a, int curr, int action
                        if (draw_activity_graphs(a->g_nr, g_type,
                                                 title, g_title, item_name, group,
                                                 spmin + pos, spmax + pos, out + pos, outsize + pos,
-                                                svg_p, record_hdr, FALSE, a->id, xid)) {
+                                                svg_p, record_hdr, FALSE, a, xid)) {
                                xid++;
                        }
                }
@@ -2596,10 +2626,6 @@ __print_funct_t svg_print_net_edev_stats(struct activity *a, int curr, int actio
                        snedc = (struct stats_net_edev *) ((char *) a->buf[curr] + i * a->msize);
                        restart = svg_p->restart;
 
-                       if (!strcmp(snedc->interface, ""))
-                               /* Empty structure: This is the end of the list */
-                               break;
-
                        if (a->item_list != NULL) {
                                /* A list of devices has been entered on the command line */
                                if (!search_list_item(a->item_list, snedc->interface))
@@ -2729,7 +2755,7 @@ __print_funct_t svg_print_net_edev_stats(struct activity *a, int curr, int actio
                        if (draw_activity_graphs(a->g_nr, g_type,
                                                 title, g_title, item_name, group,
                                                 spmin + pos, spmax + pos, out + pos, outsize + pos,
-                                                svg_p, record_hdr, FALSE, a->id, xid)) {
+                                                svg_p, record_hdr, FALSE, a, xid)) {
                                xid++;
                        }
                }
@@ -2814,7 +2840,7 @@ __print_funct_t svg_print_net_nfs_stats(struct activity *a, int curr, int action
 
        if (action & F_END) {
                draw_activity_graphs(a->g_nr, g_type, title, g_title, NULL, group,
-                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a->id, 0);
+                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a, 0);
 
                /* Free remaining structures */
                free_graphs(out, outsize, spmin, spmax);
@@ -2920,7 +2946,7 @@ __print_funct_t svg_print_net_nfsd_stats(struct activity *a, int curr, int actio
 
        if (action & F_END) {
                draw_activity_graphs(a->g_nr, g_type, title, g_title, NULL, group,
-                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a->id, 0);
+                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a, 0);
 
                /* Free remaining structures */
                free_graphs(out, outsize, spmin, spmax);
@@ -2998,7 +3024,7 @@ __print_funct_t svg_print_net_sock_stats(struct activity *a, int curr, int actio
 
        if (action & F_END) {
                draw_activity_graphs(a->g_nr, g_type, title, g_title, NULL, group,
-                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a->id, 0);
+                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a, 0);
 
                /* Free remaining structures */
                free_graphs(out, outsize, spmin, spmax);
@@ -3087,7 +3113,7 @@ __print_funct_t svg_print_net_ip_stats(struct activity *a, int curr, int action,
 
        if (action & F_END) {
                draw_activity_graphs(a->g_nr, g_type, title, g_title, NULL, group,
-                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a->id, 0);
+                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a, 0);
 
                /* Free remaining structures */
                free_graphs(out, outsize, spmin, spmax);
@@ -3177,7 +3203,7 @@ __print_funct_t svg_print_net_eip_stats(struct activity *a, int curr, int action
 
        if (action & F_END) {
                draw_activity_graphs(a->g_nr, g_type, title, g_title, NULL, group,
-                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a->id, 0);
+                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a, 0);
 
                /* Free remaining structures */
                free_graphs(out, outsize, spmin, spmax);
@@ -3293,7 +3319,7 @@ __print_funct_t svg_print_net_icmp_stats(struct activity *a, int curr, int actio
 
        if (action & F_END) {
                draw_activity_graphs(a->g_nr, g_type, title, g_title, NULL, group,
-                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a->id, 0);
+                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a, 0);
 
                /* Free remaining structures */
                free_graphs(out, outsize, spmin, spmax);
@@ -3404,7 +3430,7 @@ __print_funct_t svg_print_net_eicmp_stats(struct activity *a, int curr, int acti
 
        if (action & F_END) {
                draw_activity_graphs(a->g_nr, g_type, title, g_title, NULL, group,
-                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a->id, 0);
+                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a, 0);
 
                /* Free remaining structures */
                free_graphs(out, outsize, spmin, spmax);
@@ -3476,7 +3502,7 @@ __print_funct_t svg_print_net_tcp_stats(struct activity *a, int curr, int action
 
        if (action & F_END) {
                draw_activity_graphs(a->g_nr, g_type, title, g_title, NULL, group,
-                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a->id, 0);
+                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a, 0);
 
                /* Free remaining structures */
                free_graphs(out, outsize, spmin, spmax);
@@ -3552,7 +3578,7 @@ __print_funct_t svg_print_net_etcp_stats(struct activity *a, int curr, int actio
 
        if (action & F_END) {
                draw_activity_graphs(a->g_nr, g_type, title, g_title, NULL, group,
-                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a->id, 0);
+                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a, 0);
 
                /* Free remaining structures */
                free_graphs(out, outsize, spmin, spmax);
@@ -3624,7 +3650,7 @@ __print_funct_t svg_print_net_udp_stats(struct activity *a, int curr, int action
 
        if (action & F_END) {
                draw_activity_graphs(a->g_nr, g_type, title, g_title, NULL, group,
-                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a->id, 0);
+                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a, 0);
 
                /* Free remaining structures */
                free_graphs(out, outsize, spmin, spmax);
@@ -3693,7 +3719,7 @@ __print_funct_t svg_print_net_sock6_stats(struct activity *a, int curr, int acti
 
        if (action & F_END) {
                draw_activity_graphs(a->g_nr, g_type, title, g_title, NULL, group,
-                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a->id, 0);
+                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a, 0);
 
                /* Free remaining structures */
                free_graphs(out, outsize, spmin, spmax);
@@ -3793,7 +3819,7 @@ __print_funct_t svg_print_net_ip6_stats(struct activity *a, int curr, int action
 
        if (action & F_END) {
                draw_activity_graphs(a->g_nr, g_type, title, g_title, NULL, group,
-                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a->id, 0);
+                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a, 0);
 
                /* Free remaining structures */
                free_graphs(out, outsize, spmin, spmax);
@@ -3898,7 +3924,7 @@ __print_funct_t svg_print_net_eip6_stats(struct activity *a, int curr, int actio
 
        if (action & F_END) {
                draw_activity_graphs(a->g_nr, g_type, title, g_title, NULL, group,
-                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a->id, 0);
+                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a, 0);
 
                /* Free remaining structures */
                free_graphs(out, outsize, spmin, spmax);
@@ -4028,7 +4054,7 @@ __print_funct_t svg_print_net_icmp6_stats(struct activity *a, int curr, int acti
 
        if (action & F_END) {
                draw_activity_graphs(a->g_nr, g_type, title, g_title, NULL, group,
-                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a->id, 0);
+                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a, 0);
 
                /* Free remaining structures */
                free_graphs(out, outsize, spmin, spmax);
@@ -4135,7 +4161,7 @@ __print_funct_t svg_print_net_eicmp6_stats(struct activity *a, int curr, int act
 
        if (action & F_END) {
                draw_activity_graphs(a->g_nr, g_type, title, g_title, NULL, group,
-                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a->id, 0);
+                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a, 0);
 
                /* Free remaining structures */
                free_graphs(out, outsize, spmin, spmax);
@@ -4207,7 +4233,7 @@ __print_funct_t svg_print_net_udp6_stats(struct activity *a, int curr, int actio
 
        if (action & F_END) {
                draw_activity_graphs(a->g_nr, g_type, title, g_title, NULL, group,
-                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a->id, 0);
+                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a, 0);
 
                /* Free remaining structures */
                free_graphs(out, outsize, spmin, spmax);
@@ -4307,7 +4333,7 @@ __print_funct_t svg_print_pwr_cpufreq_stats(struct activity *a, int curr, int ac
                        if (draw_activity_graphs(a->g_nr, g_type,
                                                 title, g_title, item_name, group,
                                                 spmin + i, spmax + i, out + i, outsize + i,
-                                                svg_p, record_hdr, i, a->id, xid)) {
+                                                svg_p, record_hdr, i, a, xid)) {
                                xid++;
                        }
                }
@@ -4384,7 +4410,7 @@ __print_funct_t svg_print_pwr_fan_stats(struct activity *a, int curr, int action
                        if (draw_activity_graphs(a->g_nr, g_type,
                                                 title, g_title, item_name, group,
                                                 spmin + i, spmax + i, out + i, outsize + i,
-                                                svg_p, record_hdr, FALSE, a->id, xid)) {
+                                                svg_p, record_hdr, FALSE, a, xid)) {
                                xid++;
                        }
                }
@@ -4484,7 +4510,7 @@ __print_funct_t svg_print_pwr_temp_stats(struct activity *a, int curr, int actio
                                                 title, g_title, item_name, group,
                                                 spmin + TEMP_ARRAY_SZ * i, spmax + TEMP_ARRAY_SZ * i,
                                                 out + TEMP_ARRAY_SZ * i, outsize + TEMP_ARRAY_SZ * i,
-                                                svg_p, record_hdr, FALSE, a->id, xid)) {
+                                                svg_p, record_hdr, FALSE, a, xid)) {
                                xid++;
                        }
                }
@@ -4584,7 +4610,7 @@ __print_funct_t svg_print_pwr_in_stats(struct activity *a, int curr, int action,
                                                 title, g_title, item_name, group,
                                                 spmin + IN_ARRAY_SZ * i, spmax + IN_ARRAY_SZ * i,
                                                 out + IN_ARRAY_SZ * i, outsize + IN_ARRAY_SZ * i,
-                                                svg_p, record_hdr, FALSE, a->id, xid)) {
+                                                svg_p, record_hdr, FALSE, a, xid)) {
                                xid++;
                        }
                }
@@ -4681,7 +4707,7 @@ __print_funct_t svg_print_huge_stats(struct activity *a, int curr, int action, s
        if (action & F_END) {
                draw_activity_graphs(a->g_nr, g_type,
                                     title, g_title, NULL, group,
-                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a->id, 0);
+                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a, 0);
 
                /* Free remaining structures */
                free_graphs(out, outsize, spmin, spmax);
@@ -4914,7 +4940,7 @@ __print_funct_t svg_print_filesystem_stats(struct activity *a, int curr, int act
 
                        if (draw_activity_graphs(a->g_nr, g_type, title, g_title, item_name, group,
                                                 spmin + pos, spmax + pos, out + pos, outsize + pos,
-                                                svg_p, record_hdr, FALSE, a->id, xid)) {
+                                                svg_p, record_hdr, FALSE, a, xid)) {
                                xid++;
                        }
                }
@@ -5105,7 +5131,7 @@ __print_funct_t svg_print_fchost_stats(struct activity *a, int curr, int action,
                        draw_activity_graphs(a->g_nr, g_type,
                                             title, g_title, item_name, group,
                                             spmin + pos, spmax + pos, out + pos, outsize + pos,
-                                            svg_p, record_hdr, FALSE, a->id, i);
+                                            svg_p, record_hdr, FALSE, a, i);
                }
 
                /* Free remaining structures */
@@ -5246,7 +5272,7 @@ __print_funct_t svg_print_softnet_stats(struct activity *a, int curr, int action
                        draw_activity_graphs(a->g_nr, g_type,
                                             title, g_title, item_name, group,
                                             spmin + pos, spmax + pos, out + pos, outsize + pos,
-                                            svg_p, record_hdr, FALSE, a->id, i);
+                                            svg_p, record_hdr, FALSE, a, i);
                }
 
                /* Free remaining structures */
@@ -5348,7 +5374,7 @@ __print_funct_t svg_print_psicpu_stats(struct activity *a, int curr, int action,
                *(spmin + 2) /= 100; *(spmax + 2) /= 100;
 
                draw_activity_graphs(a->g_nr, g_type, title, g_title, NULL, group,
-                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a->id, 0);
+                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a, 0);
 
                /* Free remaining structures */
                free_graphs(out, outsize, spmin, spmax);
@@ -5500,7 +5526,7 @@ __print_funct_t svg_print_psiio_stats(struct activity *a, int curr, int action,
                *(spmin + 6) /= 100; *(spmax + 6) /= 100;
 
                draw_activity_graphs(a->g_nr, g_type, title, g_title, NULL, group,
-                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a->id, 0);
+                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a, 0);
 
                /* Free remaining structures */
                free_graphs(out, outsize, spmin, spmax);
@@ -5652,7 +5678,7 @@ __print_funct_t svg_print_psimem_stats(struct activity *a, int curr, int action,
                *(spmin + 6) /= 100; *(spmax + 6) /= 100;
 
                draw_activity_graphs(a->g_nr, g_type, title, g_title, NULL, group,
-                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a->id, 0);
+                                    spmin, spmax, out, outsize, svg_p, record_hdr, FALSE, a, 0);
 
                /* Free remaining structures */
                free_graphs(out, outsize, spmin, spmax);