]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.nativemem/src/org/simantics/nativemem/internal/Psapi64.java
Get rid of uses of gnu.trove2
[simantics/platform.git] / bundles / org.simantics.nativemem / src / org / simantics / nativemem / internal / Psapi64.java
1 package org.simantics.nativemem.internal;
2
3 import java.util.Arrays;
4 import java.util.List;
5
6 import org.simantics.nativemem.ProcessMemoryCounters;
7
8 import com.sun.jna.Native;
9 import com.sun.jna.Structure;
10 import com.sun.jna.platform.win32.WinNT.HANDLE;
11 import com.sun.jna.win32.StdCallLibrary;
12
13 public interface Psapi64 extends StdCallLibrary {
14
15     Psapi64 INSTANCE = (Psapi64) Native.loadLibrary("Psapi", Psapi64.class);
16
17     /*
18      * https://msdn.microsoft.com/en-us/library/windows/desktop/ms684874%28v=vs.85%29.aspx
19      */
20     public static class PROCESS_MEMORY_COUNTERS_EX extends Structure {
21         public int cb;
22         public int PageFaultCount;
23         public long PeakWorkingSetSize;
24         public long WorkingSetSize;
25         public long QuotaPeakPagedPoolUsage;
26         public long QuotaPagedPoolUsage;
27         public long QuotaPeakNonPagedPoolUsage;
28         public long QuotaNonPagedPoolUsage;
29         public long PagefileUsage;
30         public long PeakPagefileUsage;
31         public long PrivateUsage;
32
33         @SuppressWarnings("rawtypes")
34         @Override
35         protected List getFieldOrder() {
36             return PROCESS_MEMORY_COUNTERS_EX_FIELDS;
37         }
38
39         private static final List<String> PROCESS_MEMORY_COUNTERS_EX_FIELDS = Arrays.asList(new String[] { 
40                 "cb", "PageFaultCount",
41                 "PeakWorkingSetSize", "WorkingSetSize",
42                 "QuotaPeakPagedPoolUsage", "QuotaPagedPoolUsage",
43                 "QuotaPeakNonPagedPoolUsage", "QuotaNonPagedPoolUsage",
44                 "PagefileUsage", "PeakPagefileUsage", "PrivateUsage"
45         });
46
47         public void writeTo(ProcessMemoryCounters to) {
48             to.PageFaultCount = PageFaultCount;
49             to.PeakWorkingSetSize = PeakWorkingSetSize;
50             to.WorkingSetSize = WorkingSetSize;
51             to.QuotaPeakPagedPoolUsage = QuotaPeakPagedPoolUsage;
52             to.QuotaPagedPoolUsage = QuotaPagedPoolUsage;
53             to.QuotaPeakNonPagedPoolUsage = QuotaPeakNonPagedPoolUsage;
54             to.QuotaNonPagedPoolUsage = QuotaNonPagedPoolUsage;
55             to.PagefileUsage = PagefileUsage;
56             to.PeakPagefileUsage = PeakPagefileUsage;
57             to.PrivateUsage = PrivateUsage;
58         }
59     }
60
61     /*
62      * https://msdn.microsoft.com/en-us/library/windows/desktop/ms683219%28v=vs.85%29.aspx
63      */
64     boolean GetProcessMemoryInfo(HANDLE Process, PROCESS_MEMORY_COUNTERS_EX ppsmemCounters, int cb);
65
66 }