ntdll: Implement ProcessVmCounters for Linux.

Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Alex Henrie 2017-03-20 22:55:37 -06:00 committed by Alexandre Julliard
parent 08ea8280d3
commit bf7a97e5d3
2 changed files with 29 additions and 4 deletions

View File

@ -131,6 +131,34 @@ static void fill_VM_COUNTERS(VM_COUNTERS* pvmi)
#endif
}
#elif defined(linux)
static void fill_VM_COUNTERS(VM_COUNTERS* pvmi)
{
FILE *f;
char line[256];
unsigned long value;
f = fopen("/proc/self/status", "r");
if (!f) return;
while (fgets(line, sizeof(line), f))
{
if (sscanf(line, "VmPeak: %lu", &value))
pvmi->PeakVirtualSize = (ULONG64)value * 1024;
else if (sscanf(line, "VmSize: %lu", &value))
pvmi->VirtualSize = (ULONG64)value * 1024;
else if (sscanf(line, "VmHWM: %lu", &value))
pvmi->PeakWorkingSetSize = (ULONG64)value * 1024;
else if (sscanf(line, "VmRSS: %lu", &value))
pvmi->WorkingSetSize = (ULONG64)value * 1024;
else if (sscanf(line, "VmSwap: %lu", &value))
pvmi->PeakPagefileUsage = pvmi->PagefileUsage = (ULONG64)value * 1024;
}
fclose(f);
}
#else
static void fill_VM_COUNTERS(VM_COUNTERS* pvmi)

View File

@ -1078,10 +1078,7 @@ static void test_query_process_vm(void)
/* Check if we have some return values */
trace("WorkingSetSize : %ld\n", pvi.WorkingSetSize);
todo_wine
{
ok( pvi.WorkingSetSize > 0, "Expected a WorkingSetSize > 0\n");
}
ok( pvi.WorkingSetSize > 0, "Expected a WorkingSetSize > 0\n");
}
static void test_query_process_io(void)