@@ -4825,6 +4825,161 @@ RegisterEventSourceW (
48254825#define RegisterEventSource RegisterEventSourceA
48264826#endif // !UNICODE
48274827
4828+ //
4829+ // NUMA related APIs
4830+ //
4831+
4832+ typedef enum _PROCESSOR_CACHE_TYPE {
4833+ CacheUnified ,
4834+ CacheInstruction ,
4835+ CacheData ,
4836+ CacheTrace
4837+ } PROCESSOR_CACHE_TYPE ;
4838+
4839+ typedef struct _PROCESSOR_NUMBER {
4840+ WORD Group ;
4841+ BYTE Number ;
4842+ BYTE Reserved ;
4843+ } PROCESSOR_NUMBER , * PPROCESSOR_NUMBER ;
4844+
4845+ typedef enum _LOGICAL_PROCESSOR_RELATIONSHIP {
4846+ RelationProcessorCore ,
4847+ RelationNumaNode ,
4848+ RelationCache ,
4849+ RelationProcessorPackage ,
4850+ RelationGroup ,
4851+ RelationAll = 0xffff
4852+ } LOGICAL_PROCESSOR_RELATIONSHIP ;
4853+
4854+ typedef ULONG_PTR KAFFINITY ;
4855+
4856+ #define ANYSIZE_ARRAY 1
4857+
4858+ typedef struct _GROUP_AFFINITY {
4859+ KAFFINITY Mask ;
4860+ WORD Group ;
4861+ WORD Reserved [3 ];
4862+ } GROUP_AFFINITY , * PGROUP_AFFINITY ;
4863+
4864+ typedef struct _PROCESSOR_GROUP_INFO {
4865+ BYTE MaximumProcessorCount ;
4866+ BYTE ActiveProcessorCount ;
4867+ BYTE Reserved [38 ];
4868+ KAFFINITY ActiveProcessorMask ;
4869+ } PROCESSOR_GROUP_INFO , * PPROCESSOR_GROUP_INFO ;
4870+
4871+ typedef struct _PROCESSOR_RELATIONSHIP {
4872+ BYTE Flags ;
4873+ BYTE EfficiencyClass ;
4874+ BYTE Reserved [21 ];
4875+ WORD GroupCount ;
4876+ GROUP_AFFINITY GroupMask [ANYSIZE_ARRAY ];
4877+ } PROCESSOR_RELATIONSHIP , * PPROCESSOR_RELATIONSHIP ;
4878+
4879+ typedef struct _GROUP_RELATIONSHIP {
4880+ WORD MaximumGroupCount ;
4881+ WORD ActiveGroupCount ;
4882+ BYTE Reserved [20 ];
4883+ PROCESSOR_GROUP_INFO GroupInfo [ANYSIZE_ARRAY ];
4884+ } GROUP_RELATIONSHIP , * PGROUP_RELATIONSHIP ;
4885+
4886+ typedef struct _NUMA_NODE_RELATIONSHIP {
4887+ DWORD NodeNumber ;
4888+ BYTE Reserved [20 ];
4889+ GROUP_AFFINITY GroupMask ;
4890+ } NUMA_NODE_RELATIONSHIP , * PNUMA_NODE_RELATIONSHIP ;
4891+
4892+ typedef struct _CACHE_RELATIONSHIP {
4893+ BYTE Level ;
4894+ BYTE Associativity ;
4895+ WORD LineSize ;
4896+ DWORD CacheSize ;
4897+ PROCESSOR_CACHE_TYPE Type ;
4898+ BYTE Reserved [20 ];
4899+ GROUP_AFFINITY GroupMask ;
4900+ } CACHE_RELATIONSHIP , * PCACHE_RELATIONSHIP ;
4901+
4902+ typedef struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX {
4903+ LOGICAL_PROCESSOR_RELATIONSHIP Relationship ;
4904+ DWORD Size ;
4905+ union {
4906+ PROCESSOR_RELATIONSHIP Processor ;
4907+ NUMA_NODE_RELATIONSHIP NumaNode ;
4908+ CACHE_RELATIONSHIP Cache ;
4909+ GROUP_RELATIONSHIP Group ;
4910+ };
4911+ } SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX , * PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX ;
4912+
4913+
4914+ PALIMPORT
4915+ BOOL
4916+ PALAPI
4917+ GetNumaHighestNodeNumber (
4918+ OUT PULONG HighestNodeNumber
4919+ );
4920+
4921+ PALIMPORT
4922+ BOOL
4923+ PALAPI
4924+ GetNumaProcessorNodeEx (
4925+ IN PPROCESSOR_NUMBER Processor ,
4926+ OUT PUSHORT NodeNumber
4927+ );
4928+
4929+ PALIMPORT
4930+ LPVOID
4931+ PALAPI
4932+ VirtualAllocExNuma (
4933+ IN HANDLE hProcess ,
4934+ IN OPTIONAL LPVOID lpAddress ,
4935+ IN SIZE_T dwSize ,
4936+ IN DWORD flAllocationType ,
4937+ IN DWORD flProtect ,
4938+ IN DWORD nndPreferred
4939+ );
4940+
4941+ PALIMPORT
4942+ BOOL
4943+ PALAPI
4944+ GetLogicalProcessorInformationEx (
4945+ IN LOGICAL_PROCESSOR_RELATIONSHIP RelationshipType ,
4946+ OUT OPTIONAL PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX Buffer ,
4947+ IN OUT PDWORD ReturnedLength
4948+ );
4949+
4950+ PALIMPORT
4951+ BOOL
4952+ PALAPI
4953+ SetThreadGroupAffinity (
4954+ IN HANDLE hThread ,
4955+ IN const GROUP_AFFINITY * GroupAffinity ,
4956+ OUT OPTIONAL PGROUP_AFFINITY PreviousGroupAffinity
4957+ );
4958+
4959+ PALIMPORT
4960+ BOOL
4961+ PALAPI
4962+ GetThreadGroupAffinity (
4963+ IN HANDLE hThread ,
4964+ OUT PGROUP_AFFINITY GroupAffinity
4965+ );
4966+
4967+ PALIMPORT
4968+ VOID
4969+ PALAPI
4970+ GetCurrentProcessorNumberEx (
4971+ OUT PPROCESSOR_NUMBER ProcNumber
4972+ );
4973+
4974+ PALIMPORT
4975+ BOOL
4976+ PALAPI
4977+ GetProcessAffinityMask (
4978+ IN HANDLE hProcess ,
4979+ OUT PDWORD_PTR lpProcessAffinityMask ,
4980+ OUT PDWORD_PTR lpSystemAffinityMask
4981+ );
4982+
48284983//
48294984// The types of events that can be logged.
48304985//
0 commit comments