1 #ifndef lint 2 static char sccsid[] = "@(#)mbufs.c 1.6 (Berkeley) 05/01/85"; 3 #endif 4 5 #include "systat.h" 6 #include <sys/mbuf.h> 7 8 WINDOW * 9 openmbufs() 10 { 11 12 return (subwin(stdscr, LINES-5-1, 0, 5, 0)); 13 } 14 15 closembufs(w) 16 WINDOW *w; 17 { 18 19 if (w == NULL) 20 return; 21 wclear(w); 22 wrefresh(w); 23 delwin(w); 24 } 25 26 struct mbstat *mb; 27 28 labelmbufs() 29 { 30 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"); 34 } 35 36 char *mtnames[] = { 37 "free", 38 "data", 39 "headers", 40 "sockets", 41 "pcbs", 42 "routes", 43 "hosts", 44 "arps", 45 "socknames", 46 "zombies", 47 "sockopts", 48 "frags", 49 "rights", 50 "ifaddrs", 51 }; 52 #define NNAMES (sizeof (mtnames) / sizeof (mtnames[0])) 53 54 showmbufs() 55 { 56 register int i, j, max, index; 57 char buf[10]; 58 59 if (mb == 0) 60 return; 61 for (j = 0; j < wnd->_maxy; j++) { 62 max = 0, index = -1; 63 for (i = 0; i < wnd->_maxy; i++) 64 if (mb->m_mtypes[i] > max) { 65 max = mb->m_mtypes[i]; 66 index = i; 67 } 68 if (max == 0) 69 break; 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) { 76 sprintf(buf, " %d", max); 77 max = 60; 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 } 88 wmove(wnd, 1+j, 0); wclrtobot(wnd); 89 } 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 } 119