Code

swap plugin: Fix the ‘swap_submit’ invocation of non-Linux implementations.
authorFlorian Forster <octo@huhu.verplant.org>
Wed, 19 Aug 2009 09:39:41 +0000 (11:39 +0200)
committerFlorian Forster <octo@huhu.verplant.org>
Wed, 19 Aug 2009 09:42:49 +0000 (11:42 +0200)
And replace all the ‘unsigned long long’s with ‘derive_t’.

src/swap.c

index dccea6d0cc039e0c18ff06d96b963e24ee8db938..492094b669f1581358f29ab05296a560ada57f06 100644 (file)
@@ -64,7 +64,7 @@
 /* #endif KERNEL_LINUX */
 
 #elif HAVE_LIBKSTAT
-static unsigned long long pagesize;
+static derive_t pagesize;
 static kstat_t *ksp;
 /* #endif HAVE_LIBKSTAT */
 
@@ -97,7 +97,7 @@ static int swap_init (void)
 
 #elif HAVE_LIBKSTAT
        /* getpagesize(3C) tells me this does not fail.. */
-       pagesize = (unsigned long long) getpagesize ();
+       pagesize = (derive_t) getpagesize ();
        if (get_kstat (&ksp, "unix", 0, "system_pages"))
                ksp = NULL;
 /* #endif HAVE_LIBKSTAT */
