Anastasios Simeonidis : ntdll: Move relationship filtering to create_logical_proc_info.
Module: wine Branch: master Commit: 9885b0acbb0c6173a3c9e308503d697fad584cc2 URL: https://source.winehq.org/git/wine.git/?a=commit;h=9885b0acbb0c6173a3c9e3085... Author: Anastasios Simeonidis <symeonidis(a)csd.auth.gr> Date: Mon Nov 25 19:42:52 2019 +0200 ntdll: Move relationship filtering to create_logical_proc_info. Signed-off-by: Anastasios Simeonidis <symeonidis(a)csd.auth.gr> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/ntdll/nt.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c index cdc893b6a2..c4c0ce7506 100644 --- a/dlls/ntdll/nt.c +++ b/dlls/ntdll/nt.c @@ -1693,7 +1693,7 @@ static BOOL sysfs_count_list_elements(const char *filename, DWORD *result) /* for 'data', max_len is the array count. for 'dataex', max_len is in bytes */ static NTSTATUS create_logical_proc_info(SYSTEM_LOGICAL_PROCESSOR_INFORMATION **data, - SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX **dataex, DWORD *max_len) + SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX **dataex, DWORD *max_len, DWORD relation) { static const char core_info[] = "/sys/devices/system/cpu/cpu%u/topology/%s"; static const char cache_info[] = "/sys/devices/system/cpu/cpu%u/cache/index%u/%s"; @@ -1704,6 +1704,9 @@ static NTSTATUS create_logical_proc_info(SYSTEM_LOGICAL_PROCESSOR_INFORMATION ** char op, name[MAX_PATH]; ULONG_PTR all_cpus_mask = 0; + if (relation != RelationAll) + FIXME("Relationship filtering not implemented: 0x%x\n", relation); + /* On systems with a large number of CPU cores (32 or 64 depending on 32-bit or 64-bit), * we have issues parsing processor information: * - ULONG_PTR masks as used in data structures can't hold all cores. Requires splitting @@ -1913,7 +1916,7 @@ static NTSTATUS create_logical_proc_info(SYSTEM_LOGICAL_PROCESSOR_INFORMATION ** #elif defined(__APPLE__) /* for 'data', max_len is the array count. for 'dataex', max_len is in bytes */ static NTSTATUS create_logical_proc_info(SYSTEM_LOGICAL_PROCESSOR_INFORMATION **data, - SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX **dataex, DWORD *max_len) + SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX **dataex, DWORD *max_len, DWORD relation) { DWORD pkgs_no, cores_no, lcpu_no, lcpu_per_core, cores_per_package, assoc, len = 0; DWORD cache_ctrs[10] = {0}; @@ -1923,6 +1926,9 @@ static NTSTATUS create_logical_proc_info(SYSTEM_LOGICAL_PROCESSOR_INFORMATION ** size_t size; DWORD p,i,j,k; + if (relation != RelationAll) + FIXME("Relationship filtering not implemented: 0x%x\n", relation); + lcpu_no = NtCurrentTeb()->Peb->NumberOfProcessors; size = sizeof(pkgs_no); @@ -2048,7 +2054,7 @@ static NTSTATUS create_logical_proc_info(SYSTEM_LOGICAL_PROCESSOR_INFORMATION ** } #else static NTSTATUS create_logical_proc_info(SYSTEM_LOGICAL_PROCESSOR_INFORMATION **data, - SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX **dataex, DWORD *max_len) + SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX **dataex, DWORD *max_len, DWORD relation) { FIXME("stub\n"); return STATUS_NOT_IMPLEMENTED; @@ -2970,7 +2976,7 @@ NTSTATUS WINAPI NtQuerySystemInformation( break; } - ret = create_logical_proc_info(&buf, NULL, &len); + ret = create_logical_proc_info(&buf, NULL, &len, RelationAll); if( ret != STATUS_SUCCESS ) { RtlFreeHeap(GetProcessHeap(), 0, buf); @@ -3059,9 +3065,6 @@ NTSTATUS WINAPI NtQuerySystemInformationEx(SYSTEM_INFORMATION_CLASS SystemInform break; } - if (*(DWORD*)Query != RelationAll) - FIXME("Relationship filtering not implemented: 0x%x\n", *(DWORD*)Query); - len = 3 * sizeof(*buf); buf = RtlAllocateHeap(GetProcessHeap(), 0, len); if (!buf) @@ -3070,7 +3073,7 @@ NTSTATUS WINAPI NtQuerySystemInformationEx(SYSTEM_INFORMATION_CLASS SystemInform break; } - ret = create_logical_proc_info(NULL, &buf, &len); + ret = create_logical_proc_info(NULL, &buf, &len, *(DWORD*)Query); if (ret != STATUS_SUCCESS) { RtlFreeHeap(GetProcessHeap(), 0, buf); @@ -3082,7 +3085,7 @@ NTSTATUS WINAPI NtQuerySystemInformationEx(SYSTEM_INFORMATION_CLASS SystemInform if (!SystemInformation) ret = STATUS_ACCESS_VIOLATION; else - memcpy( SystemInformation, buf, len); + memcpy(SystemInformation, buf, len); } else ret = STATUS_INFO_LENGTH_MISMATCH;
participants (1)
-
Alexandre Julliard