1 /*
2 * high-watermark measurements
3 */
4 #include "u.h"
5 #include "../port/lib.h"
6 #include "mem.h"
7 #include "dat.h"
8 #include "fns.h"
9
10 void
initmark(Watermark * wp,int max,char * name)11 initmark(Watermark *wp, int max, char *name)
12 {
13 memset(wp, 0, sizeof *wp);
14 wp->max = max;
15 wp->name = name;
16 }
17
18 void
notemark(Watermark * wp,int val)19 notemark(Watermark *wp, int val)
20 {
21 /* enforce obvious limits */
22 if (val < 0)
23 val = 0;
24 else if (val > wp->max)
25 val = wp->max;
26
27 if (val > wp->highwater) {
28 wp->highwater = val;
29 if (val == wp->max && wp->curr < val)
30 wp->hitmax++;
31 }
32 wp->curr = val;
33 }
34
35 char *
seprintmark(char * buf,char * ebuf,Watermark * wp)36 seprintmark(char *buf, char *ebuf, Watermark *wp)
37 {
38 return seprint(buf, ebuf, "%s:\thighwater %d/%d curr %d hitmax %d\n",
39 wp->name, wp->highwater, wp->max, wp->curr, wp->hitmax);
40 }
41