/* * high-watermark measurements */ #include "u.h" #include "../port/lib.h" #include "mem.h" #include "dat.h" #include "fns.h" void initmark(Watermark *wp, int max, char *name) { memset(wp, 0, sizeof *wp); wp->max = max; wp->name = name; } void notemark(Watermark *wp, int val) { /* enforce obvious limits */ if (val < 0) val = 0; else if (val > wp->max) val = wp->max; if (val > wp->highwater) { wp->highwater = val; if (val == wp->max && wp->curr < val) wp->hitmax++; } wp->curr = val; } char * seprintmark(char *buf, char *ebuf, Watermark *wp) { return seprint(buf, ebuf, "%s:\thighwater %d/%d curr %d hitmax %d\n", wp->name, wp->highwater, wp->max, wp->curr, wp->hitmax); }