mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-06 09:13:55 -06:00
kill drives_table
First step cleaning up the drives handling. This one does nothing but removing drives_table[], still it became seriously big. drive_get_index() is gone and is replaced by drives_get() which hands out DriveInfo pointers instead of a table index. This needs adaption in *tons* of places all over. The drives are now maintained as linked list. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
8a14daa5a1
commit
751c6a1704
36 changed files with 308 additions and 343 deletions
21
hw/pc.c
21
hw/pc.c
|
@ -1126,7 +1126,7 @@ static void pc_init1(ram_addr_t ram_size,
|
|||
CPUState *env;
|
||||
qemu_irq *cpu_irq;
|
||||
qemu_irq *i8259;
|
||||
int index;
|
||||
DriveInfo *dinfo;
|
||||
BlockDriverState *hd[MAX_IDE_BUS * MAX_IDE_DEVS];
|
||||
BlockDriverState *fd[MAX_FD];
|
||||
int using_vga = cirrus_vga_enabled || std_vga_enabled || vmsvga_enabled;
|
||||
|
@ -1356,11 +1356,8 @@ static void pc_init1(ram_addr_t ram_size,
|
|||
}
|
||||
|
||||
for(i = 0; i < MAX_IDE_BUS * MAX_IDE_DEVS; i++) {
|
||||
index = drive_get_index(IF_IDE, i / MAX_IDE_DEVS, i % MAX_IDE_DEVS);
|
||||
if (index != -1)
|
||||
hd[i] = drives_table[index].bdrv;
|
||||
else
|
||||
hd[i] = NULL;
|
||||
dinfo = drive_get(IF_IDE, i / MAX_IDE_DEVS, i % MAX_IDE_DEVS);
|
||||
hd[i] = dinfo ? dinfo->bdrv : NULL;
|
||||
}
|
||||
|
||||
if (pci_enabled) {
|
||||
|
@ -1379,11 +1376,8 @@ static void pc_init1(ram_addr_t ram_size,
|
|||
#endif
|
||||
|
||||
for(i = 0; i < MAX_FD; i++) {
|
||||
index = drive_get_index(IF_FLOPPY, 0, i);
|
||||
if (index != -1)
|
||||
fd[i] = drives_table[index].bdrv;
|
||||
else
|
||||
fd[i] = NULL;
|
||||
dinfo = drive_get(IF_FLOPPY, 0, i);
|
||||
fd[i] = dinfo ? dinfo->bdrv : NULL;
|
||||
}
|
||||
floppy_controller = fdctrl_init(i8259[6], 2, 0, 0x3f0, fd);
|
||||
|
||||
|
@ -1437,12 +1431,11 @@ static void pc_init1(ram_addr_t ram_size,
|
|||
|
||||
/* Add virtio block devices */
|
||||
if (pci_enabled) {
|
||||
int index;
|
||||
int unit_id = 0;
|
||||
|
||||
while ((index = drive_get_index(IF_VIRTIO, 0, unit_id)) != -1) {
|
||||
while ((dinfo = drive_get(IF_VIRTIO, 0, unit_id)) != NULL) {
|
||||
pci_dev = pci_create(virtio_blk_name,
|
||||
drives_table[index].devaddr);
|
||||
dinfo->devaddr);
|
||||
qdev_init(&pci_dev->qdev);
|
||||
unit_id++;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue