unsigned long long total;
};
+static struct interrupt *alloc_interrupts(int lines) {
+ static struct interrupt *irrs = NULL;
+ static int alloced = 0;
+
+ if(lines < alloced) return irrs;
+ else {
+ irrs = (struct interrupt *)realloc(irrs, lines * sizeof(struct interrupt));
+ if(!irrs)
+ fatal("Cannot allocate memory for %d interrupts", lines);
+
+ alloced = lines;
+ }
+
+ return irrs;
+}
+
int do_proc_interrupts(int update_every, unsigned long long dt) {
static procfile *ff = NULL;
static int cpus = -1, do_per_core = -1;
+ struct interrupt *irrs = NULL;
+
if(dt) {};
if(do_per_core == -1) do_per_core = config_get_boolean("plugin:proc:/proc/interrupts", "interrupts per core", 1);
}
// allocate the size we need;
- struct interrupt irrs[lines];
+ irrs = alloc_interrupts(lines);
irrs[0].used = 0;
// loop through all lines
unsigned long long total;
};
+static struct interrupt *alloc_interrupts(int lines) {
+ static struct interrupt *irrs = NULL;
+ static int alloced = 0;
+
+ if(lines < alloced) return irrs;
+ else {
+ irrs = (struct interrupt *)realloc(irrs, lines * sizeof(struct interrupt));
+ if(!irrs)
+ fatal("Cannot allocate memory for %d interrupts", lines);
+
+ alloced = lines;
+ }
+
+ return irrs;
+}
+
int do_proc_softirqs(int update_every, unsigned long long dt) {
static procfile *ff = NULL;
static int cpus = -1, do_per_core = -1;
+ struct interrupt *irrs = NULL;
+
if(dt) {};
if(do_per_core == -1) do_per_core = config_get_boolean("plugin:proc:/proc/softirqs", "interrupts per core", 1);
}
// allocate the size we need;
- struct interrupt irrs[lines];
+ irrs = alloc_interrupts(lines);
irrs[0].used = 0;
// loop through all lines