@@ -146,7 +146,7 @@ static void swap_submit (const char *type_instance, derive_t value, unsigned typ
        switch (type)
        {
                case DS_TYPE_GAUGE:
-                       values[0].gauge = value;
+                       values[0].gauge = (gauge_t) value;
                        sstrncpy (vl.type, "swap", sizeof (vl.type));
                        break;
                case DS_TYPE_DERIVE:
@@ -176,12 +176,12 @@ static int swap_read (void)
        char *fields[8];
        int numfields;
 
-       unsigned long long swap_used   = 0LL;
-       unsigned long long swap_cached = 0LL;
-       unsigned long long swap_free   = 0LL;
-       unsigned long long swap_total  = 0LL;
-       unsigned long long swap_in     = 0LL;
-       unsigned long long swap_out    = 0LL;
+       derive_t swap_used   = 0;
+       derive_t swap_cached = 0;
+       derive_t swap_free   = 0;
+       derive_t swap_total  = 0;
+       derive_t swap_in     = 0;
+       derive_t swap_out    = 0;
 
        if ((fh = fopen ("/proc/meminfo", "r")) == NULL)
        {
@@ -193,7 +193,7 @@ static int swap_read (void)
 
        while (fgets (buffer, 1024, fh) != NULL)
        {
-               unsigned long long *val = NULL;
+               derive_t *val = NULL;
 
                if (strncasecmp (buffer, "SwapTotal:", 10) == 0)
                        val = &swap_total;
@@ -209,7 +209,7 @@ static int swap_read (void)
                if (numfields < 2)
                        continue;
 
-               *val = atoll (fields[1]) * 1024LL;
+               *val = (derive_t) atoll (fields[1]) * 1024LL;
        }
 
        if (fclose (fh))
@@ -234,7 +234,7 @@ static int swap_read (void)
 
        while (fgets (buffer, 1024, fh) != NULL)
        {
-               unsigned long long *val = NULL;
+               derive_t *val = NULL;
 
                if (strncasecmp (buffer, "pswpin", 6) == 0)
                        val = &swap_in;
@@ -248,7 +248,7 @@ static int swap_read (void)
                if (numfields < 2)
                        continue;
 
-               *val = atoll (fields[1]);
+               *val = (derive_t) atoll (fields[1]);
        }
 
        if (fclose (fh))
@@ -267,9 +267,9 @@ static int swap_read (void)
 /* #endif KERNEL_LINUX */
 
 #elif HAVE_LIBKSTAT
-       unsigned long long swap_alloc;
-       unsigned long long swap_resv;
-       unsigned long long swap_avail;
+       derive_t swap_alloc;
+       derive_t swap_resv;
+       derive_t swap_avail;
 
        struct anoninfo ai;
 
@@ -302,16 +302,14 @@ static int swap_read (void)
         * swap_alloc = pagesize * ( ai.ani_max - ai.ani_free );
         * can suffer from a 32bit overflow.
         */
-       swap_alloc  = ai.ani_max - ai.ani_free;
-       swap_alloc *= pagesize;
-       swap_resv   = ai.ani_resv + ai.ani_free - ai.ani_max;
-       swap_resv  *= pagesize;
-       swap_avail  = ai.ani_max - ai.ani_resv;
-       swap_avail *= pagesize;
-
-       swap_submit ("used", swap_alloc);
-       swap_submit ("free", swap_avail);
-       swap_submit ("reserved", swap_resv);
+       swap_alloc  = (derive_t) ((ai.ani_max - ai.ani_free) * pagesize);
+       swap_resv   = (derive_t) ((ai.ani_resv + ai.ani_free - ai.ani_max)
+                       * pagesize);
+       swap_avail  = (derive_t) ((ai.ani_max - ai.ani_resv) * pagesize);
+
+       swap_submit ("used", swap_alloc, DS_TYPE_GAUGE);
+       swap_submit ("free", swap_avail, DS_TYPE_GAUGE);
+       swap_submit ("reserved", swap_resv, DS_TYPE_GAUGE);
 /* #endif HAVE_LIBKSTAT */
 
 #elif HAVE_SWAPCTL
@@ -320,8 +318,8 @@ static int swap_read (void)
        int status;
        int i;
 
-       uint64_t used  = 0;
-       uint64_t total = 0;
+       derive_t used  = 0;
+       derive_t total = 0;
 
        /*
         * XXX: This is the syntax for the *BSD `swapctl', which has the
@@ -362,9 +360,9 @@ static int swap_read (void)
        }
 
 #if defined(DEV_BSIZE) && (DEV_BSIZE > 0)
-# define C_SWAP_BLOCK_SIZE ((uint64_t) DEV_BSIZE)
+# define C_SWAP_BLOCK_SIZE ((derive_t) DEV_BSIZE)
 #else
-# define C_SWAP_BLOCK_SIZE ((uint64_t) 512)
+# define C_SWAP_BLOCK_SIZE ((derive_t) 512)
 #endif
 
        for (i = 0; i < swap_num; i++)
@@ -372,9 +370,9 @@ static int swap_read (void)
                if ((swap_entries[i].se_flags & SWF_ENABLE) == 0)
                        continue;
 
-               used  += ((uint64_t) swap_entries[i].se_inuse)
+               used  += ((derive_t) swap_entries[i].se_inuse)
                        * C_SWAP_BLOCK_SIZE;
-               total += ((uint64_t) swap_entries[i].se_nblks)
+               total += ((derive_t) swap_entries[i].se_nblks)
                        * C_SWAP_BLOCK_SIZE;
        }
 
@@ -386,8 +384,8 @@ static int swap_read (void)
                return (-1);
        }
 
-       swap_submit ("used", (gauge_t) used);
-       swap_submit ("free", (gauge_t) (total - used));
+       swap_submit ("used", used, DS_TYPE_GAUGE);
+       swap_submit ("free", total - used, DS_TYPE_GAUGE);
 
        sfree (swap_entries);
 /* #endif HAVE_SWAPCTL */
@@ -408,17 +406,17 @@ static int swap_read (void)
                return (-1);
 
        /* The returned values are bytes. */
-       swap_submit ("used", sw_usage.xsu_used);
-       swap_submit ("free", sw_usage.xsu_avail);
+       swap_submit ("used", (derive_t) sw_usage.xsu_used, DS_TYPE_GAUGE);
+       swap_submit ("free", (derive_t) sw_usage.xsu_avail, DS_TYPE_GAUGE);
 /* #endif VM_SWAPUSAGE */
 
 #elif HAVE_LIBKVM_GETSWAPINFO
        struct kvm_swap data_s;
        int             status;
 
-       unsigned long long used;
-       unsigned long long free;
-       unsigned long long total;
+       derive_t used;
+       derive_t free;
+       derive_t total;
 
        if (kvm_obj == NULL)
                return (-1);
@@ -428,16 +426,16 @@ static int swap_read (void)
        if (status == -1)
                return (-1);
 
-       total = (unsigned long long) data_s.ksw_total;
-       used  = (unsigned long long) data_s.ksw_used;
+       total = (derive_t) data_s.ksw_total;
+       used  = (derive_t) data_s.ksw_used;
 
-       total *= (unsigned long long) kvm_pagesize;
-       used  *= (unsigned long long) kvm_pagesize;
+       total *= (derive_t) kvm_pagesize;
+       used  *= (derive_t) kvm_pagesize;
 
        free = total - used;
 
-       swap_submit ("used", used);
-       swap_submit ("free", free);
+       swap_submit ("used", used, DS_TYPE_GAUGE);
+       swap_submit ("free", free, DS_TYPE_GAUGE);
 /* #endif HAVE_LIBKVM_GETSWAPINFO */
 
 #elif HAVE_LIBSTATGRAB
@@ -448,8 +446,8 @@ static int swap_read (void)
        if (swap == NULL)
                return (-1);
 
-       swap_submit ("used", swap->used);
-       swap_submit ("free", swap->free);
+       swap_submit ("used", (derive_t) swap->used, DS_TYPE_GAUGE);
+       swap_submit ("free", (derive_t) swap->free, DS_TYPE_GAUGE);
 #endif /* HAVE_LIBSTATGRAB */
 
        return (0);