[PATCH 2/3] ntdll: Move relationship filtering to create_logical_proc_info.
Anastasios Simeonidis
symeonidis at csd.auth.gr
Mon Nov 25 11:42:52 CST 2019
Signed-off-by: Anastasios Simeonidis <symeonidis at csd.auth.gr>
---
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 b6daa226b3..8c652a0615 100644
--- a/dlls/ntdll/nt.c
+++ b/dlls/ntdll/nt.c
@@ -1675,7 +1675,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";
@@ -1686,6 +1686,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
@@ -1895,7 +1898,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};
@@ -1905,6 +1908,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);
@@ -2030,7 +2036,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;
@@ -2868,7 +2874,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);
@@ -2957,9 +2963,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)
@@ -2968,7 +2971,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);
@@ -2980,7 +2983,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;
--
2.24.0
More information about the wine-devel
mailing list