|
|
1.1 root 1: /*
2: * Copyright (c) 1980 Regents of the University of California.
3: * All rights reserved. The Berkeley software License Agreement
4: * specifies the terms and conditions for redistribution.
5: */
6:
7: #ifndef lint
8: static char sccsid[] = "@(#)mbufs.c 5.2 (Berkeley) 12/11/85";
9: #endif not lint
10:
11: #include "systat.h"
12: #include <sys/mbuf.h>
13:
14: WINDOW *
15: openmbufs()
16: {
17:
18: return (subwin(stdscr, LINES-5-1, 0, 5, 0));
19: }
20:
21: closembufs(w)
22: WINDOW *w;
23: {
24:
25: if (w == NULL)
26: return;
27: wclear(w);
28: wrefresh(w);
29: delwin(w);
30: }
31:
32: struct mbstat *mb;
33:
34: labelmbufs()
35: {
36:
37: wmove(wnd, 0, 0); wclrtoeol(wnd);
38: mvwaddstr(wnd, 0, 10,
39: "/0 /5 /10 /15 /20 /25 /30 /35 /40 /45 /50 /55 /60");
40: }
41:
42: char *mtnames[] = {
43: "free",
44: "data",
45: "headers",
46: "sockets",
47: "pcbs",
48: "routes",
49: "hosts",
50: "arps",
51: "socknames",
52: "zombies",
53: "sockopts",
54: "frags",
55: "rights",
56: "ifaddrs",
57: };
58: #define NNAMES (sizeof (mtnames) / sizeof (mtnames[0]))
59:
60: showmbufs()
61: {
62: register int i, j, max, index;
63: char buf[10];
64:
65: if (mb == 0)
66: return;
67: for (j = 0; j < wnd->_maxy; j++) {
68: max = 0, index = -1;
69: for (i = 0; i < wnd->_maxy; i++)
70: if (mb->m_mtypes[i] > max) {
71: max = mb->m_mtypes[i];
72: index = i;
73: }
74: if (max == 0)
75: break;
76: if (j > NNAMES)
77: mvwprintw(wnd, 1+j, 0, "%10d", index);
78: else
79: mvwprintw(wnd, 1+j, 0, "%-10.10s", mtnames[index]);
80: wmove(wnd, 1 + j, 10);
81: if (max > 60) {
82: sprintf(buf, " %d", max);
83: max = 60;
84: while (max--)
85: waddch(wnd, 'X');
86: waddstr(wnd, buf);
87: } else {
88: while (max--)
89: waddch(wnd, 'X');
90: wclrtoeol(wnd);
91: }
92: mb->m_mtypes[index] = 0;
93: }
94: wmove(wnd, 1+j, 0); wclrtobot(wnd);
95: }
96:
97: static struct nlist nlst[] = {
98: #define X_MBSTAT 0
99: { "_mbstat" },
100: { "" }
101: };
102:
103: initmbufs()
104: {
105:
106: if (nlst[X_MBSTAT].n_type == 0) {
107: nlist("/vmunix", nlst);
108: if (nlst[X_MBSTAT].n_type == 0) {
109: error("namelist on /vmunix failed");
110: return(0);
111: }
112: }
113: if (mb == 0)
114: mb = (struct mbstat *)calloc(1, sizeof (*mb));
115: return(1);
116: }
117:
118: fetchmbufs()
119: {
120:
121: if (nlst[X_MBSTAT].n_type == 0)
122: return;
123: lseek(kmem, nlst[X_MBSTAT].n_value, L_SET);
124: read(kmem, mb, sizeof (*mb));
125: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.