Subversion Repositories shark

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1120 pj 1
/*
2
 *
3
 *
4
 *
5
 */
6
 
7
#include <ll/i386/cons.h>
8
#include <drivers/keyb.h>
9
 
10
#include <fs/bdevinit.h>
11
#include <fs/bdev.h>
12
 
13
#include <string.h>
14
 
15
#include "common.h"
16
 
17
#define DISKDEVICE "ide/hda1"
18
 
19
__uint8_t buffer[2048] __attribute__ ((aligned (4)));
20
__dev_t dev;
21
 
22
extern char *ide_error_msg[];
23
 
24
int main(int argc,char *argv[])
25
{
26
  __blkcnt_t blk;
27
  int res;
28
  int c;
29
 
30
  showmessage("This test try to read some blocks from first hard disk\n");
31
 
32
  dev=bdev_find_byname(DISKDEVICE);
33
  if (dev<0) {
34
    cprintf("Can't find device to operate with\n");
35
    return -1;
36
  }
37
  cprintf("Using device %s (dev=%04x)\n",DISKDEVICE,dev);
38
 
39
  blk=0;
40
  for (;;) {    
41
    cprintf("Commands: x-exit r-read n-next block p-prev block\n");
42
    c = keyb_getchar();
43
    switch(c) {
44
      case 'x':
45
        return 0;
46
 
47
      case 'n':
48
        blk++;
49
        cprintf("Block %li\n",(long)blk);
50
        break;
51
 
52
      case 'p':
53
        if (blk>=0) blk--;
54
        cprintf("Block %li\n",(long)blk);
55
        break;
56
 
57
      case 'r':
58
        cprintf("Reading block %li...\n",(long)blk);
59
        memset(buffer,0xff,sizeof(buffer));
60
        res=bdev_read(dev,blk,buffer);
61
        cprintf("Result %i\n",res);
62
        //cprintf("Soft reset done %i\n",ide[0].errors);
63
        if (res!=0) {
64
          cprintf("  %s\n",(char*)ide_error_msg[-res]);
65
        }
66
        debug_dump_buffer(buffer,64);
67
        break;
68
 
69
      default:
70
        cprintf("Invalid command!\n");
71
        break;
72
    }
73
    cprintf("\n");
74
  }
75
 
76
  return 0;
77
}