plugin: Use strcasecmp rather than strncasecmp to find a plugin.
[collectd.git] / src / swap.c
index c7b634b..1621f7a 100644 (file)
@@ -221,7 +221,7 @@ static void swap_submit_gauge (const char *plugin_instance, /* {{{ */
        swap_submit (plugin_instance, "swap", type_instance, v);
 } /* }}} void swap_submit_gauge */
 
-#if KERNEL_LINUX
+#if KERNEL_LINUX || HAVE_PERFSTAT
 static void swap_submit_derive (const char *plugin_instance, /* {{{ */
                const char *type_instance, derive_t value)
 {
@@ -230,7 +230,9 @@ static void swap_submit_derive (const char *plugin_instance, /* {{{ */
        v.derive = value;
        swap_submit (plugin_instance, "swap_io", type_instance, v);
 } /* }}} void swap_submit_derive */
+#endif
 
+#if KERNEL_LINUX
 static int swap_read_separate (void) /* {{{ */
 {
        FILE *fh;
@@ -337,7 +339,7 @@ static int swap_read_combined (void) /* {{{ */
 
        fclose (fh);
 
-       if (have_data != 0x07)
+       if ((have_data & 0x03) != 0x03)
                return (ENOENT);
 
        if (isnan (swap_total)
@@ -349,7 +351,8 @@ static int swap_read_combined (void) /* {{{ */
 
        swap_submit_gauge (NULL, "used",   1024.0 * swap_used);
        swap_submit_gauge (NULL, "free",   1024.0 * swap_free);
-       swap_submit_gauge (NULL, "cached", 1024.0 * swap_cached);
+       if (have_data & 0x04)
+               swap_submit_gauge (NULL, "cached", 1024.0 * swap_cached);
 
        return (0);
 } /* }}} int swap_read_combined */
@@ -786,8 +789,12 @@ static int swap_read (void) /* {{{ */
                         sstrerror (errno, errbuf, sizeof (errbuf)));
                 return (-1);
         }
+
        swap_submit_gauge (NULL, "used", (gauge_t) (pmemory.pgsp_total - pmemory.pgsp_free) * pagesize);
        swap_submit_gauge (NULL, "free", (gauge_t) pmemory.pgsp_free * pagesize );
+       swap_submit_gauge (NULL, "reserved", (gauge_t) pmemory.pgsp_rsvd * pagesize);
+       swap_submit_derive (NULL, "in",  (derive_t) pmemory.pgspins * pagesize);
+       swap_submit_derive (NULL, "out", (derive_t) pmemory.pgspouts * pagesize);
 
        return (0);
 } /* }}} int swap_read */