示例#1
0
文件: main.c 项目: intrinseca/eaa
void spinUp()
{
    g_print("Spinning up Drive...\n");
    cdrom_set_speed(&cd, 1);
    cdrom_read(&cd, 0, 1000);
    cdrom_clear_cache(&cd);
}
示例#2
0
文件: main.c 项目: intrinseca/eaa
void timedRead(void *ptr)
{
    struct timedReadParams *params = ptr;

    //g_print("\treading %d sectors from offset sector %d\n", (*params).count, (*params).sector);

    cdrom_read(&cd, (*params).sector, (*params).count);
}
示例#3
0
文件: main.c 项目: intrinseca/eaa
void speedTest()
{
    int i;

    struct timedReadParams params;

    for(i = 1; i <= 52; i *= 2)
    {
        g_print("Spinning up Drive to %dx...\n", i);
        cdrom_set_speed(&cd, i);
        cdrom_read(&cd, 0, 1000);
        cdrom_clear_cache(&cd);

        params.sector = 0;
        params.count = 1000;

        g_print("\ttime: %f\n", stopwatch(timedRead, &params));
    }
}
示例#4
0
文件: main.c 项目: jgraef/meinOS
static ssize_t cdrom_devfs_read(devfs_dev_t *devfs,void *buf,size_t count,off_t offset) {
  struct cdrom_device *dev = devfs->user_data;

  size_t lba = offset/dev->block_size;
  size_t off = offset%dev->block_size;
  size_t count_rem = count;

  while (count_rem>0) {
    size_t count_cur = off+count_rem>dev->block_size?dev->block_size-off:count_rem;
    void *cdrom_buf = cdrom_read(dev,lba,1);
    memcpy(buf,cdrom_buf+off,count_cur);
    off = 0;
    lba++;
    count_rem -= count_cur;
    buf += count_cur;
  }

  return count;
}