1 | /*
2 | blktest.c
3 | ---------
4 | Test driver for the block device simulator.
5 |
6 | $Id: blktest.c,v 1.3 2003/07/06 12:28:03 stewart Exp $
7 |
8 | (C)2003 Stewart Smith
9 | Distributed under the GNU Public License
10 | */
11 |
12 | #include "block_dev.h"
13 | #include <stdio.h>
14 | #include <stdlib.h>
15 | #include <unistd.h>
16 |
17 | int main(int argc,char* argv[])
18 | {
19 | struct block_device b;
20 | struct buffer_head* bh;
21 | int a;
22 | int i;
23 | int bsize = atoi(argv[2]);
24 |
25 | if(argc<3)
26 | {
27 | fprintf(stderr,"Usage:\n\t./blktest device blocksize blockcount\n\n");
28 | exit(0);
29 | }
30 |
31 | block_dev_init();
32 | block_dev_new(&b,argv[1],atoi(argv[2]),atoi(argv[3]));
33 |
34 | for(i=0;i<atoi(argv[3])/2;i++)
35 | {
36 | bh = bread(&b,i,atoi(argv[2]));
37 | a = write(STDOUT_FILENO,bh->b_data,bh->b_size);
38 | }
39 |
40 | for(i=atoi(argv[3])/4;i<atoi(argv[3])/2;i++)
41 | {
42 | bh = bread(&b,i,atoi(argv[2]));
43 | a = write(STDOUT_FILENO,bh->b_data,bh->b_size);
44 | }
45 |
46 | for(i=0;i<atoi(argv[3]);i++)
47 | {
48 | bh = bread(&b,i,atoi(argv[2]));
49 | a = write(STDOUT_FILENO,bh->b_data,bh->b_size);
50 | }
51 |
52 | for(i=atoi(argv[3])/4;i<atoi(argv[3])/2;i++)
53 | {
54 | bh = bread(&b,i,atoi(argv[2]));
55 | a = write(STDOUT_FILENO,bh->b_data,bh->b_size);
56 | }
57 |
58 | bh = bread(&b,0,bsize);
59 | set_buffer_dirty(bh);
60 | strcpy(bh->b_data,"Shut your fucking face, Uncle Fucker.");
61 | submit_bh(WRITE,bh);
62 |
63 | return 0;
64 | }