summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: b78ed0c)
raw | patch | inline | side by side (parent: b78ed0c)
author | Florian Forster <octo@collectd.org> | |
Mon, 30 Nov 2015 12:31:49 +0000 (13:31 +0100) | ||
committer | Florian Forster <octo@collectd.org> | |
Mon, 30 Nov 2015 12:31:49 +0000 (13:31 +0100) |
Issue: #22
src/cpu.c | patch | blob | history |
diff --git a/src/cpu.c b/src/cpu.c
index 6753397c0ca121fdf62c08b37859c0ca71cb6492..461a6e1bca64e653be62122cfb7c459b5a54228e 100644 (file)
--- a/src/cpu.c
+++ b/src/cpu.c
port_host = mach_host_self ();
- /* FIXME: Free `cpu_list' if it's not NULL */
- if ((status = host_processors (port_host, &cpu_list, &cpu_list_len)) != KERN_SUCCESS)
+ status = host_processors (port_host, &cpu_list, &cpu_list_len);
+ if (status == KERN_INVALID_ARGUMENT)
{
- ERROR ("cpu plugin: host_processors returned %i", (int) status);
+ ERROR ("cpu plugin: Don't have a privileged host control port. "
+ "The most common cause for this problem is "
+ "that collectd is running without root "
+ "privileges, which are required to read CPU "
+ "load information. "
+ "<https://collectd.org/bugs/22>");
+ cpu_list_len = 0;
+ return (-1);
+ }
+ if (status != KERN_SUCCESS)
+ {
+ ERROR ("cpu plugin: host_processors() failed with status %d.", (int) status);
cpu_list_len = 0;
return (-1);
}
- DEBUG ("host_processors returned %i %s", (int) cpu_list_len, cpu_list_len == 1 ? "processor" : "processors");
INFO ("cpu plugin: Found %i processor%s.", (int) cpu_list_len, cpu_list_len == 1 ? "" : "s");
/* #endif PROCESSOR_CPU_LOAD_INFO */
int cpu;
kern_return_t status;
-
+
processor_cpu_load_info_data_t cpu_info;
mach_msg_type_number_t cpu_info_len;
sstrerror (errno, errbuf, sizeof (errbuf)));
return (-1);
}
-
- if (pnumcpu != numcpu || perfcpu == NULL)
+
+ if (pnumcpu != numcpu || perfcpu == NULL)
{
- if (perfcpu != NULL)
+ if (perfcpu != NULL)
free(perfcpu);
perfcpu = malloc(numcpu * sizeof(perfstat_cpu_t));
}
return (-1);
}
- for (i = 0; i < cpus; i++)
+ for (i = 0; i < cpus; i++)
{
submit (i, "idle", (derive_t) perfcpu[i].idle);
submit (i, "system", (derive_t) perfcpu[i].sys);