getProcessors static method
Get a List containing all cpu's cores in a Cpu
class
Implementation
static List<Cpu> getProcessors() {
var cpus = <Cpu>[];
var curCpu = 0;
var currentCpu = Cpu();
var lines = File('/proc/cpuinfo').readAsLinesSync();
for (var e in lines) {
var data = e.split(':');
if (data.isNotEmpty) {
data[0] = data[0].trim();
if (data[0] == 'processor' && curCpu > 0) {
cpus.add(currentCpu);
currentCpu = Cpu();
currentCpu.processor = int.parse(data[1]);
curCpu += 1;
}
switch (data[0]) {
case 'vendor_id':
{
currentCpu.vendor_id = data[1];
}
break;
case 'cpu family':
{
currentCpu.cpu_family = int.parse(data[1]);
}
break;
case 'model':
{
currentCpu.model = int.parse(data[1]);
}
break;
case 'model name':
{
currentCpu.model_name = data[1];
}
break;
case 'stepping':
{
currentCpu.stepping = int.parse(data[1]);
}
break;
case 'microcode':
{
currentCpu.microcode = int.parse(data[1]);
}
break;
case 'cpu MHz':
{
currentCpu.cpu_mhz = double.parse(data[1]);
}
break;
case 'cache size':
{
currentCpu.cache_size = data[1];
}
break;
case 'physical id':
{
currentCpu.physical_id = int.parse(data[1]);
}
break;
case 'siblings':
{
currentCpu.siblings = int.parse(data[1]);
}
break;
case 'core id':
{
currentCpu.core_id = int.parse(data[1]);
}
break;
case 'cpu cores':
{
currentCpu.cpu_cores = int.parse(data[1]);
}
break;
case 'apicid':
{
currentCpu.apicid = int.parse(data[1]);
}
break;
case 'initial apicid':
{
currentCpu.initial_apicid = int.parse(data[1]);
}
break;
case 'fpu':
{
currentCpu.fpu = data[1] == 'yes' ? true : false;
}
break;
case 'fpu_exception':
{
currentCpu.fpu_exception = data[1] == 'yes' ? true : false;
}
break;
case 'cpuid level':
{
currentCpu.cpuid_level = int.parse(data[1]);
}
break;
case 'wp':
{
currentCpu.wp = data[1] == 'yes' ? true : false;
}
break;
case 'flags':
{
currentCpu.flags = data[1].split(' ');
}
break;
case 'bogomips':
{
currentCpu.bogomips = double.parse(data[1]);
}
break;
case 'clflush size':
{
currentCpu.clflush_size = int.parse(data[1]);
}
break;
case 'cache_alignment':
{
currentCpu.cache_alignment = int.parse(data[1]);
}
break;
case 'address sizes':
{
currentCpu.address_sizes =
Tuple2(data[1].split(',')[0], data[1].split(',')[1]);
}
break;
}
if (curCpu == 0) {
curCpu += 1;
}
}
}
return cpus;
}