]> granicus.if.org Git - sysstat/commitdiff
sadf: Add new output format: raw (part 7)
authorSebastien GODARD <sysstat@users.noreply.github.com>
Mon, 2 Jan 2017 15:23:28 +0000 (16:23 +0100)
committerSebastien GODARD <sysstat@users.noreply.github.com>
Mon, 2 Jan 2017 15:23:28 +0000 (16:23 +0100)
Add raw output format for some power management activities.

Signed-off-by: Sebastien GODARD <sysstat@users.noreply.github.com>
activity.c
raw_stats.c
raw_stats.h

index 3a5215ffbcb2169495e6ae354e8366941cf2122f..b5f1e9c0834b9616b89651a9f7355367ec881544 100644 (file)
@@ -1176,6 +1176,7 @@ struct activity pwr_cpufreq_act = {
        .f_xml_print    = xml_print_pwr_cpufreq_stats,
        .f_json_print   = json_print_pwr_cpufreq_stats,
        .f_svg_print    = svg_print_pwr_cpufreq_stats,
+       .f_raw_print    = raw_print_pwr_cpufreq_stats,
        .name           = "A_PWR_CPUFREQ",
        .g_nr           = 1,
 #endif
@@ -1212,6 +1213,7 @@ struct activity pwr_fan_act = {
        .f_xml_print    = xml_print_pwr_fan_stats,
        .f_json_print   = json_print_pwr_fan_stats,
        .f_svg_print    = svg_print_pwr_fan_stats,
+       .f_raw_print    = raw_print_pwr_fan_stats,
        .name           = "A_PWR_FAN",
        .g_nr           = 1,
 #endif
@@ -1248,6 +1250,7 @@ struct activity pwr_temp_act = {
        .f_xml_print    = xml_print_pwr_temp_stats,
        .f_json_print   = json_print_pwr_temp_stats,
        .f_svg_print    = svg_print_pwr_temp_stats,
+       .f_raw_print    = raw_print_pwr_temp_stats,
        .name           = "A_PWR_TEMP",
        .g_nr           = 2,
 #endif
@@ -1284,6 +1287,7 @@ struct activity pwr_in_act = {
        .f_xml_print    = xml_print_pwr_in_stats,
        .f_json_print   = json_print_pwr_in_stats,
        .f_svg_print    = svg_print_pwr_in_stats,
+       .f_raw_print    = raw_print_pwr_in_stats,
        .name           = "A_PWR_IN",
        .g_nr           = 2,
 #endif
index d5e4beb759bcdd16576fff791cda218c17ef0cef..a40202b45ca5c52fb59da675204efd5f255b12fe 100644 (file)
@@ -1267,3 +1267,108 @@ __print_funct_t raw_print_net_udp6_stats(struct activity *a, char *timestr, int
        pval((unsigned long long) snup->InErrors6, (unsigned long long) snuc->InErrors6);
        printf("\n");
 }
+
+/*
+ ***************************************************************************
+ * Display CPU frequency statistics in raw format.
+ *
+ * IN:
+ * @a          Activity structure with statistics.
+ * @timestr    Time for current statistics sample.
+ * @curr       Index in array for current sample statistics.
+ ***************************************************************************
+ */
+__print_funct_t raw_print_pwr_cpufreq_stats(struct activity *a, char *timestr, int curr)
+{
+       int i;
+       struct stats_pwr_cpufreq *spc;
+
+       for (i = 0; (i < a->nr) && (i < a->bitmap->b_size + 1); i++) {
+
+               spc = (struct stats_pwr_cpufreq *) ((char *) a->buf[curr]  + i * a->msize);
+
+               /* Should current CPU (including CPU "all") be displayed? */
+               if (a->bitmap->b_array[i >> 3] & (1 << (i & 0x07))) {
+                       /* Yes: Display it */
+                       printf("%s %s:%d", timestr, pfield(a->hdr_line, FIRST), i - 1);
+                       printf(" %s:%lu\n", pfield(NULL, 0), spc->cpufreq);
+               }
+       }
+}
+
+/*
+ ***************************************************************************
+ * Display fan statistics in raw format.
+ *
+ * IN:
+ * @a          Activity structure with statistics.
+ * @timestr    Time for current statistics sample.
+ * @curr       Index in array for current sample statistics.
+ ***************************************************************************
+ */
+__print_funct_t raw_print_pwr_fan_stats(struct activity *a, char *timestr, int curr)
+{
+       int i;
+       struct stats_pwr_fan *spc;
+
+       for (i = 0; i < a->nr; i++) {
+               spc = (struct stats_pwr_fan *) ((char *) a->buf[curr]  + i * a->msize);
+
+               printf("%s %s:%d", timestr, pfield(a->hdr_line, FIRST), i + 1);
+               printf(" %s:%s", pfield(NULL, 0), spc->device);
+               printf(" %s:%f", pfield(NULL, 0), spc->rpm);
+               printf(" rpm_min:%f\n", spc->rpm_min);
+       }
+}
+
+/*
+ ***************************************************************************
+ * Display temperature statistics in raw format.
+ *
+ * IN:
+ * @a          Activity structure with statistics.
+ * @timestr    Time for current statistics sample.
+ * @curr       Index in array for current sample statistics.
+ ***************************************************************************
+ */
+__print_funct_t raw_print_pwr_temp_stats(struct activity *a, char *timestr, int curr)
+{
+       int i;
+       struct stats_pwr_temp *spc;
+
+       for (i = 0; i < a->nr; i++) {
+               spc = (struct stats_pwr_temp *) ((char *) a->buf[curr]  + i * a->msize);
+
+               printf("%s %s:%d", timestr, pfield(a->hdr_line, FIRST), i + 1);
+               printf(" %s:%s", pfield(NULL, 0), spc->device);
+               printf(" %s:%f", pfield(NULL, 0), spc->temp);
+               printf(" temp_min:%f", spc->temp_min);
+               printf(" temp_max:%f\n", spc->temp_max);
+       }
+}
+
+/*
+ ***************************************************************************
+ * Display voltage inputs statistics in raw format.
+ *
+ * IN:
+ * @a          Activity structure with statistics.
+ * @timestr    Time for current statistics sample.
+ * @curr       Index in array for current sample statistics.
+ ***************************************************************************
+ */
+__print_funct_t raw_print_pwr_in_stats(struct activity *a, char *timestr, int curr)
+{
+       int i;
+       struct stats_pwr_in *spc;
+
+       for (i = 0; i < a->nr; i++) {
+               spc = (struct stats_pwr_in *) ((char *) a->buf[curr]  + i * a->msize);
+
+               printf("%s %s:%d", timestr, pfield(a->hdr_line, FIRST), i);
+               printf(" %s:%s", pfield(NULL, 0), spc->device);
+               printf(" %s:%f", pfield(NULL, 0), spc->in);
+               printf(" in_min:%f", spc->in_min);
+               printf(" in_max:%f\n", spc->in_max);
+       }
+}
index 9a88ebc22b64cea6cb5b249b90cc2b47b6e219e7..b798e046d197f37d0e87b6cbf47218bcda80f39d 100644 (file)
@@ -72,5 +72,13 @@ __print_funct_t raw_print_net_eicmp6_stats
        (struct activity *, char *, int);
 __print_funct_t raw_print_net_udp6_stats
        (struct activity *, char *, int);
+__print_funct_t raw_print_pwr_cpufreq_stats
+       (struct activity *, char *, int);
+__print_funct_t raw_print_pwr_fan_stats
+       (struct activity *, char *, int);
+__print_funct_t raw_print_pwr_temp_stats
+       (struct activity *, char *, int);
+__print_funct_t raw_print_pwr_in_stats
+       (struct activity *, char *, int);
 
 #endif /* _RAW_STATS_H */