summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 917d7fa)
raw | patch | inline | side by side (parent: 917d7fa)
author | Doug MacEachern <dougm@hyperic.com> | |
Fri, 25 Sep 2009 20:03:41 +0000 (13:03 -0700) | ||
committer | Doug MacEachern <dougm@hyperic.com> | |
Fri, 25 Sep 2009 20:03:41 +0000 (13:03 -0700) |
src/cpu.c | patch | blob | history |
diff --git a/src/cpu.c b/src/cpu.c
index dc44a50ff5f71b732ae69a4be9ba64401b09d7e7..c4bd1a6d8459d7e3acb8c622734deadf784270f7 100644 (file)
--- a/src/cpu.c
+++ b/src/cpu.c
return (-1);
}
+#ifndef HAVE_SYSCTL_KERN_CP_TIMES
if (numcpu != 1)
NOTICE ("cpu: Only one processor supported when using `sysctlbyname' (found %i)", numcpu);
+#endif
/* #endif HAVE_SYSCTLBYNAME */
#elif defined(HAVE_LIBSTATGRAB)
submit (i, "interrupt", cpuinfo[i][CP_INTR]);
}
/* #endif CAN_USE_SYSCTL */
+#elif defined(HAVE_SYSCTLBYNAME) && defined(HAVE_SYSCTL_KERN_CP_TIMES)
+ long cpuinfo[numcpu][CPUSTATES];
+ size_t cpuinfo_size;
+ int i;
+
+ memset (cpuinfo, 0, sizeof (cpuinfo));
+
+ cpuinfo_size = sizeof (cpuinfo);
+ if (sysctlbyname("kern.cp_times", &cpuinfo, &cpuinfo_size, NULL, 0) < 0)
+ {
+ char errbuf[1024];
+ ERROR ("cpu plugin: sysctlbyname failed: %s.",
+ sstrerror (errno, errbuf, sizeof (errbuf)));
+ return (-1);
+ }
+ for (i = 0; i < numcpu; i++) {
+ submit (i, "user", cpuinfo[i][CP_USER]);
+ submit (i, "nice", cpuinfo[i][CP_NICE]);
+ submit (i, "system", cpuinfo[i][CP_SYS]);
+ submit (i, "idle", cpuinfo[i][CP_IDLE]);
+ submit (i, "interrupt", cpuinfo[i][CP_INTR]);
+ }
+/* #endif HAVE_SYSCTL_KERN_CP_TIMES */
#elif defined(HAVE_SYSCTLBYNAME)
long cpuinfo[CPUSTATES];
size_t cpuinfo_size;