Annotation of cci/usr/src/etc/nstat/mbuf.c, revision 1.1.1.1

1.1       root        1: #ifndef lint
                      2: static char sccsid[] = "@(#)mbuf.c     4.5 82/12/18";
                      3: #endif
                      4: 
                      5: #include <sys/param.h>
                      6: #include <sys/mbuf.h>
                      7: #include <nlist.h>
                      8: #include "nstat.h"
                      9: 
                     10: struct nlist mbufnl[] = {
                     11: #                      define  N_MBSTAT        0
                     12:        { "_mbstat" },
                     13:        { "" },
                     14: };
                     15: struct mbstat mbstat;
                     16: 
                     17: 
                     18: static struct mbtypes {
                     19:        int     mt_type;
                     20:        char    *mt_name;
                     21: } mbtypes[] = {
                     22:        { MT_DATA,      "data" },
                     23:        { MT_HEADER,    "packet headers" },
                     24:        { MT_SOCKET,    "socket structures" },
                     25:        { MT_PCB,       "protocol control blocks" },
                     26:        { MT_RTABLE,    "routing table entries" },
                     27:        { MT_HTABLE,    "IMP host table entries" },
                     28: #ifdef notdef
                     29:        { MT_ATABLE,    "address resolution tables" },
                     30: #endif
                     31:        { MT_FTABLE,    "fragment reassembly queue headers" },
                     32:        { MT_SONAME,    "socket names and addresses" },
                     33:        { MT_ZOMBIE,    "zombie process information" },
                     34:        { MT_SOOPTS,    "socket options" },
                     35:        { 0, 0 }
                     36: };
                     37: 
                     38: extern int     kmem;
                     39: extern char    *system;
                     40: /*
                     41:  * Print mbuf statistics.
                     42:  */
                     43: mbpr()
                     44: {
                     45:        off_t   mbaddr;
                     46:        register int totmem, totfree, totmbufs;
                     47:        register struct mbtypes *mp;
                     48: 
                     49:        static  int     getvm;
                     50: 
                     51:        if (!getvm) {
                     52:                nlist(system, mbufnl);
                     53:                ++getvm;
                     54:        }
                     55:        mbaddr = mbufnl[N_MBSTAT].n_value;
                     56:        if (mbaddr == 0) {
                     57:                printf("mbstat: symbol not in namelist\n");
                     58:                return;
                     59:        }
                     60: 
                     61:        klseek(kmem, mbaddr, 0);
                     62:        if (read(kmem, &mbstat, sizeof (mbstat)) != sizeof (mbstat)) {
                     63:                printf("mbstat: bad read\n");
                     64:                return;
                     65:        }
                     66:        printf("%d/%d mbufs in use:\n",
                     67:                mbstat.m_mbufs - mbstat.m_mbfree, mbstat.m_mbufs);
                     68:        totmbufs = 0;
                     69:        for (mp = mbtypes; mp->mt_name; mp++)
                     70:                if (mbstat.m_mtypes[mp->mt_type]) {
                     71:                        printf("\t%d mbufs allocated to %s\n",
                     72:                                mbstat.m_mtypes[mp->mt_type], mp->mt_name);
                     73:                        totmbufs += mbstat.m_mtypes[mp->mt_type];
                     74:                }
                     75:        if (totmbufs != mbstat.m_mbufs - mbstat.m_mbfree)
                     76:                printf("*** %d mbufs missing ***\n",
                     77:                        (mbstat.m_mbufs - mbstat.m_mbfree) - totmbufs);
                     78:        printf("%d/%d mapped pages in use\n",
                     79:                mbstat.m_clusters - mbstat.m_clfree, mbstat.m_clusters);
                     80:        totmem = mbstat.m_mbufs * MSIZE + mbstat.m_clusters * CLBYTES;
                     81:        totfree = mbstat.m_mbfree * MSIZE + mbstat.m_clusters * CLBYTES;
                     82:        printf("%d Kbytes allocated to network (%d%% in use)\n",
                     83:                totmem / 1024, (totmem - totfree) * 100 / totmem);
                     84:        printf("%d requests for memory denied\n", mbstat.m_drops);
                     85: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.