Subversion Repositories shark

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

/*
 *
 *
 *
 */


#include <ll/i386/cons.h>
#include <drivers/keyb.h>

#include <fs/bdevinit.h>
#include <fs/bdev.h>

#include <string.h>

#include "common.h"

#define DISKDEVICE "ide/hda1"
#define BLOCKNUMBER 58549

__uint8_t buffer[2048] __attribute__ ((aligned (4)));

extern char *ide_error_msg[];

int main(int argc,char *argv[])
{
  __dev_t dev;
  __blkcnt_t blk;
  int res;
  //  int c;

  showmessage("This test tries to read a block from the first hard disk\n"
              "and then it tries to write it to disk\n"
              "Press [CTRL-C] to abort...");
 
  dev=bdev_find_byname(DISKDEVICE);
  if ((int)dev<0) {
    cprintf("Can't find device to operate with\n");
    cprintf("%s not present!\n",DISKDEVICE);
    return -1;
  }
  cprintf("Using device %s (dev=%04x)\n",DISKDEVICE,dev);
 
  blk=BLOCKNUMBER;

  cprintf("Reading block %li...\n",(long)blk);
  memset(buffer,0xff,sizeof(buffer));
  res=bdev_read(dev,blk,buffer);
  cprintf("Result %i\n",res);
  //cprintf("Soft reset done %i\n",ide[0].errors);
  if (res!=0) {
    cprintf("  %s\n",(char*)ide_error_msg[-res]);
    return -1;
  }
  debug_dump_buffer(buffer,64);

  cprintf("Writing block %li...\n",(long)blk);
  res=bdev_write(dev,blk,buffer);
  cprintf("Result %i\n",res);
  //cprintf("Soft reset done %i\n",ide[0].errors);
  if (res!=0) {
    cprintf("  %s\n",(char*)ide_error_msg[-res]);
  }

  waitend();
  return 0;
}