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