From: Jasper Lievisse Adriaanse Date: Fri, 27 Apr 2012 15:32:46 +0000 (+0200) Subject: Fix CPU usage on OpenBSD. Currently only takes the first cpu into account, but works... X-Git-Tag: 2.5~14 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=75a741484e10d98658968b80328d1e003e191599;p=i3%2Fi3status Fix CPU usage on OpenBSD. Currently only takes the first cpu into account, but works fine otherwise. --- diff --git a/src/print_cpu_usage.c b/src/print_cpu_usage.c index 7fdd11c..7113eae 100644 --- a/src/print_cpu_usage.c +++ b/src/print_cpu_usage.c @@ -6,7 +6,8 @@ #include #include -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) || defined(__OpenBSD__) +#include #include #include #include @@ -42,12 +43,26 @@ void print_cpu_usage(yajl_gen json_gen, char *buffer, const char *format) { diff_usage = (1000 * (diff_total - diff_idle)/diff_total + 5)/10; prev_total = curr_total; prev_idle = curr_idle; -#elif defined(__FreeBSD__) +#elif defined(__FreeBSD__) || defined(__OpenBSD__) + +#if defined(__FreeBSD__) size_t size; long cp_time[CPUSTATES]; size = sizeof cp_time; if (sysctlbyname("kern.cp_time", &cp_time, &size, NULL, 0) < 0) goto error; +#else + /* This information is taken from the boot cpu, any other cpus are currently ignored. */ + long cp_time[CPUSTATES]; + int mib[2]; + size_t size = sizeof(cp_time); + + mib[0] = CTL_KERN; + mib[1] = KERN_CPTIME; + + if (sysctl(mib, 2, cp_time, &size, NULL, 0)) + goto error; +#endif curr_user = cp_time[CP_USER]; curr_nice = cp_time[CP_NICE];