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);
|
g_free(buffer);
|
||||||
|
|
||||||
for(sysinfo.ncpu = 0;
|
sysinfo.ncpu = 0;
|
||||||
sysinfo.ncpu < GLIBTOP_NCPU && processors[sysinfo.ncpu] && *processors[sysinfo.ncpu];
|
for (char** this_proc = &processors[0]; *this_proc && **this_proc; this_proc++) {
|
||||||
sysinfo.ncpu++) {
|
|
||||||
|
if (sysinfo.ncpu >= GLIBTOP_NCPU) {
|
||||||
|
glibtop_warn_r(server, "Cannot deal with more than %d CPUs", GLIBTOP_NCPU);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
gchar **parts, **p;
|
gchar **parts, **p;
|
||||||
if (g_strrstr (processors[sysinfo.ncpu], "processor" ) == NULL)
|
if (g_strrstr (*this_proc, "processor" ) == NULL) {
|
||||||
continue;
|
/* skip unknown paragraph */
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
glibtop_entry * const cpuinfo = &sysinfo.cpuinfo[sysinfo.ncpu];
|
glibtop_entry * const cpuinfo = &sysinfo.cpuinfo[sysinfo.ncpu];
|
||||||
|
|
||||||
cpuinfo->labels = g_ptr_array_new ();
|
cpuinfo->labels = g_ptr_array_new ();
|
||||||
@@ -68,7 +75,7 @@ init_sysinfo (glibtop *server)
|
|||||||
g_free, g_free);
|
g_free, g_free);
|
||||||
|
|
||||||
/* "<key> : <value>" */
|
/* "<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) {
|
for(p = parts; *p && *(p+1); p += 2) {
|
||||||
|
|
||||||
@@ -89,6 +96,7 @@ init_sysinfo (glibtop *server)
|
|||||||
|
|
||||||
g_free(parts);
|
g_free(parts);
|
||||||
|
|
||||||
|
sysinfo.ncpu++;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_strfreev(processors);
|
g_strfreev(processors);
|
||||||
|
Reference in New Issue
Block a user