| plan 9 kernel history: overview | file list | diff list |
2001/0527/port/devmntstats.c (diff list | history)
| 1998/0916/sys/src/9/port/devmntstats.c:5,11 – 1998/0917/sys/src/9/port/devmntstats.c:5,11 (short | long) | ||
| 1998/0916 | #include "fns.h" #include "../port/error.h" | |
| 1998/0917 | void (*mntstats)(int, Chan*, uvlong, ulong); | |
| 1998/0916 | enum { | |
| 1998/0916/sys/src/9/port/devmntstats.c:22,31 – 1998/0917/sys/src/9/port/devmntstats.c:22,34 | ||
| 1998/0916 | Mntstats *next; int inuse; Chan c; | |
| 1998/0917 | uvlong hi[Nrpc]; /* high water time spent */ uvlong tot[Nrpc]; /* cumulative time spent */ | |
| 1998/0916 | uvlong bytes[Nrpc]; /* cumulative bytes xfered */ ulong n[Nrpc]; /* number of messages/msg type */ | |
| 1998/0917 | uvlong bigtot[Nrpc]; /* cumulative time spent in big messages */ uvlong bigbytes[Nrpc]; /* cumulative bytes xfered in big messages */ ulong bign[Nrpc]; /* number of big messages */ | |
| 1998/0916 | ulong last100[Nrpc]; /* avg time for last 100 */ }; | |
| 1998/0916/sys/src/9/port/devmntstats.c:38,44 – 1998/0917/sys/src/9/port/devmntstats.c:41,47 | ||
| 1998/0916 | } msalloc; static void | |
| 1998/0917 | _mntstats(int type, Chan *c, uvlong start, ulong bytes) | |
| 1998/0916 | { uint h; Mntstats **l, *m; | |
| 1998/0916/sys/src/9/port/devmntstats.c:82,87 – 1998/0917/sys/src/9/port/devmntstats.c:85,97 | ||
| 1998/0916 | m->n[type]++; x = elapsed; m->last100[type] = (m->last100[type]*127 + x)>>7; | |
| 1998/0917 | m->bytes[type] += bytes; if(bytes >= 8*1024){ m->bigtot[type] += elapsed; m->bign[type]++; m->bigbytes[type] += bytes; } | |
| 1998/0916 | } static int | |
| 1998/0916/sys/src/9/port/devmntstats.c:139,145 – 1998/0917/sys/src/9/port/devmntstats.c:149,155 | ||
| 1998/0916 | enum { | |
| 1998/0917 | Nline= 141, | |
| 1998/0916 | }; char *rpcname[Nrpc] = | |
| 1998/0916/sys/src/9/port/devmntstats.c:193,201 – 1998/0917/sys/src/9/port/devmntstats.c:203,212 | ||
| 1998/0916 | avg = m->tot[o]/m->n[o]; else avg = 0; | |
| 1998/0917 | sprint(xbuf, "%-8.8s %16.0llud %16.0llud %16.0llud %9.0lud %16.0llud %16.0llud %9.0lud %16.0llud %9.0lud\n", rpcname[o], m->hi[o], m->tot[o], m->bytes[o], m->n[o], m->bigtot[o], m->bigbytes[o], m->bign[o], avg, m->last100[o]); | |
| 1998/0916 | memmove(a, xbuf, Nline); a += Nline; o++; | |
| 1998/0917/sys/src/9/port/devmntstats.c:29,35 – 1998/1003/sys/src/9/port/devmntstats.c:29,34 (short | long) | ||
| 1998/0917 | uvlong bigtot[Nrpc]; /* cumulative time spent in big messages */ uvlong bigbytes[Nrpc]; /* cumulative bytes xfered in big messages */ ulong bign[Nrpc]; /* number of big messages */ | |
| 1998/0916 |
| |
| 1998/0917/sys/src/9/port/devmntstats.c:84,90 – 1998/1003/sys/src/9/port/devmntstats.c:83,88 | ||
| 1998/0916 | m->tot[type] += elapsed; m->n[type]++; x = elapsed; | |
| 1998/0917 | m->bytes[type] += bytes; if(bytes >= 8*1024){ | |
| 1998/0917/sys/src/9/port/devmntstats.c:149,155 – 1998/1003/sys/src/9/port/devmntstats.c:147,153 | ||
| 1998/0916 | enum { | |
| 1998/0917 |
| |
| 1998/1003 | Nline= 136, | |
| 1998/0916 | }; char *rpcname[Nrpc] = | |
| 1998/0917/sys/src/9/port/devmntstats.c:182,188 – 1998/1003/sys/src/9/port/devmntstats.c:180,185 | ||
| 1998/0916 | ulong o; char xbuf[Nline+1]; Mntstats *m; | |
| 1998/0917/sys/src/9/port/devmntstats.c:199,212 – 1998/1003/sys/src/9/port/devmntstats.c:196,205 | ||
| 1998/0916 | n = n/Nline; o = o/Nline; while(n > 0 && o < Nrpc){ | |
| 1998/0917 |
| |
| 1998/1003 | snprint(xbuf, sizeof(xbuf), "%-8.8s\t%20.0llud\n\t%20.0llud %20.0llud %9.0lud\n\t%20.0llud %20.0llud %9.0lud\n", rpcname[o], m->hi[o], m->tot[o], m->bytes[o], m->n[o], m->bigtot[o], m->bigbytes[o], m->bign[o]); | |
| 1998/0916 | memmove(a, xbuf, Nline); a += Nline; o++; | |
| 1998/1003/sys/src/9/port/devmntstats.c:45,51 – 1999/0211/sys/src/9/port/devmntstats.c:45,50 (short | long) | ||
| 1998/0916 | uint h; Mntstats **l, *m; uvlong elapsed; | |
| 1998/1003/sys/src/9/port/devmntstats.c:82,88 – 1999/0211/sys/src/9/port/devmntstats.c:81,86 | ||
| 1998/0916 | m->hi[type] = elapsed; m->tot[type] += elapsed; m->n[type]++; | |
| 1998/0917 | m->bytes[type] += bytes; if(bytes >= 8*1024){ | |
| 1999/0211/sys/src/9/port/devmntstats.c:97,102 – 1999/1230/sys/src/9/port/devmntstats.c:97,107 (short | long) | ||
| 1998/0916 | char name[NAMELEN]; Mntstats *m; | |
| 1999/1230 | if(i == DEVDOTDOT){ devdir(c, (Qid){CHDIR,0}, "#z", 0, eve, 0555, dp); return 1; } | |
| 1998/0916 | m = &msalloc.all[i]; if(i > Nms || m->inuse == 0) return -1; | |
| 1999/1230/sys/src/9/port/devmntstats.c:94,100 – 2001/0527/sys/src/9/port/devmntstats.c:94,99 (short | long) | ||
| 1998/0916 | mntstatsgen(Chan *c, Dirtab*, int, int i, Dir *dp) { Qid q; | |
| 1999/1230 | if(i == DEVDOTDOT){ | |
| 1999/1230/sys/src/9/port/devmntstats.c:107,114 – 2001/0527/sys/src/9/port/devmntstats.c:106,113 | ||
| 1998/0916 | return -1; q = (Qid){Qmntstat+i, 0}; | |
| 2001/0527 | snprint(up->genbuf, sizeof up->genbuf, "%C%lud.%lux", devtab[m->c.type]->dc, m->c.dev, m->c.qid.path); devdir(c, q, up->genbuf, 0, eve, 0666, dp); | |
| 1998/0916 | return 1; } | |