Add copyright
[unix-history] / usr / src / usr.bin / systat / mbufs.c
CommitLineData
4376ba29 1#ifndef lint
833d578b 2static char sccsid[] = "@(#)mbufs.c 1.6 (Berkeley) %G%";
4376ba29
SL
3#endif
4
5#include "systat.h"
6#include <sys/mbuf.h>
7
d830bff6
SL
8WINDOW *
9openmbufs()
4376ba29
SL
10{
11
b5eefd1e 12 return (subwin(stdscr, LINES-5-1, 0, 5, 0));
4376ba29
SL
13}
14
d830bff6
SL
15closembufs(w)
16 WINDOW *w;
4376ba29
SL
17{
18
d830bff6
SL
19 if (w == NULL)
20 return;
d830bff6
SL
21 wclear(w);
22 wrefresh(w);
b5eefd1e 23 delwin(w);
4376ba29
SL
24}
25
d830bff6
SL
26struct mbstat *mb;
27
4376ba29
SL
28labelmbufs()
29{
30
b5eefd1e
SL
31 wmove(wnd, 0, 0); wclrtoeol(wnd);
32 mvwaddstr(wnd, 0, 10,
33 "/0 /5 /10 /15 /20 /25 /30 /35 /40 /45 /50 /55 /60");
4376ba29
SL
34}
35
b5eefd1e 36char *mtnames[] = {
4376ba29
SL
37 "free",
38 "data",
39 "headers",
40 "sockets",
41 "pcbs",
42 "routes",
43 "hosts",
44 "arps",
45 "socknames",
46 "zombies",
47 "sockopts",
48 "frags",
2081a3b4
SL
49 "rights",
50 "ifaddrs",
4376ba29 51};
b5eefd1e 52#define NNAMES (sizeof (mtnames) / sizeof (mtnames[0]))
4376ba29
SL
53
54showmbufs()
55{
56 register int i, j, max, index;
57 char buf[10];
58
59 if (mb == 0)
60 return;
b5eefd1e 61 for (j = 0; j < wnd->_maxy; j++) {
4376ba29 62 max = 0, index = -1;
b5eefd1e 63 for (i = 0; i < wnd->_maxy; i++)
4376ba29
SL
64 if (mb->m_mtypes[i] > max) {
65 max = mb->m_mtypes[i];
66 index = i;
67 }
68 if (max == 0)
69 break;
b5eefd1e
SL
70 if (j > NNAMES)
71 mvwprintw(wnd, 1+j, 0, "%10d", index);
72 else
73 mvwprintw(wnd, 1+j, 0, "%-10.10s", mtnames[index]);
74 wmove(wnd, 1 + j, 10);
75 if (max > 60) {
4376ba29 76 sprintf(buf, " %d", max);
b5eefd1e 77 max = 60;
4376ba29
SL
78 while (max--)
79 waddch(wnd, 'X');
80 waddstr(wnd, buf);
81 } else {
82 while (max--)
83 waddch(wnd, 'X');
84 wclrtoeol(wnd);
85 }
86 mb->m_mtypes[index] = 0;
87 }
b5eefd1e 88 wmove(wnd, 1+j, 0); wclrtobot(wnd);
4376ba29 89}
d830bff6
SL
90
91static struct nlist nlst[] = {
92#define X_MBSTAT 0
93 { "_mbstat" },
94 { "" }
95};
96
97initmbufs()
98{
99
100 if (nlst[X_MBSTAT].n_type == 0) {
101 nlist("/vmunix", nlst);
102 if (nlst[X_MBSTAT].n_type == 0) {
103 error("namelist on /vmunix failed");
104 return;
105 }
106 }
107 if (mb == 0)
108 mb = (struct mbstat *)calloc(1, sizeof (*mb));
109}
110
111fetchmbufs()
112{
113
114 if (nlst[X_MBSTAT].n_type == 0)
115 return;
116 lseek(kmem, nlst[X_MBSTAT].n_value, L_SET);
117 read(kmem, mb, sizeof (*mb));
118}