少年修仙传客户端基础资源
hch
2024-04-01 d01413b00ef631ac20347716b23818b0b811f65f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/**
 * \file
 * Windows proclib support for Mono.
 *
 * Copyright 2016 Microsoft
 * Licensed under the MIT license. See LICENSE file in the project root for full license information.
*/
 
#include <config.h>
#include <glib.h>
 
#ifdef HOST_WIN32
#include <windows.h>
#include "mono/utils/mono-proclib.h"
 
int
mono_process_current_pid ()
{
    return (int) GetCurrentProcessId ();
}
 
/**
 * mono_cpu_count:
 * \returns the number of processors on the system.
 */
int
mono_cpu_count (void)
{
    SYSTEM_INFO info;
    GetSystemInfo (&info);
    return info.dwNumberOfProcessors;
}
 
/*
 * This function returns the cpu usage in percentage,
 * normalized on the number of cores.
 *
 * Warning : the percentage returned can be > 100%. This
 * might happens on systems like Android which, for
 * battery and performance reasons, shut down cores and
 * lie about the number of active cores.
 */
#if G_HAVE_API_SUPPORT(HAVE_CLASSIC_WINAPI_SUPPORT)
gint32
mono_cpu_usage (MonoCpuUsageState *prev)
{
    gint32 cpu_usage = 0;
    gint64 cpu_total_time;
    gint64 cpu_busy_time;
    guint64 idle_time;
    guint64 kernel_time;
    guint64 user_time;
 
    if (!GetSystemTimes ((FILETIME*) &idle_time, (FILETIME*) &kernel_time, (FILETIME*) &user_time)) {
        g_error ("GetSystemTimes() failed, error code is %d\n", GetLastError ());
        return -1;
    }
 
    cpu_total_time = (gint64)((user_time - (prev ? prev->user_time : 0)) + (kernel_time - (prev ? prev->kernel_time : 0)));
    cpu_busy_time = (gint64)(cpu_total_time - (idle_time - (prev ? prev->idle_time : 0)));
 
    if (prev) {
        prev->idle_time = idle_time;
        prev->kernel_time = kernel_time;
        prev->user_time = user_time;
    }
 
    if (cpu_total_time > 0 && cpu_busy_time > 0)
        cpu_usage = (gint32)(cpu_busy_time * 100 / cpu_total_time);
 
    return cpu_usage;
}
#endif /* G_HAVE_API_SUPPORT(HAVE_CLASSIC_WINAPI_SUPPORT) */
#endif /* HOST_WIN32*/