When parsing /proc/cpuinfo, ignore paragraphs that do not describe a CPU/core.
This commit is contained in:
@@ -50,13 +50,20 @@ init_sysinfo (glibtop *server)
|
||||
|
||||
g_free(buffer);
|
||||
|
||||
for(sysinfo.ncpu = 0;
|
||||
sysinfo.ncpu < GLIBTOP_NCPU && processors[sysinfo.ncpu] && *processors[sysinfo.ncpu];
|
||||
sysinfo.ncpu++) {
|
||||
sysinfo.ncpu = 0;
|
||||
for (char** this_proc = &processors[0]; *this_proc && **this_proc; this_proc++) {
|
||||
|
||||
if (sysinfo.ncpu >= GLIBTOP_NCPU) {
|
||||
glibtop_warn_r(server, "Cannot deal with more than %d CPUs", GLIBTOP_NCPU);
|
||||
break;
|
||||
}
|
||||
|
||||
gchar **parts, **p;
|
||||
if (g_strrstr (processors[sysinfo.ncpu], "processor" ) == NULL)
|
||||
continue;
|
||||
if (g_strrstr (*this_proc, "processor" ) == NULL) {
|
||||
/* skip unknown paragraph */
|
||||
continue;
|
||||
}
|
||||
|
||||
glibtop_entry * const cpuinfo = &sysinfo.cpuinfo[sysinfo.ncpu];
|
||||
|
||||
cpuinfo->labels = g_ptr_array_new ();
|
||||
@@ -68,7 +75,7 @@ init_sysinfo (glibtop *server)
|
||||
g_free, g_free);
|
||||
|
||||
/* "<key> : <value>" */
|
||||
parts = g_strsplit_set(processors[sysinfo.ncpu], ":\n", 0);
|
||||
parts = g_strsplit_set(*this_proc, ":\n", 0);
|
||||
|
||||
for(p = parts; *p && *(p+1); p += 2) {
|
||||
|
||||
@@ -89,6 +96,7 @@ init_sysinfo (glibtop *server)
|
||||
|
||||
g_free(parts);
|
||||
|
||||
sysinfo.ncpu++;
|
||||
}
|
||||
|
||||
g_strfreev(processors);
|
||||
|
Reference in New Issue
Block a user