Initial version of donated sources by Avertec, 3.4p5.
[tas-yagle.git] / distrib / sources / mbk / mbk_stats.c
1 #include <time.h>
2 #include <sys/types.h>
3 #include <sys/time.h>
4 #include <sys/resource.h>
5
6 #include "mut_lib.h"
7 #include AVT_H
8
9 void mbk_debugstat(char *label, int reset)
10 {
11 unsigned long temps;
12 unsigned long user, syst;
13 unsigned long userM, userS, userD;
14 unsigned long systM, systS, systD;
15 long long bytes;
16 static struct rusage start, end;
17 static unsigned long mem;
18 static time_t rstart, rend;
19
20 if (reset)
21 {
22 getrusage(RUSAGE_SELF, &end);
23 mem=mbkprocessmemoryusage();
24 time(&rend);
25 }
26 else
27 {
28 memcpy(&start, &end, sizeof(struct rusage));
29 rstart=rend;
30
31 time(&rend);
32 getrusage(RUSAGE_SELF, &end);
33
34 temps = rend - rstart;
35 user = (100 * end.ru_utime.tv_sec + (end.ru_utime.tv_usec / 10000))
36 - (100 * start.ru_utime.tv_sec + (start.ru_utime.tv_usec / 10000));
37 syst = (100 * end.ru_stime.tv_sec + (end.ru_stime.tv_usec / 10000))
38 - (100 * start.ru_stime.tv_sec + (start.ru_stime.tv_usec / 10000));
39
40 userM = user / 6000;
41 userS = (user % 6000) / 100;
42 userD = (user % 100) / 10;
43
44 systM = syst / 6000;
45 systS = (syst % 6000) / 100;
46 systD = (syst % 100) / 10;
47
48 // fprintf(stderr, "s:+%02ldm%02lds", (long) (temps / 60), (long) (temps % 60));
49 avt_fprintf(stdout, "¤5%s",label!=NULL?label:"");
50 avt_fprintf(stdout, "s:+%02ldm%02ld.%ld", systM, systS, systD);
51 avt_fprintf(stdout, " u:+%02ldm%02ld.%ld", userM, userS, userD);
52 bytes = (unsigned long long)mbkprocessmemoryusage()-(unsigned long long)mem;
53 mem=mbkprocessmemoryusage();
54 avt_fprintf(stdout, " m:%+lldk (top=%ldk)¤.\n", ((long long)bytes)/1024, mbkprocessmemoryusage()/1024);
55
56 fflush(stderr);
57 }
58 }