]> git.ipfire.org Git - thirdparty/collectd.git/commitdiff
irq plugin: refactor the NetBSD code.
authorFlorian Forster <octo@collectd.org>
Fri, 15 Dec 2023 08:44:12 +0000 (09:44 +0100)
committerFlorian Forster <octo@collectd.org>
Fri, 15 Dec 2023 08:44:12 +0000 (09:44 +0100)
* Declare local variables late.
* Initialize when declaring variables.
* Use `metric_family_append`.

src/irq.c

index fd5ea536a02239c374fa40874f62a3a28c457979..98733d7f66c6a60d8f20ef510a5687e6c5994216 100644 (file)
--- a/src/irq.c
+++ b/src/irq.c
@@ -197,50 +197,43 @@ static int irq_read_data(metric_family_t *fam) {
                       KERN_EVCNT_COUNT_NONZERO};
   size_t buflen = 0;
   void *buf = NULL;
-  const struct evcnt_sysctl *evs, *last_evs;
 
   for (;;) {
-    size_t newlen;
-    int error;
-
-    newlen = buflen;
-    if (buflen)
+    size_t newlen = buflen;
+    if (buflen) {
       buf = malloc(buflen);
-    error = sysctl(mib, __arraycount(mib), buf, &newlen, NULL, 0);
+    }
+    int error = sysctl(mib, __arraycount(mib), buf, &newlen, NULL, 0);
     if (error) {
-      ERROR("irq plugin: failed to get event count");
-      return -1;
+      ERROR("irq plugin: failed to get event count with status %d", error);
+      return error;
     }
     if (newlen <= buflen) {
       buflen = newlen;
       break;
     }
-    if (buf)
-      free(buf);
+    sfree(buf);
     buflen = newlen;
   }
-  evs = buf;
-  last_evs = (void *)((char *)buf + buflen);
+  const struct evcnt_sysctl *evs = buf;
+  const struct evcnt_sysctl *last_evs = (void *)((char *)buf + buflen);
   buflen /= sizeof(uint64_t);
-  metric_t m = {0};
   while (evs < last_evs && buflen > sizeof(*evs) / sizeof(uint64_t) &&
          buflen >= evs->ev_len) {
-    char irqname[80];
+    char irqname[128] = {0};
 
-    snprintf(irqname, 80, "%s-%s", evs->ev_strings,
-             evs->ev_strings + evs->ev_grouplen + 1);
+    ssnprintf(irqname, sizeof(irqname), "%s-%s", evs->ev_strings,
+              evs->ev_strings + evs->ev_grouplen + 1);
 
     if (ignorelist_match(ignorelist, irqname) == 0) {
-      metric_label_set(&m, "irq", irqname);
-      m.value.counter = evs->ev_count;
-      metric_family_metric_append(fam, m);
+      metric_family_append(fam, "id", irqname,
+                           (value_t){.counter = evs->ev_count}, NULL);
     }
 
     buflen -= evs->ev_len;
     evs = (const void *)((const uint64_t *)evs + evs->ev_len);
   }
   free(buf);
-  metric_reset(&m);
   return 0;
 }
 #endif /* KERNEL_NETBSD */