From b1916e0a339e41396f7e10c14ac460d75a8fb366 Mon Sep 17 00:00:00 2001 From: Adrien Destugues <pulkomandy@pulkomandy.tk> Date: Mon, 3 Mar 2014 12:08:54 +0100 Subject: [PATCH] SystemInformation: Update CPU count code for Haiku The Haiku API for this was recently changed, to allow more than 8 CPU cores. Change-Id: Ia5e0d733cdfabaeffdb7707045f6635734ddac2e --- SystemInformation.cxx | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/SystemInformation.cxx b/SystemInformation.cxx index 5f20853f..9c263802 100644 --- a/SystemInformation.cxx +++ b/SystemInformation.cxx @@ -4698,11 +4698,28 @@ bool SystemInformationImplementation::QueryHaikuInfo() { #if defined(__HAIKU__) + // CPU count system_info info; get_system_info(&info); - this->NumberOfPhysicalCPU = info.cpu_count; - this->CPUSpeedInMHz = info.cpu_clock_speed / 1000000.0F; + + // CPU speed + uint32 topologyNodeCount = 0; + cpu_topology_node_info* topology = 0; + get_cpu_topology_info(0, &topologyNodeCount); + if (topologyNodeCount != 0) + topology = new cpu_topology_node_info[topologyNodeCount]; + get_cpu_topology_info(topology, &topologyNodeCount); + + for (uint32 i = 0; i < topologyNodeCount; i++) { + if (topology[i].type == B_TOPOLOGY_CORE) { + this->CPUSpeedInMHz = topology[i].data.core.default_frequency / + 1000000.0f; + break; + } + } + + delete[] topology; // Physical Memory this->TotalPhysicalMemory = (info.max_pages * B_PAGE_SIZE) / (1024 * 1024) ; -- GitLab