Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
RuntimeEventSourceHelper.cs
Go to the documentation of this file.
2
3internal static class RuntimeEventSourceHelper
4{
5 private static long s_prevProcUserTime;
6
7 private static long s_prevProcKernelTime;
8
9 private static long s_prevSystemUserTime;
10
11 private static long s_prevSystemKernelTime;
12
13 internal static int GetCpuUsage()
14 {
15 int result = 0;
16 if (Interop.Kernel32.GetProcessTimes(Interop.Kernel32.GetCurrentProcess(), out var _, out var exit, out var kernel, out var user) && Interop.Kernel32.GetSystemTimes(out exit, out var kernel2, out var user2))
17 {
18 long num = user - s_prevProcUserTime + (kernel - s_prevProcKernelTime);
19 long num2 = kernel2 - s_prevSystemUserTime + (user2 - s_prevSystemKernelTime);
20 if (s_prevSystemUserTime != 0L && s_prevSystemKernelTime != 0L && num2 != 0L)
21 {
22 result = (int)(num * 100 / num2);
23 }
24 s_prevProcUserTime = user;
25 s_prevProcKernelTime = kernel;
26 s_prevSystemUserTime = kernel2;
28 }
29 return result;
30 }
31}
static bool GetProcessTimes(SafeProcessHandle handle, out long creation, out long exit, out long kernel, out long user)
static IntPtr GetCurrentProcess()
static bool GetSystemTimes(out long idle, out long kernel, out long user)