Annotation of researchv10no/cmd/dkstat.c, revision 1.1.1.1

1.1       root        1: #include <sys/dkstat.h>
                      2: #include <nlist.h>
                      3: #include <ctype.h>
                      4: 
                      5: struct nlist nl[] ={
                      6:        {"_dkstat"},
                      7:        {"_dk"},
                      8:        {"_ndkline"},
                      9:        { "" },
                     10: };
                     11: 
                     12: int    mem;
                     13: int    every;
                     14: 
                     15: int    val;
                     16: long   total;
                     17: char   *sys = "/unix";
                     18: char   *core = "/dev/kmem";
                     19: struct dkstat  dko, dkn;
                     20: int    cflag;
                     21: 
                     22: #define        R(m, f) if (dko.f != dkn.f) printf("%8D  %s\n", (long)(dkn.f-dko.f), m)
                     23: 
                     24: main(argc, argv)
                     25: char **argv;
                     26: {
                     27:        int i;
                     28: 
                     29:        if (argc>1 && strcmp(argv[1], "-c")==0) {
                     30:                cflag++;
                     31:                argc--;
                     32:                argv++;
                     33:        }
                     34:        if (argc>1 && isdigit(argv[1][0])) {
                     35:                every = atoi(argv[1]);
                     36:                argc--;
                     37:                argv++;
                     38:        }
                     39:        if (argc > 1)
                     40:                sys = argv[1];
                     41:        if (argc > 2)
                     42:                core = argv[2];
                     43:        nlist(sys, nl);
                     44:        if (nl[0].n_value <= 0) {
                     45:                printf("No namelist in %s\n", sys);
                     46:                exit(1);
                     47:        }
                     48:        mem = open(core, 0);
                     49:        if (mem < 0) {
                     50:                printf("can't open %s\n", core);
                     51:                exit(1);
                     52:        }
                     53:        if (cflag) {
                     54:                int ndkline = 0, i;
                     55:                struct dk {
                     56:                        int     *q;
                     57:                        char    chan;
                     58:                        char    state;
                     59:                } dk[64];
                     60: 
                     61:                lseek(mem, (long)nl[2].n_value, 0);
                     62:                read(mem, (char *)&ndkline, sizeof(ndkline));
                     63:                if (ndkline<=0 || ndkline>=64)
                     64:                        ndkline = 32;
                     65:                lseek(mem, (long)nl[1].n_value, 0);
                     66:                read(mem, (char *)dk, sizeof(dk));
                     67:                for (i=0; i<ndkline; i++)
                     68:                        if (dk[i].state)
                     69:                                printf("%d      %c\n", i, "xrlo"[dk[i].state]);
                     70:        }
                     71:        for (;;) {
                     72:                lseek(mem, (long)nl[0].n_value, 0);
                     73:                read(mem, (char *)&dkn, sizeof(dkn));
                     74:                R("in", input);
                     75:                R("out", output);
                     76:                R("mark fault", markflt);
                     77:                R("mark parity", markparity);
                     78:                R("packets on closed channels", closepack);
                     79:                R("packets on channel 0", pack0);
                     80:                R("packets on peculiar channels", packstrange);
                     81:                R("short packets", shortpack);
                     82:                R("parity", parity);
                     83:                R("T_CHG on peculiar channel", chgstrange);
                     84:                R("packets on hung-up channels", notclosed);
                     85:                R("IS_CLOSED packets on open channels", isclosed);
                     86:                R("dkp retransmissions", dkprxmit);
                     87:                R("dkp trailer size rejects", dkprjtrs);
                     88:                R("dkp message size rejects", dkprjpks);
                     89:                R("dkp seq number rejects", dkprjseq);
                     90:                if (every == 0)
                     91:                        break;
                     92:                printf("\n");
                     93:                sleep(every);
                     94:                dko = dkn;
                     95:        }
                     96:        return(0);
                     97: }

unix.superglobalmegacorp.com

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