Annotation of cci/usr/src/etc/nstat/mbuf.c, revision 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.