Support Win7 in cpu information parser (#19109)

This commit is contained in:
Wanglei Shen
2023-08-11 13:54:13 +08:00
committed by GitHub
parent 59872ee072
commit c62ad1add8
2 changed files with 114 additions and 6 deletions

View File

@@ -64,8 +64,10 @@ void parse_processor_info_win(const char* base_ptr,
int group_id = 0;
int group_type = 0;
int num_package = 0;
_processors = 0;
_sockets = -1;
_sockets = 0;
_cores = 0;
PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX info = NULL;
@@ -87,18 +89,19 @@ void parse_processor_info_win(const char* base_ptr,
return;
};
_proc_type_table.push_back(proc_init_line);
for (; info_ptr < base_ptr + len; info_ptr += (DWORD)info->Size) {
info = (PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX)info_ptr;
if (info->Relationship == RelationProcessorPackage) {
_sockets++;
MaskToList(info->Processor.GroupMask->Mask);
if (0 == _sockets) {
_proc_type_table.push_back(proc_init_line);
} else {
if (num_package > 0) {
_sockets++;
_proc_type_table.push_back(_proc_type_table[0]);
_proc_type_table[0] = proc_init_line;
}
num_package++;
} else if (info->Relationship == RelationProcessorCore) {
MaskToList(info->Processor.GroupMask->Mask);

View File

@@ -2088,6 +2088,108 @@ WinCpuMapTestCase _1sockets_4cores_hyperthreading = {
"00000000000000000000000000000ff00000000000000"},
};
WinCpuMapTestCase _1sockets_4cores_hyperthreading_1_FMT7 = {
8,
1,
1,
4,
{{8, 4, 0, 4, 0, 0}},
{
{0, 0, 0, 0, HYPER_THREADING_PROC, 0, -1},
{1, 0, 0, 0, MAIN_CORE_PROC, 0, -1},
{2, 0, 0, 1, HYPER_THREADING_PROC, 1, -1},
{3, 0, 0, 1, MAIN_CORE_PROC, 1, -1},
{4, 0, 0, 2, HYPER_THREADING_PROC, 2, -1},
{5, 0, 0, 2, MAIN_CORE_PROC, 2, -1},
{6, 0, 0, 3, HYPER_THREADING_PROC, 3, -1},
{7, 0, 0, 3, MAIN_CORE_PROC, 3, -1},
},
{"0000000030000000010000000000000000000000000000000000000000000100030000000000000000006d0052006f0002000000380000000"
"10840000080000002000000000000000000000000000000000000000000000003000000000000000000720073005c00020000003800000001"
"08400000800000010000000000000000000000000000000000000000000000030000000000000000003d0043003a000200000038000000020"
"44000000004000000000000000000000000000000000000000000000000000300000000000000000065006d00700000000000300000000100"
"000000000000000000000000000000000000000001000c0000000000000000003500430033000200000038000000010840000080000002000"
"00000000000000000000000000000000000000000000c0000000000000000003d0043003a0002000000380000000108400000800000010000"
"0000000000000000000000000000000000000000000c000000000000000000770073000000020000003800000002044000000004000000000"
"000000000000000000000000000000000000000000c00000000000000000069006e0064000000000030000000010000000000000000000000"
"000000000000000000000100300000000000000000003a005c004200020000003800000001084000008000000200000000000000000000000"
"000000000000000000000003000000000000000000065005c0063000200000038000000010840000080000001000000000000000000000000"
"0000000000000000000000300000000000000000003a3d433a5c5502000000380000000204400000000400000000000000000000000000000"
"000000000000000000000300000000000000000003a5c50726f67030000003000000000000000000000000000000000000000000000000000"
"0100ff0000000000000000006700436f6d6d0000000030000000010000000000000000000000000000000000000000000100c000000000000"
"0000000657300436f6d02000000380000000108400000800000020000000000000000000000000000000000000000000000c0000000000000"
"0000002046696c657302000000380000000108400000800000010000000000000000000000000000000000000000000000c00000000000000"
"00000434f4d50555402000000380000000204400000000400000000000000000000000000000000000000000000000000c000000000000000"
"00006d642e65786502000000380000000310400000008000000000000000000000000000000000000000000000000000ff000000000000000"
"0004956453d433a0100000030000000000000000000000000000000000000000000000000000000ff00000000000000000057535c41707004"
"00000050000000010001000000000000000000000000000000000000000000080800000000000000000000000000000000000000000000000"
"00000000000000000000000000000ff00000000000000"},
};
WinCpuMapTestCase _1sockets_4cores_hyperthreading_2_FMT7 = {
8,
1,
1,
4,
{{8, 4, 0, 4, 0, 0}},
{
{0, 0, 0, 0, HYPER_THREADING_PROC, 0, -1},
{1, 0, 0, 0, MAIN_CORE_PROC, 0, -1},
{2, 0, 0, 1, HYPER_THREADING_PROC, 1, -1},
{3, 0, 0, 1, MAIN_CORE_PROC, 1, -1},
{4, 0, 0, 2, HYPER_THREADING_PROC, 2, -1},
{5, 0, 0, 2, MAIN_CORE_PROC, 2, -1},
{6, 0, 0, 3, HYPER_THREADING_PROC, 3, -1},
{7, 0, 0, 3, MAIN_CORE_PROC, 3, -1},
},
{"0000000030000000010000000000000000000000000000000000000000000100030000000000000000003d433a5c557302000000380000000"
"10840000080000002000000000000000000000000000000000000000000000003000000000000000000616d2046696c020000003800000001"
"08400000800000010000000000000000000000000000000000000000000000030000000000000000002046696c65730200000038000000020"
"44000000004000000000000000000000000000000000000000000000000000300000000000000000046696c65735c00000000300000000100"
"000000000000000000000000000000000000000001000c0000000000000000005c77696e646f0200000038000000010840000080000002000"
"00000000000000000000000000000000000000000000c0000000000000000004f53545f434802000000380000000108400000800000010000"
"0000000000000000000000000000000000000000000c0000000000000000003a5c50726f67020000003800000002044000000004000000000"
"000000000000000000000000000000000000000000c000000000000000000735c417070440000000030000000010000000000000000000000"
"000000000000000000000100300000000000000000004f434553534f020000003800000001084000008000000200000000000000000000000"
"00000000000000000000000300000000000000000007665726167650200000038000000010840000080000001000000000000000000000000"
"000000000000000000000030000000000000000000615c6a646b2d02000000380000000204400000000400000000000000000000000000000"
"000000000000000000000300000000000000000003b433a5c5072030000003000000000000000000000000000000000000000000000000000"
"0100ff0000000000000000005c6a617661700000000030000000010000000000000000000000000000000000000000000100c000000000000"
"00000006176615c6a6102000000380000000108400000800000020000000000000000000000000000000000000000000000c0000000000000"
"000000797374656d3302000000380000000108400000800000010000000000000000000000000000000000000000000000c00000000000000"
"000003b473a5c507202000000380000000204400000000400000000000000000000000000000000000000000000000000c000000000000000"
"0000726172795c6202000000380000000310400000008000000000000000000000000000000000000000000000000000ff000000000000000"
"0006c65735c47690100000030000000000000000000000000000000000000000000000000000000ff0000000000000000003b443a5c507204"
"00000050000000010001000000000000000000000000000000000000000000080800000000000000000000000000000000000000000000000"
"00000000000000000000000000000ff00000000000000"},
};
WinCpuMapTestCase _1sockets_2cores_hyperthreading_FMT7 = {
4,
1,
1,
2,
{{4, 2, 0, 2, 0, 0}},
{
{0, 0, 0, 0, HYPER_THREADING_PROC, 0, -1},
{1, 0, 0, 0, MAIN_CORE_PROC, 0, -1},
{2, 0, 0, 1, HYPER_THREADING_PROC, 1, -1},
{3, 0, 0, 1, MAIN_CORE_PROC, 1, -1},
},
{"000000003000000001000000000000000000000000000000000000000000010003000000000000000000cdcdcdcdcdcd02000000380000000"
"10840000080000002000000000000000000000000000000000000000000000003000000000000000000cdcdcdcdcdcd020000003800000001"
"0840000080000001000000000000000000000000000000000000000000000003000000000000000000cdcdcdcdcdcd0200000038000000020"
"840000000040000000000000000000000000000000000000000000000000003000000000000000000cdcdcdcdcdcd03000000300000000000"
"000000000000000000000000000000000000000001000f000000000000000000cdcdcdcdcdcd0000000030000000010000000000000000000"
"0000000000000000000000001000c000000000000000000cdcdcdcdcdcd020000003800000001084000008000000200000000000000000000"
"000000000000000000000000000c000000000000000000cdcdcdcdcdcd0200000038000000010840000080000001000000000000000000000"
"00000000000000000000000000c000000000000000000cdcdcdcdcdcd02000000380000000208400000000400000000000000000000000000"
"0000000000000000000000000c000000000000000000cdcdcdcdcdcd020000003800000003104000000040000000000000000000000000000"
"000000000000000000000000f000000000000000000cdcdcdcdcdcd0100000030000000000000000000000000000000000000000000000000"
"0000000f000000000000000000cdcdcdcdcdcd040000005000000001000100000000000000000000000000000000000000000004040000000"
"0000000000000000000000000000000000000000000000000000000000000000000000f00000000000000"},
};
TEST_P(WinCpuMapParserTests, WinCache) {}
INSTANTIATE_TEST_SUITE_P(CPUMap,
@@ -2103,7 +2205,10 @@ INSTANTIATE_TEST_SUITE_P(CPUMap,
_1sockets_14cores_hyperthreading_set2,
_1sockets_14cores_hyperthreading_set3,
_1sockets_10cores_hyperthreading,
_1sockets_4cores_hyperthreading));
_1sockets_4cores_hyperthreading,
_1sockets_4cores_hyperthreading_1_FMT7,
_1sockets_4cores_hyperthreading_2_FMT7,
_1sockets_2cores_hyperthreading_FMT7));
#endif