|
|
1.1 ! root 1: ! 2: #include <stdio.h> ! 3: #include <sys/types.h> ! 4: #include <sys/buf.h> ! 5: #include <sys/drreg.h> ! 6: #include <sys/ioctl.h> ! 7: ! 8: struct dr11io drio; ! 9: ! 10: /* ! 11: * usage: dstat [-l] [-t second] [unitno] ! 12: */ ! 13: main(argc,argv) ! 14: long argc; ! 15: char *argv[]; ! 16: { register long fd; ! 17: long loop = 0; ! 18: long cmd = 0, unit = 0; ! 19: char *DR11 = "/dev/dr11"; ! 20: ! 21: fd = open(DR11,2); ! 22: if (fd == -1) { ! 23: fprintf(stderr,"\ndstat: cannot open %s, ",DR11); ! 24: perror(""); ! 25: exit(1); ! 26: } ! 27: if (argc > 1) { ! 28: if (argc > 5) { ! 29: usage(); ! 30: exit(0); ! 31: } ! 32: for (argc--,argv++;argc;argc--, argv++) { ! 33: if (argv[0][0]=='-') { ! 34: switch (argv[0][1]) { ! 35: case 'l': ! 36: cmd = 1; /* lpback test */ ! 37: break; ! 38: case 't': ! 39: sscanf(argv[1],"%ld",&loop); ! 40: argc--; argv++; ! 41: break; ! 42: default: ! 43: usage(); ! 44: exit(0); ! 45: } ! 46: } ! 47: else { ! 48: sscanf(argv[0],"%ld",&unit); ! 49: } ! 50: } ! 51: drio.arg[0] = unit; ! 52: } ! 53: if (cmd) ! 54: lpback(fd,unit,loop); ! 55: else ! 56: stat(fd,unit,loop); ! 57: close(fd); ! 58: } ! 59: ! 60: stat(fd,unit,loop) ! 61: register long fd,unit,loop; ! 62: { register long err; ! 63: ! 64: again: ! 65: drio.arg[0] = unit; ! 66: err = ioctl(fd,DR11STAT,(caddr_t)&drio); ! 67: if (err) { ! 68: fprintf(stderr,"\ndstat: cannot ioctl unit %d",unit); ! 69: perror(" "); ! 70: exit(0); ! 71: } ! 72: prdrio(&drio,unit); ! 73: if (loop > 0) { ! 74: sleep(loop); ! 75: goto again; ! 76: } ! 77: } ! 78: ! 79: lpback(fd,unit,loop) ! 80: register long fd,unit,loop; ! 81: { ! 82: ! 83: lpagain: ! 84: lptest(fd,unit); ! 85: if (loop > 0) { ! 86: sleep(loop); ! 87: goto lpagain; ! 88: } ! 89: } ! 90: ! 91: lptest(fd,unit) ! 92: register long fd,unit; ! 93: { register long err; ! 94: ! 95: drio.arg[0] = unit; ! 96: err = ioctl(fd,DR11STAT,(caddr_t)&drio); ! 97: if (err) { ! 98: fprintf(stderr,"\ndstat: cannot ioctl unit %d",unit); ! 99: perror(" "); ! 100: exit(0); ! 101: } ! 102: prdrio(&drio,unit); ! 103: ! 104: printf("\n ---- Perform loopback test ----"); ! 105: drio.arg[0] = unit; ! 106: ioctl(fd,DR11LOOP,(caddr_t)&drio); ! 107: printf("\n Done...."); ! 108: ! 109: drio.arg[0] = unit; ! 110: ioctl(fd,DR11STAT,(caddr_t)&drio); ! 111: prdrio(&drio,unit); ! 112: } ! 113: ! 114: ! 115: prdrio(drio,unit) ! 116: struct dr11io *drio; ! 117: long unit; ! 118: { ! 119: printf("\n\t------------- DR11 unit %ld Status ------------",unit); ! 120: printf("\n\t dr_flags CSR istat idata modvec dmacnt hiadr loadr"); ! 121: printf("\n\t %04lx %04lx %04lx %04lx %04lx %04ld %04lx %04lx", ! 122: drio->arg[0],drio->arg[1],drio->arg[2],drio->arg[3] & 0xffff, ! 123: drio->arg[4],drio->arg[5],drio->arg[6],drio->arg[7]); ! 124: printf("\n"); ! 125: } ! 126: ! 127: usage() ! 128: { ! 129: printf("\nusage: dstat [-l] [unit] [second]"); ! 130: printf("\n\t-l: do loopback test"); ! 131: printf("\n\tunit: controller no"); ! 132: printf("\n\tsecond: interval to perform command"); ! 133: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.