4 #include <sys/resource.h>
9 void mbk_debugstat(char *label
, int reset
)
12 unsigned long user
, syst
;
13 unsigned long userM
, userS
, userD
;
14 unsigned long systM
, systS
, systD
;
16 static struct rusage start
, end
;
17 static unsigned long mem
;
18 static time_t rstart
, rend
;
22 getrusage(RUSAGE_SELF
, &end
);
23 mem
=mbkprocessmemoryusage();
28 memcpy(&start
, &end
, sizeof(struct rusage
));
32 getrusage(RUSAGE_SELF
, &end
);
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));
41 userS
= (user
% 6000) / 100;
42 userD
= (user
% 100) / 10;
45 systS
= (syst
% 6000) / 100;
46 systD
= (syst
% 100) / 10;
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);