Import Upstream version 20180207
[hcoop/debian/mlton.git] / runtime / basis / MLton / Rusage / rusage.c
1 #include "platform.h"
2
3 extern struct GC_state gcState;
4
5 static struct rusage MLton_Rusage_self;
6 static struct rusage MLton_Rusage_children;
7 static struct rusage MLton_Rusage_gc;
8
9 C_Time_t MLton_Rusage_self_utime_sec (void) {
10 return MLton_Rusage_self.ru_utime.tv_sec;
11 }
12
13 C_SUSeconds_t MLton_Rusage_self_utime_usec (void) {
14 return MLton_Rusage_self.ru_utime.tv_usec;
15 }
16
17 C_Time_t MLton_Rusage_self_stime_sec (void) {
18 return MLton_Rusage_self.ru_stime.tv_sec;
19 }
20
21 C_SUSeconds_t MLton_Rusage_self_stime_usec (void) {
22 return MLton_Rusage_self.ru_stime.tv_usec;
23 }
24
25 C_Time_t MLton_Rusage_children_utime_sec (void) {
26 return MLton_Rusage_children.ru_utime.tv_sec;
27 }
28
29 C_SUSeconds_t MLton_Rusage_children_utime_usec (void) {
30 return MLton_Rusage_children.ru_utime.tv_usec;
31 }
32
33 C_Time_t MLton_Rusage_children_stime_sec (void) {
34 return MLton_Rusage_children.ru_stime.tv_sec;
35 }
36
37 C_SUSeconds_t MLton_Rusage_children_stime_usec (void) {
38 return MLton_Rusage_children.ru_stime.tv_usec;
39 }
40
41 C_Time_t MLton_Rusage_gc_utime_sec (void) {
42 return MLton_Rusage_gc.ru_utime.tv_sec;
43 }
44
45 C_SUSeconds_t MLton_Rusage_gc_utime_usec (void) {
46 return MLton_Rusage_gc.ru_utime.tv_usec;
47 }
48
49 C_Time_t MLton_Rusage_gc_stime_sec (void) {
50 return MLton_Rusage_gc.ru_stime.tv_sec;
51 }
52
53 C_SUSeconds_t MLton_Rusage_gc_stime_usec (void) {
54 return MLton_Rusage_gc.ru_stime.tv_usec;
55 }
56
57 void MLton_Rusage_getrusage (void) {
58 MLton_Rusage_gc = *(GC_getRusageGCAddr (&gcState));
59 getrusage (RUSAGE_SELF, &MLton_Rusage_self);
60 getrusage (RUSAGE_CHILDREN, &MLton_Rusage_children);
61 }