[runtime] Use pthread_cond_timedwait_relative_np () function on osx if available...
[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
14 /* never remove or reorder these enums values: they are used in corlib/System */
15
16 typedef enum {
17         MONO_PROCESS_NUM_THREADS,
18         MONO_PROCESS_USER_TIME, /* milliseconds */
19         MONO_PROCESS_SYSTEM_TIME, /* milliseconds */
20         MONO_PROCESS_TOTAL_TIME, /* milliseconds */
21         MONO_PROCESS_WORKING_SET,
22         MONO_PROCESS_WORKING_SET_PEAK, /* 5 */
23         MONO_PROCESS_PRIVATE_BYTES,
24         MONO_PROCESS_VIRTUAL_BYTES,
25         MONO_PROCESS_VIRTUAL_BYTES_PEAK,
26         MONO_PROCESS_FAULTS,
27         MONO_PROCESS_ELAPSED, /* 10 */
28         MONO_PROCESS_PPID,
29         MONO_PROCESS_PAGED_BYTES,
30         MONO_PROCESS_END
31 } MonoProcessData;
32
33 typedef enum {
34         MONO_CPU_USER_TIME,
35         MONO_CPU_PRIV_TIME,
36         MONO_CPU_INTR_TIME,
37         MONO_CPU_DCP_TIME,
38         MONO_CPU_IDLE_TIME,
39         MONO_CPU_END
40 } MonoCpuData;
41
42 typedef enum {
43         MONO_PROCESS_ERROR_NONE, /* no error happened */
44         MONO_PROCESS_ERROR_NOT_FOUND, /* process not found */
45         MONO_PROCESS_ERROR_OTHER
46 } MonoProcessError;
47
48 typedef struct _MonoCpuUsageState MonoCpuUsageState;
49 #ifndef HOST_WIN32
50 struct _MonoCpuUsageState {
51         gint64 kernel_time;
52         gint64 user_time;
53         gint64 current_time;
54 };
55 #else
56 struct _MonoCpuUsageState {
57         guint64 kernel_time;
58         guint64 user_time;
59         guint64 idle_time;
60 };
61 #endif
62
63 gpointer* mono_process_list     (int *size);
64
65 void      mono_process_get_times (gpointer pid, gint64 *start_time, gint64 *user_time, gint64 *kernel_time);
66
67 char*     mono_process_get_name (gpointer pid, char *buf, int len);
68
69 gint64    mono_process_get_data (gpointer pid, MonoProcessData data);
70 gint64    mono_process_get_data_with_error (gpointer pid, MonoProcessData data, MonoProcessError *error);
71
72 int       mono_process_current_pid (void);
73
74 int       mono_cpu_count    (void);
75 gint64    mono_cpu_get_data (int cpu_id, MonoCpuData data, MonoProcessError *error);
76 gint32    mono_cpu_usage (MonoCpuUsageState *prev);
77
78 int       mono_atexit (void (*func)(void));
79
80 #endif /* __MONO_PROC_LIB_H__ */
81