Changeset View
Changeset View
Standalone View
Standalone View
sys/boot/userboot/userboot/userboot_disk.c
Show First 20 Lines • Show All 85 Lines • ▼ Show 20 Lines | userdisk_init(void) | ||||
userdisk_maxunit = userboot_disk_maxunit; | userdisk_maxunit = userboot_disk_maxunit; | ||||
if (userdisk_maxunit > 0) { | if (userdisk_maxunit > 0) { | ||||
ud_info = malloc(sizeof(*ud_info) * userdisk_maxunit); | ud_info = malloc(sizeof(*ud_info) * userdisk_maxunit); | ||||
if (ud_info == NULL) | if (ud_info == NULL) | ||||
return (ENOMEM); | return (ENOMEM); | ||||
for (i = 0; i < userdisk_maxunit; i++) { | for (i = 0; i < userdisk_maxunit; i++) { | ||||
if (CALLBACK(diskioctl, i, DIOCGSECTORSIZE, | if (CALLBACK(diskioctl, i, DIOCGSECTORSIZE, | ||||
§orsize) != NULL || CALLBACK(diskioctl, i, | §orsize) != 0 || CALLBACK(diskioctl, i, | ||||
DIOCGMEDIASIZE, &mediasize) != NULL) | DIOCGMEDIASIZE, &mediasize) != 0) | ||||
return (ENXIO); | return (ENXIO); | ||||
ud_info[i].mediasize = mediasize; | ud_info[i].mediasize = mediasize; | ||||
ud_info[i].sectorsize = sectorsize; | ud_info[i].sectorsize = sectorsize; | ||||
ud_info[i].ud_open = 0; | ud_info[i].ud_open = 0; | ||||
ud_info[i].ud_bcache = NULL; | ud_info[i].ud_bcache = NULL; | ||||
} | } | ||||
} | } | ||||
bcache_add_dev(userdisk_maxunit); | bcache_add_dev(userdisk_maxunit); | ||||
▲ Show 20 Lines • Show All 121 Lines • ▼ Show 20 Lines | if (rsize) | ||||
*rsize = size - resid; | *rsize = size - resid; | ||||
return (0); | return (0); | ||||
} | } | ||||
static int | static int | ||||
userdisk_ioctl(struct open_file *f, u_long cmd, void *data) | userdisk_ioctl(struct open_file *f, u_long cmd, void *data) | ||||
{ | { | ||||
struct disk_devdesc *dev; | struct disk_devdesc *dev; | ||||
int rc; | |||||
dev = (struct disk_devdesc *)f->f_devdata; | dev = (struct disk_devdesc *)f->f_devdata; | ||||
rc = disk_ioctl(dev, cmd, data); | |||||
if (rc != ENOTTY) | |||||
return (rc); | |||||
return (CALLBACK(diskioctl, dev->d_unit, cmd, data)); | return (CALLBACK(diskioctl, dev->d_unit, cmd, data)); | ||||
} | } |