Merge pull request #7599 from lambdageek/abort-cctor-no-protection
[mono-project.git] / mono / utils / mono-proclib.h
blob356a1ab7e0b2916e2d97507d2a93bcfbc41892bd
1 /**
2 * \file
3 */
5 #ifndef __MONO_PROC_LIB_H__
6 #define __MONO_PROC_LIB_H__
7 /*
8 * Utility functions to access processes information and other info about the system.
9 */
11 #include <glib.h>
12 #include <mono/utils/mono-compiler.h>
13 #include <mono/utils/mono-publib.h>
15 /* never remove or reorder these enums values: they are used in corlib/System */
17 typedef enum {
18 MONO_PROCESS_NUM_THREADS,
19 MONO_PROCESS_USER_TIME, /* milliseconds */
20 MONO_PROCESS_SYSTEM_TIME, /* milliseconds */
21 MONO_PROCESS_TOTAL_TIME, /* milliseconds */
22 MONO_PROCESS_WORKING_SET,
23 MONO_PROCESS_WORKING_SET_PEAK, /* 5 */
24 MONO_PROCESS_PRIVATE_BYTES,
25 MONO_PROCESS_VIRTUAL_BYTES,
26 MONO_PROCESS_VIRTUAL_BYTES_PEAK,
27 MONO_PROCESS_FAULTS,
28 MONO_PROCESS_ELAPSED, /* 10 */
29 MONO_PROCESS_PPID,
30 MONO_PROCESS_PAGED_BYTES,
31 MONO_PROCESS_END
32 } MonoProcessData;
34 typedef enum {
35 MONO_CPU_USER_TIME,
36 MONO_CPU_PRIV_TIME,
37 MONO_CPU_INTR_TIME,
38 MONO_CPU_DCP_TIME,
39 MONO_CPU_IDLE_TIME,
40 MONO_CPU_END
41 } MonoCpuData;
43 typedef enum {
44 MONO_PROCESS_ERROR_NONE, /* no error happened */
45 MONO_PROCESS_ERROR_NOT_FOUND, /* process not found */
46 MONO_PROCESS_ERROR_OTHER
47 } MonoProcessError;
49 typedef struct _MonoCpuUsageState MonoCpuUsageState;
50 #ifndef HOST_WIN32
51 struct _MonoCpuUsageState {
52 gint64 kernel_time;
53 gint64 user_time;
54 gint64 current_time;
56 #else
57 struct _MonoCpuUsageState {
58 guint64 kernel_time;
59 guint64 user_time;
60 guint64 idle_time;
62 #endif
64 gpointer* mono_process_list (int *size);
66 void mono_process_get_times (gpointer pid, gint64 *start_time, gint64 *user_time, gint64 *kernel_time);
68 char* mono_process_get_name (gpointer pid, char *buf, int len);
70 gint64 mono_process_get_data (gpointer pid, MonoProcessData data);
71 gint64 mono_process_get_data_with_error (gpointer pid, MonoProcessData data, MonoProcessError *error);
73 int mono_process_current_pid (void);
75 MONO_API int mono_cpu_count (void);
76 gint64 mono_cpu_get_data (int cpu_id, MonoCpuData data, MonoProcessError *error);
77 gint32 mono_cpu_usage (MonoCpuUsageState *prev);
79 int mono_atexit (void (*func)(void));
81 #endif /* __MONO_PROC_LIB_H__ */