|
1 | 1 | module runtime |
2 | 2 |
|
| 3 | +#include <psapi.h> |
| 4 | + |
3 | 5 | // Windows 7+ exports K32GetProcessMemoryInfo from kernel32.dll, so avoid |
4 | | -// depending on psapi.h/psapi.lib during bootstrap builds. |
| 6 | +// depending on psapi.lib during bootstrap builds. |
5 | 7 | @[typedef] |
6 | | -struct C.V_PROCESS_MEMORY_COUNTERS { |
7 | | - cb u32 |
8 | | - page_fault_count u32 |
9 | | - peak_working_set_size usize |
10 | | - working_set_size usize |
11 | | - quota_peak_paged_pool_usage usize |
12 | | - quota_paged_pool_usage usize |
13 | | - quota_peak_non_paged_pool_usage usize |
14 | | - quota_non_paged_pool_usage usize |
15 | | - pagefile_usage usize |
16 | | - peak_pagefile_usage usize |
| 8 | +struct C.PROCESS_MEMORY_COUNTERS { |
| 9 | + cb u32 |
| 10 | + PageFaultCount u32 |
| 11 | + PeakWorkingSetSize usize |
| 12 | + WorkingSetSize usize |
| 13 | + QuotaPeakPagedPoolUsage usize |
| 14 | + QuotaPagedPoolUsage usize |
| 15 | + QuotaPeakNonPagedPoolUsage usize |
| 16 | + QuotaNonPagedPoolUsage usize |
| 17 | + PagefileUsage usize |
| 18 | + PeakPagefileUsage usize |
17 | 19 | } |
18 | 20 |
|
19 | | -fn C.K32GetProcessMemoryInfo(voidptr, &C.V_PROCESS_MEMORY_COUNTERS, u32) bool |
| 21 | +fn C.K32GetProcessMemoryInfo(voidptr, &C.PROCESS_MEMORY_COUNTERS, u32) bool |
20 | 22 |
|
21 | 23 | // used_memory retrieves the current physical memory usage of the process. |
22 | 24 | pub fn used_memory() !u64 { |
23 | | - mut pmc := C.V_PROCESS_MEMORY_COUNTERS{} |
| 25 | + mut pmc := C.PROCESS_MEMORY_COUNTERS{} |
24 | 26 | pmc.cb = u32(sizeof(pmc)) |
25 | 27 | if C.K32GetProcessMemoryInfo(C.GetCurrentProcess(), &pmc, pmc.cb) { |
26 | | - return u64(pmc.working_set_size) |
| 28 | + return u64(pmc.WorkingSetSize) |
27 | 29 | } |
28 | 30 | return 0 |
29 | 31 | } |
0 commit comments