http://bugs.winehq.org/show_bug.cgi?id=7766
------- Additional Comments From focht@gmx.net 2007-16-03 16:53 ------- Hello,
by looking at wine GetSystemInfo() implementation (dlls\kernel32\cpu.c) it seems the "dwActiveProcessorMask" isnt retrieved on "linux" platform at all. The "apple" platform code used following code:
--- snip --- if (sysctlbyname ("hw.activecpu", &value, &valSize, NULL, 0) == 0) cachedsi.dwActiveProcessorMask = value; --- snip ---
Maybe there is no easy linux way to do this? Instead the default "dwActiveProcessorMask = 1" is returned.
Windows has KeActiveProcessors field (kernel) which is bit set for each usable processor on the system The list of *active* processor entries/nodes is walked and each processor id bit get or'ed into bit field, basically: loop with KeActiveProcessors |= 1 << Id; Thats how "dwActiveProcessorMask" is basically determined there.
Looking at my linux box (intel core duo2) it seems there is processor topology information in "/proc/cpuinfo".
"processor" "vendor id" "physical id" "siblings" "core id" "cpu cores" ... and the like
Its seems possible to determine all active physical and logical processors/cores using this info and building processors mask (bit field). But it seems this stuff is pretty new and older linux does not have all of these fields (in /proc/cpuinfo).
Regards