Merge pull request #5714 from alexischr/update_bockbuild
[mono.git] / mono / utils / mono-proclib.h
1 /**
2  * \file
3  */
4
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  */
10
11 #include <glib.h>
12 #include <mono/utils/mono-compiler.h>
13 #include <mono/utils/mono-publib.h>
14
15 /* never remove or reorder these enums values: they are used in corlib/System */
16
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;
33
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;
42
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;
48
49 typedef struct _MonoCpuUsageState MonoCpuUsageState;
50 #ifndef HOST_WIN32
51 struct _MonoCpuUsageState {
52         gint64 kernel_time;
53         gint64 user_time;
54         gint64 current_time;
55 };
56 #else
57 struct _MonoCpuUsageState {
58         guint64 kernel_time;
59         guint64 user_time;
60         guint64 idle_time;
61 };
62 #endif
63
64 gpointer* mono_process_list     (int *size);
65
66 void      mono_process_get_times (gpointer pid, gint64 *start_time, gint64 *user_time, gint64 *kernel_time);
67
68 char*     mono_process_get_name (gpointer pid, char *buf, int len);
69
70 gint64    mono_process_get_data (gpointer pid, MonoProcessData data);
71 gint64    mono_process_get_data_with_error (gpointer pid, MonoProcessData data, MonoProcessError *error);
72
73 int       mono_process_current_pid (void);
74
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);
78
79 int       mono_atexit (void (*func)(void));
80
81 #endif /* __MONO_PROC_LIB_H__ */
82