From 11bacf17089e207dd043d4a974f0d8c8529543b0 Mon Sep 17 00:00:00 2001 From: Mike Massonnet Date: Thu, 1 Jul 2010 11:29:43 +0200 Subject: [PATCH] Fix FreeBSD code --- panel-plugin/os.c | 29 +++++++++++++++-------------- 1 files changed, 15 insertions(+), 14 deletions(-) diff --git a/panel-plugin/os.c b/panel-plugin/os.c index 125db97..317b56e 100644 --- a/panel-plugin/os.c +++ b/panel-plugin/os.c @@ -105,36 +105,37 @@ gboolean read_cpu_data( CpuData *data, guint nb_cpu ) #elif defined (__FreeBSD__) guint detect_cpu_number() { - return 1; + gushort count; + size_t len = sizeof( count ); + sysctlbyname( "hw.ncpu", &count, &len, NULL, 0 ); + return count; } gboolean read_cpu_data( CpuData *data, guint nb_cpu) { - guint user, nice, sys, bsdidle, idle; + gint i; guint used, total; - gint cp_time[CPUSTATES]; + gint cp_time[CPUSTATES] = { 0 }; gsize len = sizeof( cp_time ); - guint usage; - if( sysctlbyname( "kern.cp_time", &cp_time, &len, NULL, 0 ) < 0 ) { - return FALSE1; + return FALSE; } - user = cp_time[CP_USER]; - nice = cp_time[CP_NICE]; - sys = cp_time[CP_SYS]; - bsdidle = cp_time[CP_IDLE]; - idle = cp_time[CP_IDLE]; + used = cp_time[CP_USER] + cp_time[CP_NICE] + cp_time[CP_SYS] + cp_time[CP_INTR]; + total = used + cp_time[CP_IDLE]; - used = user+nice+sys; - total = used+bsdidle; if( (total - data[0].previous_total) != 0 ) - data[0].load = (CPU_SCALE * (used - data[0].previous_total))/(total - data[0].previous_total); + data[0].load = (used - data[0].previous_used) * 100 / (gdouble)(total - data[0].previous_total); else data[0].load = 0; + for ( i = 1; i <= nb_cpu; i++ ) + { + data[i].load = data[0].load / nb_cpu; + } + data[0].previous_used = used; data[0].previous_total = total; -- 1.6.4.3