}
if (fscanf(filep, "%d", &value) != 1) {
ERROR("turbostat plugin: Failed to parse number from '%s'", path);
+ fclose(filep);
return -1;
}
fclose(filep);
unsigned int i;
unsigned int total_threads, total_cores;
+ if ((topology.num_threads == 0)
+ || (topology.num_cores == 0)
+ || (topology.num_packages == 0))
+ {
+ ERROR ("turbostat plugin: Invalid topology: %u threads, %u cores, %u packages",
+ topology.num_threads, topology.num_cores, topology.num_packages);
+ return -1;
+ }
+
total_threads = topology.num_threads * topology.num_cores * topology.num_packages;
*threads = calloc(total_threads, sizeof(struct thread_data));
if (*threads == NULL)
- goto err;
+ {
+ ERROR ("turbostat plugin: calloc failed");
+ return -1;
+ }
for (i = 0; i < total_threads; ++i)
(*threads)[i].cpu_id = topology.max_cpu_id + 1;
total_cores = topology.num_cores * topology.num_packages;
*cores = calloc(total_cores, sizeof(struct core_data));
if (*cores == NULL)
- goto err_clean_threads;
+ {
+ ERROR ("turbostat plugin: calloc failed");
+ sfree (threads);
+ return -1;
+ }
*packages = calloc(topology.num_packages, sizeof(struct pkg_data));
if (*packages == NULL)
- goto err_clean_cores;
+ {
+ ERROR ("turbostat plugin: calloc failed");
+ sfree (cores);
+ sfree (threads);
+ return -1;
+ }
return 0;
-
-err_clean_cores:
- free(*cores);
-err_clean_threads:
- free(*threads);
-err:
- ERROR("turbostat plugin: Failled to allocate memory for counters");
- return -1;
}
static void
}
if (euidaccess("/dev/cpu/0/msr", R_OK)) {
- WARNING("turbostat plugin: Collectd cannot open"
+ WARNING("turbostat plugin: Collectd cannot open "
"/dev/cpu/0/msr. If you don't want to run collectd as "
"root, you need to change the ownership (chown) and "
"permissions on /dev/cpu/*/msr to allow such access");
int ret;
if (stat("/dev/cpu/0/msr", &sb)) {
- ERROR("turbostat plugin: Initialization failed: /dev/cpu/0/msr"
- " does not exist while the CPU supports MSR. You may be "
+ ERROR("turbostat plugin: Initialization failed: /dev/cpu/0/msr "
+ "does not exist while the CPU supports MSR. You may be "
"missing the corresponding kernel module, please try '# "
"modprobe msr'");
return -1;