/cpuid-topo

Intel's CPU Topology Tool

Primary LanguageC

This repo was initialized from source made available here:
https://software.intel.com/en-us/articles/intel-64-architecture-processor-topology-enumeration/

--
Copyright (c) 2009-2016, Intel Corp.	All rights reserved.

1. Overview

Topology Enumeration Reference code for Intel 64 Architecture has been updated. It includes
Enhancement to use APIs supporting more than 64 logical processors under Windows*
Operating system. Support for Linux* Operating system remains the same with minor improvement.
Several coding issues have been corrected.


2. Enhancement to enumerate topology for systems with more than 64 logical processors.
   a. 	If compiled under Windows* Platform SDK 7.0a or later, GROUP_AFFINITY API is supported.
	For detailed information on GROUP_AFFINITY, consult Windows* Platform SDK 7.0a documentation.
   b. 	If compiled under Windows* Platform SDK version prior to 7.0a, topology enumeration
	under Windows is restricted to the active processor group, using legacy Win32 API.

3. Change Summary 2009
   a. mk_64.bat 		Compiler define "x86_64" is required
   b. cputopology.h::L73-79	Const define
   c. cpu_topo.c::L64-70	defines 64-bit data type and const, "LNX_PTR2INT" and
				"LNX_MY1CON"
   d. cpu_topo.c::L162		fixed previous coding error of counting only lower 32 bits
				wnen in 64-bit Windows* OS.
   e. cpu_topo.c::L462-523	adds a formatting routine to handle long
				generic affinity mask conversion to stdout without truncation
				error (when generic mask > 64 bits).
   f. cpu_topo.c::L2075-2117	Re-plumb stdout formatting utility to accommodate long
				generic affinity mask.
   g. cpu_topo.c::L2614-2619	Abort with error code if topology enumeration encountered
				system configuration error.
   h. util_os.c::L24-32		Improves handling of distro-specific name space of Linux macro
   i. util_os.c::L41-47		defines 64-bit data type and const
   j. util_os.c::L72		scratch space declaration
   k. util_os.c::L117-185	Modifed "BindContext(cpu_num)" that resolves at runtime whether
				GROUP_AFFINITY API are available. If new Windows SDK 7.0a APIs
				are available, bind the current thread to the target processor
				group and target affinity mask bit corresponding to "cpu_num"
   l. util_os.c::L206-226	Use new Windows SDK 7.0a APIs if available
   m. util_os.c::L266-386	Use new Windows SDK 7.0a APIs if available. Encode error code
				if unable to resolve consistency issues between OS returned
				ThreadGroupAffinityMask and our OS-independent generic mask.
4. Change Summary 2014
   a. All source files		Updates to permit BSD license terms
   b. cputopology.h::L110	Updates Const define to provide headroom for growth of
				leaf functions and sub-leaves
   c. cpu_topo.c::various	Harmonize variable type and casts used in strlen and loop iteration
   d. cpu_topo.c::printCPUIDInfo
				Print to screen of EAX/EBX/ECX/EDX hex dump of specified CPUID leaf.
				If specified leaf contain sub-leaves, print sub-leaf 1 and above
				with indentation.
   d. cpu_topo.c::L2695
				Adds screen dump of known CPUID leaf functions per published CPUID
				reference pages of SDM.
5. Change Summary 2016
   a. util_os.c::L247-264	fixed Windows API usage error when there are two or more processor groups populated.
   b. cpu_topo.c::L2517		updated printCPUIDInfo() interface and implementation to query additional CPUID leaf functions.
   c. cpu_topo.c::L2714-2750		Revised to invoke updated printCPUIDInfo() interface and dump additional CPUID leaf data.


*Other names and brands may be claimed as properties of others.