static uint threads_per_core()  {
   uint result = 1;
   if (is_intel() && supports_processor_topology()) {
     result = _cpuid_info.tpl_cpuidB0_ebx.bits.logical_cpus;
   } else if (_cpuid_info.std_cpuid1_edx.bits.ht != 0) {
     result = _cpuid_info.std_cpuid1_ebx.bits.threads_per_cpu /
              cores_per_cpu();
   }
   return result;
 }
Ejemplo n.º 2
0
 static uint cores_per_cpu()  {
     uint result = 1;
     if (is_intel()) {
         if (supports_processor_topology()) {
             result = _cpuid_info.tpl_cpuidB1_ebx.bits.logical_cpus /
                      _cpuid_info.tpl_cpuidB0_ebx.bits.logical_cpus;
         } else {
             result = (_cpuid_info.dcp_cpuid4_eax.bits.cores_per_cpu + 1);
         }
     } else if (is_amd()) {
         result = (_cpuid_info.ext_cpuid8_ecx.bits.cores_per_cpu + 1);
     }
     return result;
 }