From a0c01caaca8fba6d0f9e577af2f0323a02b3d5b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=B6ller?= Date: Tue, 2 Feb 2010 21:58:54 +0000 Subject: [PATCH] Release version 0.1.10. Changed core count for Intel Core i5/i7 CPUs. Added CpuidEx function. --- External/WinRing0.dll | Bin 65536 -> 55296 bytes External/WinRing0x64.dll | Bin 57856 -> 58368 bytes Hardware/CPU/AMD10CPU.cs | 4 +++- Hardware/CPU/IntelCPU.cs | 29 +++++++++++++++++++---------- Hardware/WinRing0.cs | 11 +++++++---- Properties/AssemblyInfo.cs | 4 ++-- 6 files changed, 31 insertions(+), 17 deletions(-) diff --git a/External/WinRing0.dll b/External/WinRing0.dll index 9ea86ea0be70da76db96e3eb19ed27a540251ad7..beaf2b0f38db28d20e4a3400f34832bf470429a0 100644 GIT binary patch literal 55296 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 diff --git a/External/WinRing0x64.dll b/External/WinRing0x64.dll index 51dbd48b769c249152ecdeef1c579c8b422a8010..27fd92a4a11deecf05bd26ffac32737653c5d687 100644 GIT binary patch delta 10690 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 1 ? " #1 - #" + coreCount : ""), 0, + SensorType.Temperature, this); pciAddress = WinRing0.FindPciDeviceById(PCI_AMD_VENDOR_ID, PCI_AMD_10H_MISCELLANEOUS_DEVICE_ID, 0); diff --git a/Hardware/CPU/IntelCPU.cs b/Hardware/CPU/IntelCPU.cs index fd2b0a1..047d90f 100644 --- a/Hardware/CPU/IntelCPU.cs +++ b/Hardware/CPU/IntelCPU.cs @@ -50,7 +50,9 @@ namespace OpenHardwareMonitor.Hardware.CPU { private Sensor[] coreTemperatures; private float tjMax = 0; + private uint logicalProcessors; private uint logicalProcessorsPerCore; + private uint coreCount; private const uint IA32_THERM_STATUS_MSR = 0x019C; private const uint IA32_TEMPERATURE_TARGET = 0x01A2; @@ -60,18 +62,23 @@ namespace OpenHardwareMonitor.Hardware.CPU { this.name = name; this.icon = Utilities.EmbeddedResources.GetImage("cpu.png"); - - uint logicalProcessors = 1; - if (cpuidData.GetLength(0) > 0x04) - logicalProcessors = ((cpuidData[4, 0] >> 26) & 0x3F) + 1; - + logicalProcessorsPerCore = 1; - if (cpuidData.GetLength(0) > 0x0B) - logicalProcessorsPerCore = cpuidData[0x0B, 1] & 0xFF; - if (logicalProcessorsPerCore == 0) + if (cpuidData.GetLength(0) > 0x0B) { + uint eax, ebx, ecx, edx; + WinRing0.CpuidEx(0x0B, 0, out eax, out ebx, out ecx, out edx); + logicalProcessorsPerCore = ebx & 0xFF; + WinRing0.CpuidEx(0x0B, 1, out eax, out ebx, out ecx, out edx); + logicalProcessors = ebx & 0xFF; + } else if (cpuidData.GetLength(0) > 0x04) { + logicalProcessors = ((cpuidData[4, 0] >> 26) & 0x3F) + 1; logicalProcessorsPerCore = 1; + } else { + logicalProcessors = 1; + logicalProcessorsPerCore = 1; + } - uint coreCount = logicalProcessors / logicalProcessorsPerCore; + coreCount = logicalProcessors / logicalProcessorsPerCore; switch (family) { case 0x06: { @@ -147,7 +154,9 @@ namespace OpenHardwareMonitor.Hardware.CPU { r.AppendLine("Intel CPU"); r.AppendLine(); r.AppendFormat("Name: {0}{1}", name, Environment.NewLine); - r.AppendFormat("Number of cores: {0}{1}", coreTemperatures.Length, + r.AppendFormat("Number of cores: {0}{1}", coreCount, + Environment.NewLine); + r.AppendFormat("Threads per core: {0}{1}", logicalProcessorsPerCore, Environment.NewLine); r.AppendFormat("TjMax: {0}{1}", tjMax, Environment.NewLine); r.AppendLine(); diff --git a/Hardware/WinRing0.cs b/Hardware/WinRing0.cs index a7216e9..ac0ccf1 100644 --- a/Hardware/WinRing0.cs +++ b/Hardware/WinRing0.cs @@ -79,8 +79,10 @@ namespace OpenHardwareMonitor.Hardware { public delegate uint GetDllStatusDelegate(); public delegate bool IsCpuidDelegate(); - public delegate bool CpuidDelegate(uint index, out uint eax, out uint ebx, - out uint ecx, out uint edx); + public delegate bool CpuidDelegate(uint index, + out uint eax, out uint ebx, out uint ecx, out uint edx); + public delegate bool CpuidExDelegate(uint index, uint ecxValue, + out uint eax, out uint ebx, out uint ecx, out uint edx); public delegate bool RdmsrPxDelegate(uint index, ref uint eax, ref uint edx, UIntPtr processAffinityMask); public delegate byte ReadIoPortByteDelegate(ushort port); @@ -99,14 +101,14 @@ namespace OpenHardwareMonitor.Hardware { public static GetDllStatusDelegate GetDllStatus; public static IsCpuidDelegate IsCpuid; public static CpuidDelegate Cpuid; + public static CpuidExDelegate CpuidEx; public static RdmsrPxDelegate RdmsrPx; public static ReadIoPortByteDelegate ReadIoPortByte; public static WriteIoPortByteDelegate WriteIoPortByte; public static SetPciMaxBusIndexDelegate SetPciMaxBusIndex; public static FindPciDeviceByIdDelegate FindPciDeviceById; public static ReadPciConfigDwordExDelegate ReadPciConfigDwordEx; - public static WritePciConfigDwordExDelegate WritePciConfigDwordEx; - + public static WritePciConfigDwordExDelegate WritePciConfigDwordEx; private static void GetDelegate(string entryPoint, out T newDelegate) where T : class @@ -125,6 +127,7 @@ namespace OpenHardwareMonitor.Hardware { GetDelegate("GetDllStatus", out GetDllStatus); GetDelegate("IsCpuid", out IsCpuid); GetDelegate("Cpuid", out Cpuid); + GetDelegate("CpuidEx", out CpuidEx); GetDelegate("RdmsrPx", out RdmsrPx); GetDelegate("ReadIoPortByte", out ReadIoPortByte); GetDelegate("WriteIoPortByte", out WriteIoPortByte); diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs index 3595b89..f4e485d 100644 --- a/Properties/AssemblyInfo.cs +++ b/Properties/AssemblyInfo.cs @@ -69,5 +69,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("0.1.9.0")] -[assembly: AssemblyFileVersion("0.1.9.0")] +[assembly: AssemblyVersion("0.1.10.0")] +[assembly: AssemblyFileVersion("0.1.10.0")]