#include "plugin.h"
#if KERNEL_LINUX
-/* No global variables */
+static const char *config_keys[] =
+{
+ "Verbose"
+};
+static int config_keys_num = STATIC_ARRAY_SIZE (config_keys);
+
+static int verbose_output = 0;
/* #endif KERNEL_LINUX */
#else
submit (plugin_instance, type, type_instance, &value, 1);
} /* void submit_one */
+static int vmem_config (const char *key, const char *value)
+{
+ if (strcasecmp ("Verbose", key) == 0)
+ {
+ if ((strcasecmp ("true", value) == 0)
+ || (strcasecmp ("yes", value) == 0)
+ || (strcasecmp ("on", value) == 0))
+ verbose_output = 1;
+ else
+ verbose_output = 0;
+ }
+ else
+ {
+ return (-1);
+ }
+
+ return (0);
+} /* int vmem_config */
+
static int vmem_read (void)
{
#if KERNEL_LINUX
submit_one (NULL, "vmpage_number", inst, value);
}
- /*
- * Number of page allocations, refills, steals and scans. This is collected
- * ``per zone'', i. e. for DMA, DMA32, normal and possibly highmem.
- */
- else if (strncmp ("pgalloc_", key, strlen ("pgalloc_")) == 0)
- {
- char *inst = key + strlen ("pgalloc_");
- value_t value = { .counter = counter };
- submit_one (inst, "vmpage_action", "alloc", value);
- }
- else if (strncmp ("pgrefill_", key, strlen ("pgrefill_")) == 0)
- {
- char *inst = key + strlen ("pgrefill_");
- value_t value = { .counter = counter };
- submit_one (inst, "vmpage_action", "refill", value);
- }
- else if (strncmp ("pgsteal_", key, strlen ("pgsteal_")) == 0)
- {
- char *inst = key + strlen ("pgsteal_");
- value_t value = { .counter = counter };
- submit_one (inst, "vmpage_action", "steal", value);
- }
- else if (strncmp ("pgscan_kswapd_", key, strlen ("pgscan_kswapd_")) == 0)
- {
- char *inst = key + strlen ("pgscan_kswapd_");
- value_t value = { .counter = counter };
- submit_one (inst, "vmpage_action", "scan_kswapd", value);
- }
- else if (strncmp ("pgscan_direct_", key, strlen ("pgscan_direct_")) == 0)
- {
- char *inst = key + strlen ("pgscan_direct_");
- value_t value = { .counter = counter };
- submit_one (inst, "vmpage_action", "scan_direct", value);
- }
-
/*
* Page in and page outs. For memory and swap.
*/
}
/*
+ * Skip the other statistics if verbose output is disabled.
+ */
+ else if (verbose_output == 0)
+ continue;
+
+ /*
+ * Number of page allocations, refills, steals and scans. This is collected
+ * ``per zone'', i. e. for DMA, DMA32, normal and possibly highmem.
+ */
+ else if (strncmp ("pgalloc_", key, strlen ("pgalloc_")) == 0)
+ {
+ char *inst = key + strlen ("pgalloc_");
+ value_t value = { .counter = counter };
+ submit_one (inst, "vmpage_action", "alloc", value);
+ }
+ else if (strncmp ("pgrefill_", key, strlen ("pgrefill_")) == 0)
+ {
+ char *inst = key + strlen ("pgrefill_");
+ value_t value = { .counter = counter };
+ submit_one (inst, "vmpage_action", "refill", value);
+ }
+ else if (strncmp ("pgsteal_", key, strlen ("pgsteal_")) == 0)
+ {
+ char *inst = key + strlen ("pgsteal_");
+ value_t value = { .counter = counter };
+ submit_one (inst, "vmpage_action", "steal", value);
+ }
+ else if (strncmp ("pgscan_kswapd_", key, strlen ("pgscan_kswapd_")) == 0)
+ {
+ char *inst = key + strlen ("pgscan_kswapd_");
+ value_t value = { .counter = counter };
+ submit_one (inst, "vmpage_action", "scan_kswapd", value);
+ }
+ else if (strncmp ("pgscan_direct_", key, strlen ("pgscan_direct_")) == 0)
+ {
+ char *inst = key + strlen ("pgscan_direct_");
+ value_t value = { .counter = counter };
+ submit_one (inst, "vmpage_action", "scan_direct", value);
+ }
+
+ /*
* Page action
*
* number of pages moved to the active or inactive lists and freed, i. e.
void module_register (void)
{
- plugin_register_read ("vmem", vmem_read);
+ plugin_register_config ("vmem", vmem_config,
+ config_keys, config_keys_num);
+ plugin_register_read ("vmem", vmem_read);
} /* void module_register */
/* vim: set sw=2 sts=2 ts=8 : */