43 lines
1.1 KiB
C
43 lines
1.1 KiB
C
#include "resource_handler/resource_handler.h"
|
|
|
|
int extract_numbers(char* str, int* res) {
|
|
bool is_digit=false,last_digit=false;
|
|
int cur=0;
|
|
int begin=-1;
|
|
int* old_res=res;
|
|
bool go=true;
|
|
while(go) {
|
|
go=(*str)!=0;
|
|
is_digit = *str <= '9' && *str >= '0';
|
|
if(is_digit) {
|
|
cur *= 10;
|
|
cur += *str - '0';
|
|
}
|
|
else if(last_digit) {
|
|
if(*str == '-') {
|
|
begin = cur;
|
|
} else if(begin != -1) {
|
|
for(int core = begin; core <= cur; core++) {
|
|
*res = core;
|
|
res++;
|
|
}
|
|
begin = -1;
|
|
} else {
|
|
*res = cur;
|
|
res++;
|
|
begin = -1;
|
|
}
|
|
cur = 0;
|
|
}
|
|
str++;
|
|
last_digit = is_digit;
|
|
}
|
|
return res - old_res;
|
|
}
|
|
|
|
int get_isolated_cores(int** res) {
|
|
char buf[MAX_OPTION];
|
|
read(open("/sys/devices/system/cpu/isolated", O_RDONLY),buf,MAX_OPTION);
|
|
*res=malloc(sizeof(int)*MAX_CORES);
|
|
return extract_numbers(buf,*res);
|
|
}
|