|
|
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.