Annotation of cci/usr/src/etc/nstat/enpbuf.c, revision 1.1

1.1     ! root        1: /*                                                             */
        !             2: /*     if_enp: ACC VERSAbus Ethernet controler (v/eiu)         */
        !             3: /*                                                             */
        !             4: 
        !             5: #include <stdio.h>
        !             6: #include <sys/types.h>
        !             7: #include <sys/socket.h>
        !             8: #include <sys/errno.h>
        !             9: 
        !            10: #include <net/if.h>
        !            11: #include <net/netisr.h>
        !            12: #include <net/route.h>
        !            13: #include <netinet/in.h>
        !            14: #include <netinet/ip_var.h>
        !            15: #include <netinet/if_ether.h>
        !            16: 
        !            17: #include <machine/mtpr.h>
        !            18: #include <tahoeif/if_enp.h> 
        !            19: #include <sys/buf.h>
        !            20: #include <vba/vbavar.h>
        !            21: #include <nlist.h>
        !            22: #include "nstat.h"
        !            23: 
        !            24: struct nlist   enpbufnl[] = {
        !            25: #                      define  N_RINGADDR      0       
        !            26:        { "_ring_addr"},
        !            27: #                      define  N_NUMENP        1
        !            28:        { "_numenp" },
        !            29:        { "" },
        !            30: };
        !            31: 
        !            32: #define NENP           6
        !            33: #define        NOFRINGS        4
        !            34: RING32 ring[NOFRINGS]; /* 4 rings per enp */
        !            35: 
        !            36: extern int     kmem;
        !            37: extern int     vmem;
        !            38: extern char    *system;
        !            39: 
        !            40: extern char    *vmemf; 
        !            41: int    vmem;
        !            42: 
        !            43: char   ringname[4][20] =
        !            44:        {
        !            45:                "toenp",
        !            46:                "hostfree",
        !            47:                "tohost",
        !            48:                "enpfree",
        !            49:        };
        !            50: 
        !            51: enpbuf(unit)
        !            52: int unit;
        !            53: {
        !            54:        int     i, j, num;
        !            55: 
        !            56:        RING32                  *rp;
        !            57:        long                    ring_addr[NENP]; /* addrs of stat areas */
        !            58:        struct  sockaddr_in     *sin;
        !            59: 
        !            60:        off_t   numdev_memaddr;
        !            61:        off_t   ring_memaddr;
        !            62: 
        !            63:        static  int     getvm = 0;
        !            64: 
        !            65:        if (!getvm) {
        !            66:                nlist(system, enpbufnl);
        !            67:                getvm = 1;
        !            68:        }
        !            69: 
        !            70:        numdev_memaddr = enpbufnl[N_NUMENP].n_value;
        !            71:        ring_memaddr = enpbufnl[N_RINGADDR].n_value; /* versa bus address */
        !            72: 
        !            73:        if (numdev_memaddr==0 || ring_memaddr == 0) {
        !            74:                printf("enpbuf: symbol not in namelist\n");
        !            75:                return(1);
        !            76:        }
        !            77: 
        !            78:        klseek(kmem, numdev_memaddr, 0);
        !            79:        read(kmem, (char *)&num, sizeof (num));
        !            80: 
        !            81:        if ((num < 0) || (num > NENP)) {  
        !            82:                printf("enpbuf: invalid number of devices (num = %d)\n", num);
        !            83:                return(1);
        !            84:        }
        !            85:        if (num == 0) {  
        !            86:                printf("enpbuf: no enp (driver) installed.\n");
        !            87:                return(1);
        !            88:        }
        !            89:        if (unit > num) {
        !            90:                        printf("enpbuf: invalid device no.(unit=%d)\n", unit);
        !            91:                        return;
        !            92:        } else
        !            93:                num = unit + 1;         /* print only once for dev-> unit */
        !            94: 
        !            95:        klseek(kmem, ring_memaddr, 0);
        !            96:        read(kmem, (char *)ring_addr, sizeof(long)*num);
        !            97: 
        !            98:        vmem = open(vmemf, 0);
        !            99:        if (vmem < 0) {
        !           100:                printf("enpbuf: cannot open ");
        !           101:                perror(vmemf);
        !           102:                return(1);
        !           103:        }
        !           104:        lseek(vmem, (off_t)ring_addr[unit], 0);
        !           105:        read(vmem, (char *)&ring[0], sizeof(RING32)*4);
        !           106: 
        !           107:        close(vmem);
        !           108: 
        !           109:        printf("%-20s %-10s %-10s\n", "ring name", "rdidx", "wrtidx");
        !           110: 
        !           111:        for (i = 0; i < NOFRINGS; i++) {
        !           112:                register int slot, addr;
        !           113: 
        !           114:                printf("-------------------------------------\n");
        !           115:                rp = (RING32 *)&ring[i];
        !           116:                printf("%-20s %-10d %-10d\n", ringname[i],
        !           117:                        rp->r_rdidx, rp->r_wrtidx);
        !           118:                printf("-------------------------------------\n");
        !           119:                for (slot = 0; slot < 32; slot++) {
        !           120:                        addr = rp->r_slot[ slot ];
        !           121:                        printf("%x  ", addr );
        !           122:                }
        !           123:        }
        !           124: }

unix.superglobalmegacorp.com

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