Merge branch 'collectd-5.8'
authorRuben Kerkhof <ruben@rubenkerkhof.com>
Mon, 19 Feb 2018 15:14:24 +0000 (16:14 +0100)
committerRuben Kerkhof <ruben@rubenkerkhof.com>
Mon, 19 Feb 2018 15:14:24 +0000 (16:14 +0100)
1  2 
src/intel_pmu.c

diff --combined src/intel_pmu.c
@@@ -192,8 -192,7 +192,8 @@@ static void pmu_dump_config(void) 
    DEBUG(PMU_PLUGIN ":   software_events   : %d", g_ctx.sw_events);
  
    for (size_t i = 0; i < g_ctx.hw_events_count; i++) {
 -    DEBUG(PMU_PLUGIN ":   hardware_events[%zu]: %s", i, g_ctx.hw_events[i]);
 +    DEBUG(PMU_PLUGIN ":   hardware_events[%" PRIsz "]: %s", i,
 +          g_ctx.hw_events[i]);
    }
  }
  
@@@ -205,6 -204,11 +205,11 @@@ static int pmu_config_hw_events(oconfig
      return -EINVAL;
    }
  
+   if (g_ctx.hw_events) {
+     ERROR(PMU_PLUGIN ": Duplicate config for HardwareEvents.");
+     return -EINVAL;
+   }
    g_ctx.hw_events = calloc(ci->values_num, sizeof(char *));
    if (g_ctx.hw_events == NULL) {
      ERROR(PMU_PLUGIN ": Failed to allocate hw events.");
@@@ -402,12 -406,6 +407,6 @@@ static int pmu_add_hw_events(struct eve
      char *s, *tmp;
      for (s = strtok_r(events, ",", &tmp); s; s = strtok_r(NULL, ",", &tmp)) {
  
-       /* Multiple events parsed in one entry */
-       if (group_events_count == 1) {
-         /* Mark previously added event as group leader */
-         el->eventlist_last->group_leader = 1;
-       }
        /* Allocate memory for event struct that contains array of efd structs
           for all cores */
        struct event *e =
          return -ENOMEM;
        }
  
-       if (resolve_event(s, &e->attr) == 0) {
-         e->next = NULL;
-         if (!el->eventlist)
-           el->eventlist = e;
-         if (el->eventlist_last)
-           el->eventlist_last->next = e;
-         el->eventlist_last = e;
-         e->event = strdup(s);
-       } else {
-         DEBUG(PMU_PLUGIN ": Cannot resolve %s", s);
+       if (resolve_event(s, &e->attr) != 0) {
+         WARNING(PMU_PLUGIN ": Cannot resolve %s", s);
          sfree(e);
+         continue;
        }
  
+       /* Multiple events parsed in one entry */
+       if (group_events_count == 1) {
+         /* Mark previously added event as group leader */
+         el->eventlist_last->group_leader = 1;
+       }
+       e->next = NULL;
+       if (!el->eventlist)
+         el->eventlist = e;
+       if (el->eventlist_last)
+         el->eventlist_last->next = e;
+       el->eventlist_last = e;
+       e->event = strdup(s);
        group_events_count++;
      }