|
|
1.1 ! root 1: /* test.c - main */ ! 2: ! 3: #include <conf.h> ! 4: #include <kernel.h> ! 5: #include <xebec.h> ! 6: #include <dtc.h> ! 7: #include <disk.h> ! 8: ! 9: #define NBLOCKS 200 ! 10: ! 11: /*------------------------------------------------------------------------ ! 12: * main -- test disk driver ! 13: *------------------------------------------------------------------------ ! 14: */ ! 15: main() ! 16: { ! 17: int w; /* nonzero for write test */ ! 18: int i, j; ! 19: char ch; ! 20: char buff[DBUFSIZ], buf2[DBUFSIZ]; ! 21: ! 22: kprintf("Type R for read-only test, W for read/write test: "); ! 23: while ( (ch=getc(CONSOLE)) != 'R' && ch!='W') ! 24: ; ! 25: w = ch=='W' ? 1 : 0; ! 26: if (w) ! 27: kprintf("\nPerforming read/write test\n\n"); ! 28: else ! 29: kprintf("\nPerforming only read test\n\n"); ! 30: kprintf("Test 1: read first %d blocks from disk.\n",NBLOCKS); ! 31: for (i=0 ; i<NBLOCKS ; i++) ! 32: if (NBLOCKS < 20) ! 33: kprintf("Read of block %d is %d\n",i,read(DISK0,buff,i)); ! 34: else ! 35: read(DISK0,buff,i); ! 36: if ( ! w ) { ! 37: kprintf("Finshed testing\n"); ! 38: return; ! 39: } ! 40: for (j=0 ; j< DBUFSIZ ; j++) ! 41: buf2[j] = 'X'; ! 42: kprintf("\nTest 2: write the first %d blocks\n",NBLOCKS); ! 43: for (i=0 ; i < NBLOCKS ; i++) ! 44: if (NBLOCKS < 20) ! 45: kprintf("Write of block %d is %d\n",i, ! 46: write(DISK0,dskcbuf(buf2),i)); ! 47: else ! 48: write(DISK0,dskcbuf(buf2),i); ! 49: kprintf("\nTest 3: read back and check first %d blocks\n",NBLOCKS); ! 50: for (i=0 ; i < NBLOCKS ; i++) { ! 51: for (j=0 ; j<DBUFSIZ ; j++) ! 52: buff[j] = '\01'; ! 53: if (NBLOCKS < 20) ! 54: kprintf("Read of block %d got %d\n",i,read(DISK0,buff,i)); ! 55: else ! 56: read(DISK0,buff,i); ! 57: for (j=0 ; j<DBUFSIZ ; j++) ! 58: if (buf2[j] != buff[j]) ! 59: kprintf("Error on byte %d 0%o->0%o\n", ! 60: j,buf2[j],buff[j]); ! 61: if (NBLOCKS < 20) ! 62: kprintf("Comparison done\n"); ! 63: } ! 64: kprintf("\n\nFinished all tests\n"); ! 65: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.