int dev_no;
/* Initialize channel. */
- snprintf (c->name, sizeof c->name, "hd%zd", chan_no);
+ snprintf (c->name, sizeof c->name, "hd%zu", chan_no);
switch (chan_no)
{
case 0:
return d->capacity;
}
+/* Returns a human-readable name for disk D. */
+const char *
+disk_name (struct disk *d)
+{
+ ASSERT (d != NULL);
+
+ return d->name;
+}
+
/* Reads sector SEC_NO from disk D into BUFFER, which must have
room for DISK_SECTOR_SIZE bytes. */
void
/* Issue soft reset sequence, which selects device 0 as a side effect.
Also enable interrupts. */
outb (reg_ctl (c), 0);
- timer_sleep (timer_us2ticks (10));
+ timer_usleep (10);
outb (reg_ctl (c), CTL_SRST);
- timer_sleep (timer_us2ticks (10));
+ timer_usleep (10);
outb (reg_ctl (c), 0);
- timer_sleep (timer_ms2ticks (150));
+ timer_msleep (150);
/* Wait for device 0 to clear BSY. */
if (present[0])
{
if (inb (reg_nsect (c)) == 1 && inb (reg_lbal (c)) == 1)
break;
- timer_sleep (timer_ms2ticks (10));
+ timer_msleep (10);
}
wait_while_busy (&c->devices[1]);
}
/* Print identification message. */
printf ("%s: detected %'"PRDSNu" sector (", d->name, d->capacity);
- if (d->capacity > 1024 / DISK_SECTOR_SIZE * 1024 * 1024)
- printf ("%"PRDSNu" GB",
- d->capacity / (1024 / DISK_SECTOR_SIZE * 1024 * 1024));
- else if (d->capacity > 1024 / DISK_SECTOR_SIZE * 1024)
- printf ("%"PRDSNu" MB", d->capacity / (1024 / DISK_SECTOR_SIZE * 1024));
- else if (d->capacity > 1024 / DISK_SECTOR_SIZE)
- printf ("%"PRDSNu" kB", d->capacity / (1024 / DISK_SECTOR_SIZE));
- else
- printf ("%"PRDSNu" byte", d->capacity * DISK_SECTOR_SIZE);
+ print_human_readable_size ((uint64_t) d->capacity * DISK_SECTOR_SIZE);
printf (") disk, model \"");
print_ata_string ((char *) &id[27], 40);
printf ("\", serial \"");
{
if ((inb (reg_status (d->channel)) & (STA_BSY | STA_DRQ)) == 0)
return;
- timer_sleep (timer_us2ticks (10));
+ timer_usleep (10);
}
printf ("%s: idle timeout\n", d->name);
printf ("ok\n");
return (inb (reg_alt_status (c)) & STA_DRQ) != 0;
}
- timer_sleep (timer_ms2ticks (10));
+ timer_msleep (10);
}
printf ("failed\n");
dev |= DEV_DEV;
outb (reg_device (c), dev);
inb (reg_alt_status (c));
- timer_sleep (timer_ns2ticks (400));
+ timer_nsleep (400);
}
/* Select disk D in its channel, as select_device(), but wait for