Common: Add quick access to first boot device

Instead of manually parsing the boot_list as character stream,
we can access the nth boot device, specified by the position in the
boot order.

Signed-off-by: Dominik Dingel <dingel@linux.vnet.ibm.com>
Reviewed-by: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
Dominik Dingel 2013-04-26 02:12:49 +00:00 committed by Alexander Graf
parent ba747cc8f3
commit 7dc5af5545
2 changed files with 20 additions and 0 deletions

View File

@ -181,6 +181,8 @@ void add_boot_device_path(int32_t bootindex, DeviceState *dev,
const char *suffix); const char *suffix);
char *get_boot_devices_list(size_t *size); char *get_boot_devices_list(size_t *size);
DeviceState *get_boot_device(uint32_t position);
bool usb_enabled(bool default_usb); bool usb_enabled(bool default_usb);
extern QemuOptsList qemu_drive_opts; extern QemuOptsList qemu_drive_opts;

18
vl.c
View File

@ -1222,6 +1222,24 @@ void add_boot_device_path(int32_t bootindex, DeviceState *dev,
QTAILQ_INSERT_TAIL(&fw_boot_order, node, link); QTAILQ_INSERT_TAIL(&fw_boot_order, node, link);
} }
DeviceState *get_boot_device(uint32_t position)
{
uint32_t counter = 0;
FWBootEntry *i = NULL;
DeviceState *res = NULL;
if (!QTAILQ_EMPTY(&fw_boot_order)) {
QTAILQ_FOREACH(i, &fw_boot_order, link) {
if (counter == position) {
res = i->dev;
break;
}
counter++;
}
}
return res;
}
/* /*
* This function returns null terminated string that consist of new line * This function returns null terminated string that consist of new line
* separated device paths. * separated device paths.