diff options
Diffstat (limited to 'tools/testing/selftests/bpf/bpf_util.h')
| -rw-r--r-- | tools/testing/selftests/bpf/bpf_util.h | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/tools/testing/selftests/bpf/bpf_util.h b/tools/testing/selftests/bpf/bpf_util.h index 315a44fa32af..84fd6f1bf33e 100644 --- a/tools/testing/selftests/bpf/bpf_util.h +++ b/tools/testing/selftests/bpf/bpf_util.h | |||
| @@ -13,7 +13,7 @@ static inline unsigned int bpf_num_possible_cpus(void) | |||
| 13 | unsigned int start, end, possible_cpus = 0; | 13 | unsigned int start, end, possible_cpus = 0; |
| 14 | char buff[128]; | 14 | char buff[128]; |
| 15 | FILE *fp; | 15 | FILE *fp; |
| 16 | int n; | 16 | int len, n, i, j = 0; |
| 17 | 17 | ||
| 18 | fp = fopen(fcpu, "r"); | 18 | fp = fopen(fcpu, "r"); |
| 19 | if (!fp) { | 19 | if (!fp) { |
| @@ -21,17 +21,27 @@ static inline unsigned int bpf_num_possible_cpus(void) | |||
| 21 | exit(1); | 21 | exit(1); |
| 22 | } | 22 | } |
| 23 | 23 | ||
| 24 | while (fgets(buff, sizeof(buff), fp)) { | 24 | if (!fgets(buff, sizeof(buff), fp)) { |
| 25 | n = sscanf(buff, "%u-%u", &start, &end); | 25 | printf("Failed to read %s!\n", fcpu); |
| 26 | if (n == 0) { | 26 | exit(1); |
| 27 | printf("Failed to retrieve # possible CPUs!\n"); | 27 | } |
| 28 | exit(1); | 28 | |
| 29 | } else if (n == 1) { | 29 | len = strlen(buff); |
| 30 | end = start; | 30 | for (i = 0; i <= len; i++) { |
| 31 | if (buff[i] == ',' || buff[i] == '\0') { | ||
| 32 | buff[i] = '\0'; | ||
| 33 | n = sscanf(&buff[j], "%u-%u", &start, &end); | ||
| 34 | if (n <= 0) { | ||
| 35 | printf("Failed to retrieve # possible CPUs!\n"); | ||
| 36 | exit(1); | ||
| 37 | } else if (n == 1) { | ||
| 38 | end = start; | ||
| 39 | } | ||
| 40 | possible_cpus += end - start + 1; | ||
| 41 | j = i + 1; | ||
| 31 | } | 42 | } |
| 32 | possible_cpus = start == 0 ? end + 1 : 0; | ||
| 33 | break; | ||
| 34 | } | 43 | } |
| 44 | |||
| 35 | fclose(fp); | 45 | fclose(fp); |
| 36 | 46 | ||
| 37 | return possible_cpus; | 47 | return possible_cpus; |
