}
}
+/*
+ ***************************************************************************
+ * Display queue and load statistics in SVG
+ *
+ * IN:
+ * @a Activity structure with statistics.
+ * @curr Index in array for current sample statistics.
+ * @action Action expected from current function.
+ * @svg_p SVG specific parameters: Current graph number (.@graph_no),
+ * flag indicating that a restart record has been previously
+ * found (.@restart) and a pointer on a record header structure
+ * (.@record_hdr) containing the first stats sample.
+ * @itv Interval of time in jiffies (only with F_MAIN action).
+ * @record_hdr Pointer on record header of current stats sample.
+ ***************************************************************************
+ */
+__print_funct_t svg_print_ktables_stats(struct activity *a, int curr, int action, struct svg_parm *svg_p,
+ unsigned long long itv, struct record_header *record_hdr)
+{
+ struct stats_ktables
+ *skc = (struct stats_ktables *) a->buf[curr];
+ int group[] = {3, 1};
+ char *title[] = {"Kernel tables (1)", "Kernel tables (2)"};
+ char *g_title[] = {"~file-nr", "~inode-nr", "~dentunusd",
+ "~pty-nr"};
+ static double *spmin, *spmax;
+ static char **out;
+ static int *outsize;
+
+ if (action & F_BEGIN) {
+ /*
+ * Allocate arrays that will contain the graphs data
+ * and the min/max values.
+ */
+ out = allocate_graph_lines(4, &outsize, &spmin, &spmax);
+ }
+
+ if (action & F_MAIN) {
+ /* Check for min/max values */
+ save_extrema(0, 0, 4, (void *) a->buf[curr], NULL,
+ itv, spmin, spmax);
+ /* file-nr */
+ lniappend(record_hdr->ust_time - svg_p->record_hdr->ust_time,
+ (unsigned long) skc->file_used,
+ out, outsize, svg_p->restart);
+ /* inode-nr */
+ lniappend(record_hdr->ust_time - svg_p->record_hdr->ust_time,
+ (unsigned long) skc->inode_used,
+ out + 1, outsize + 1, svg_p->restart);
+ /* dentunusd */
+ lniappend(record_hdr->ust_time - svg_p->record_hdr->ust_time,
+ (unsigned long) skc->dentry_stat,
+ out + 2, outsize + 2, svg_p->restart);
+ /* pty-nr */
+ lniappend(record_hdr->ust_time - svg_p->record_hdr->ust_time,
+ (unsigned long) skc->pty_nr,
+ out + 3, outsize + 3, svg_p->restart);
+ }
+
+ if (action & F_END) {
+ draw_activity_graphs(a->g_nr, SVG_LINE_GRAPH, title, g_title, NULL, group,
+ spmin, spmax, out, outsize, svg_p, record_hdr);
+
+ /* Free remaining structures */
+ free_graphs(out, outsize, spmin, spmax);
+ }
+}
+
/*
***************************************************************************
* Display queue and load statistics in SVG
__print_funct_t svg_print_memory_stats
(struct activity *, int, int, struct svg_parm *, unsigned long long,
struct record_header *);
+__print_funct_t svg_print_ktables_stats
+ (struct activity *, int, int, struct svg_parm *, unsigned long long,
+ struct record_header *);
__print_funct_t svg_print_queue_stats
(struct activity *, int, int, struct svg_parm *, unsigned long long,
struct record_header *);