diff --git a/src/arm/udev.c b/src/arm/udev.c index 21a07c9..2346ebf 100644 --- a/src/arm/udev.c +++ b/src/arm/udev.c @@ -18,34 +18,42 @@ int get_ncores_from_cpuinfo() { // Examples: // 0-271 - // 0-5 // 0-7 - /* + // 0 + int filelen; char* buf; if((buf = read_file(_PATH_CPUS_PRESENT, &filelen)) == NULL) { perror("open"); - return UNKNOWN; + return UNKNOWN; + } + + int ncores; + char* tmp1; + if((tmp1 = strstr(buf, "-")) == NULL) { + // file contains no - character, we assume that it contains 0, + // which means that the CPU contains only one core + return 1; + } + else { + tmp1++; } - - int ncores = 0; - char* tmp1 = strstr(buf, "-") + 1; char* tmp2 = strstr(buf, "\n"); char ncores_str[filelen]; memset(ncores_str, 0, sizeof(char) * filelen); memcpy(ncores_str, tmp1, tmp2-tmp1); - + char* end; errno = 0; - ncores = strtol(ncores_str, &end, 10) + 1; + ncores = strtol(ncores_str, &end, 10) + 1; if(errno != 0) { perror("strtol"); return UNKNOWN; } - free(buf);*/ + free(buf); - return 1; + return ncores; } long parse_cpuinfo_field(char* buf, char* field_str, int field_base) {