library: bug fix if libnuma.so unavailable, <STAT> api
All our numa logic was well encapsulated under #ifndef NUMA_DISABLE (as ./configure --disable-numa), with the exception of 1 case label. The reason it didn't create any problems is because the sole consumer (top) itself responded to the presence of #define NUMA_DISABLE too. But if that option wasn't used, an oops still awaited. When experimenting with a 32-bit library plus a 64-bit kernel, a bug was revealed should the numa library not have been found. Our 'reap' function must tolerate the potential of a 0 return from that stacks_fetch_tics(). Now, if numa is desired but not possible, we'll be ok. [ and, we'll build numa history from fresher sources ] Signed-off-by: Jim Warner <james.warner@comcast.net>
This commit is contained in:
parent
5a244c1095
commit
dea4033418
@ -751,6 +751,7 @@ static int stacks_fetch_tics (
|
||||
this->result.stacks = this->anchor;
|
||||
this->fetch.dirty_stacks = 1;
|
||||
|
||||
// callers beware, this might be zero (maybe no libnuma.so) ...
|
||||
return this->result.total;
|
||||
} // end: stacks_fetch_tics
|
||||
|
||||
@ -1029,12 +1030,14 @@ PROCPS_EXPORT struct stat_reaped *procps_stat_reap (
|
||||
return NULL;
|
||||
break;
|
||||
case STAT_REAP_CPUS_AND_NODES:
|
||||
if (0 > make_numa_hist(info))
|
||||
return NULL;
|
||||
if (!stacks_fetch_tics(info, &info->cpus))
|
||||
return NULL;
|
||||
if (!stacks_fetch_tics(info, &info->nodes))
|
||||
#ifndef NUMA_DISABLE
|
||||
if (0 > make_numa_hist(info))
|
||||
return NULL;
|
||||
// tolerate an unexpected absence of libnuma.so ...
|
||||
stacks_fetch_tics(info, &info->nodes);
|
||||
#endif
|
||||
break;
|
||||
default:
|
||||
return NULL;
|
||||
|
Loading…
Reference in New Issue
Block a user