struct device*
probe_boot_medium()
{
- struct device* block_cat = device_getbyname(NULL, "block", 5);
+ struct device_meta* block_cat = device_getbyname(NULL, "block", 5);
if (!block_cat) {
return NULL;
}
struct iso_vol_primary* volp = valloc(ISO9660_BLKSZ);
- struct device *pos, *n;
+ struct device* dev = NULL;
+ struct device_meta *pos, *n;
llist_for_each(pos, n, &block_cat->children, siblings)
{
+ dev = resolve_device(pos);
+ if (!dev) {
+ continue;
+ }
+
int errno =
- pos->ops.read(pos, (void*)volp, ISO9660_READ_OFF, ISO9660_BLKSZ);
+ dev->ops.read(dev, (void*)volp, ISO9660_READ_OFF, ISO9660_BLKSZ);
if (errno < 0) {
- kprintf(KWARN "can not probe %x:%s (%d)\n",
- pos->dev_id,
- pos->name.value,
- errno);
- pos = NULL;
+ kprintf(KINFO "failed %xh:%xh, /dev/%s",
+ dev->ident.fn_grp,
+ dev->ident.unique,
+ dev->name.value);
+ dev = NULL;
goto done;
}
}
if (*(u32_t*)volp->sys_id == LUNAIX_ID) {
- kprintf(KINFO "[%x:%s] %s\n",
- pos->dev_id,
- pos->name.value,
+ kprintf(KINFO "%xh:%xh, /dev/%s, %s",
+ dev->ident.fn_grp,
+ dev->ident.unique,
+ dev->name.value,
(char*)volp->vol_id);
break;
}
done:
vfree(volp);
- return pos;
+ return dev;
}
\ No newline at end of file