tools: bpftool: move get_possible_cpus() to common code
Move the get_possible_cpus() function to shared code. No functional changes. Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Reviewed-by: Quentin Monnet <quentin.monnet@netronome.com> Reviewed-by: Jiong Wang <jiong.wang@netronome.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
This commit is contained in:

committed by
Daniel Borkmann

parent
c642ea2654
commit
e64d52569f
@@ -34,7 +34,6 @@
|
||||
/* Author: Jakub Kicinski <kubakici@wp.pl> */
|
||||
|
||||
#include <assert.h>
|
||||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <stdbool.h>
|
||||
@@ -69,61 +68,6 @@ static const char * const map_type_name[] = {
|
||||
[BPF_MAP_TYPE_CPUMAP] = "cpumap",
|
||||
};
|
||||
|
||||
static unsigned int get_possible_cpus(void)
|
||||
{
|
||||
static unsigned int result;
|
||||
char buf[128];
|
||||
long int n;
|
||||
char *ptr;
|
||||
int fd;
|
||||
|
||||
if (result)
|
||||
return result;
|
||||
|
||||
fd = open("/sys/devices/system/cpu/possible", O_RDONLY);
|
||||
if (fd < 0) {
|
||||
p_err("can't open sysfs possible cpus");
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
n = read(fd, buf, sizeof(buf));
|
||||
if (n < 2) {
|
||||
p_err("can't read sysfs possible cpus");
|
||||
exit(-1);
|
||||
}
|
||||
close(fd);
|
||||
|
||||
if (n == sizeof(buf)) {
|
||||
p_err("read sysfs possible cpus overflow");
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
ptr = buf;
|
||||
n = 0;
|
||||
while (*ptr && *ptr != '\n') {
|
||||
unsigned int a, b;
|
||||
|
||||
if (sscanf(ptr, "%u-%u", &a, &b) == 2) {
|
||||
n += b - a + 1;
|
||||
|
||||
ptr = strchr(ptr, '-') + 1;
|
||||
} else if (sscanf(ptr, "%u", &a) == 1) {
|
||||
n++;
|
||||
} else {
|
||||
assert(0);
|
||||
}
|
||||
|
||||
while (isdigit(*ptr))
|
||||
ptr++;
|
||||
if (*ptr == ',')
|
||||
ptr++;
|
||||
}
|
||||
|
||||
result = n;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
static bool map_is_per_cpu(__u32 type)
|
||||
{
|
||||
return type == BPF_MAP_TYPE_PERCPU_HASH ||
|
||||
|
Reference in New Issue
Block a user