use nprocs() function instead of /proc/cpuinfo
authorPeter Michael Green <plugwash@debian.org>
Tue, 7 May 2013 23:03:27 +0000 (23:03 +0000)
committerAndriy Grytsenko <andrej@rep.kiev.ua>
Mon, 15 Sep 2014 22:36:47 +0000 (01:36 +0300)
/proc/cpuinfo varies a lot between architectures leading to the code
identifying zero CPUs on some systems and hence ending up reporting a cpu
usage of -1

Author: Peter Michael Green <plugwash@debian.org>
Bug-Raspbian: https://bugs.launchpad.net/raspbian/+bug/1128012
Bug-Debian: http://bugs.debian.org/705506

src/xfce-taskmanager-linux.c

index 79ffe5f..0680971 100644 (file)
@@ -28,7 +28,7 @@
 #include <glib/gi18n.h>
 #include <glib/gprintf.h>
 #include "xfce-taskmanager-linux.h"
-
+#include <sys/sysinfo.h>
 
 void get_task_details(pid_t pid,struct task *task)
 {
@@ -276,18 +276,7 @@ gboolean get_system_status (system_status *sys_stat)
 
     if(!cpu_count)
     {
-        file = fopen ("/proc/cpuinfo", "r");
-        if(!file) return FALSE;
-        while (fgets (buffer, 100, file) != NULL)
-        {
-            if(buffer[0]!='p') continue;
-            if(!strncmp(buffer,"processor",9))
-            {
-                cpu_count++;
-            }
-        }
-        fclose (file);
-        if(!cpu_count) cpu_count++; /* cpu_count should be at least 1 */
+        cpu_count=get_nprocs();
     }
     sys_stat->cpu_count=cpu_count;
     return TRUE;