+#elif HAVE_SYSCTLBYNAME
+ /*
+ * vm.stats.vm.v_page_size: 4096
+ * vm.stats.vm.v_page_count: 246178
+ * vm.stats.vm.v_free_count: 28760
+ * vm.stats.vm.v_wire_count: 37526
+ * vm.stats.vm.v_active_count: 55239
+ * vm.stats.vm.v_inactive_count: 113730
+ * vm.stats.vm.v_cache_count: 10809
+ */
+ char *sysctl_keys[8] =
+ {
+ "vm.stats.vm.v_page_size",
+ "vm.stats.vm.v_page_count",
+ "vm.stats.vm.v_free_count",
+ "vm.stats.vm.v_wire_count",
+ "vm.stats.vm.v_active_count",
+ "vm.stats.vm.v_inactive_count",
+ "vm.stats.vm.v_cache_count",
+ NULL
+ };
+ double sysctl_vals[8];
+
+ int i;
+
+ for (i = 0; sysctl_keys[i] != NULL; i++)
+ {
+ int value;
+ size_t value_len = sizeof (value);
+
+ if (sysctlbyname (sysctl_keys[i], (void *) &value, &value_len,
+ NULL, 0) == 0)
+ {
+ sysctl_vals[i] = value;
+ DEBUG ("memory plugin: %26s: %6i", sysctl_keys[i], sysctl_vals[i]);
+ }
+ else
+ {
+ sysctl_vals[i] = NAN;
+ }
+ } /* for (sysctl_keys) */
+
+ /* multiply all all page counts with the pagesize */
+ for (i = 1; sysctl_keys[i] != NULL; i++)
+ if (!isnan (sysctl_vals[i]))
+ sysctl_vals[i] *= sysctl_vals[0];
+
+ memory_submit ("free", sysctl_vals[2]);
+ memory_submit ("wired", sysctl_vals[3]);
+ memory_submit ("active", sysctl_vals[4]);
+ memory_submit ("inactive", sysctl_vals[5]);
+ memory_submit ("cache", sysctl_vals[6]);
+/* #endif HAVE_SYSCTLBYNAME */
+
+#elif KERNEL_LINUX