[libgtop] When parsing /proc/cpuinfo, ignore paragraphs that do not describe a CPU/core.
- From: Benoît Dejean <bdejean src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgtop] When parsing /proc/cpuinfo, ignore paragraphs that do not describe a CPU/core.
- Date: Sat, 28 Jan 2017 08:53:02 +0000 (UTC)
commit 1a103bf142856ec129eb124d1dae70ddb3dd02e8
Author: Benoît Dejean <bdejean gmail com>
Date: Sat Jan 28 09:39:43 2017 +0100
When parsing /proc/cpuinfo, ignore paragraphs that do not describe a CPU/core.
sysdeps/linux/sysinfo.c | 20 ++++++++++++++------
1 files changed, 14 insertions(+), 6 deletions(-)
---
diff --git a/sysdeps/linux/sysinfo.c b/sysdeps/linux/sysinfo.c
index 99d8fcc..7dbd5ee 100644
--- a/sysdeps/linux/sysinfo.c
+++ b/sysdeps/linux/sysinfo.c
@@ -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);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]