Commit | Line | Data |
---|---|---|
4376ba29 | 1 | #ifndef lint |
833d578b | 2 | static 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 |
8 | WINDOW * |
9 | openmbufs() | |
4376ba29 SL |
10 | { |
11 | ||
b5eefd1e | 12 | return (subwin(stdscr, LINES-5-1, 0, 5, 0)); |
4376ba29 SL |
13 | } |
14 | ||
d830bff6 SL |
15 | closembufs(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 |
26 | struct mbstat *mb; |
27 | ||
4376ba29 SL |
28 | labelmbufs() |
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 | 36 | char *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 | |
54 | showmbufs() | |
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 | |
91 | static struct nlist nlst[] = { | |
92 | #define X_MBSTAT 0 | |
93 | { "_mbstat" }, | |
94 | { "" } | |
95 | }; | |
96 | ||
97 | initmbufs() | |
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 | ||
111 | fetchmbufs() | |
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 | } |