Message ID | 1366978377-16823-3-git-send-email-dingel@linux.vnet.ibm.com |
---|---|
State | New |
Headers | show |
Dominik Dingel <dingel@linux.vnet.ibm.com> writes: > 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> Regards, Anthony Liguori > diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h > index 6578782..43b961c 100644 > --- a/include/sysemu/sysemu.h > +++ b/include/sysemu/sysemu.h > @@ -181,6 +181,8 @@ void add_boot_device_path(int32_t bootindex, DeviceState *dev, > const char *suffix); > char *get_boot_devices_list(size_t *size); > > +DeviceState *get_boot_device(uint32_t position); > + > bool usb_enabled(bool default_usb); > > extern QemuOptsList qemu_drive_opts; > diff --git a/vl.c b/vl.c > index 84d7031..429e6ea 100644 > --- a/vl.c > +++ b/vl.c > @@ -1247,6 +1247,24 @@ void add_boot_device_path(int32_t bootindex, DeviceState *dev, > 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 > * separated device paths. > -- > 1.7.9.5
diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h index 6578782..43b961c 100644 --- a/include/sysemu/sysemu.h +++ b/include/sysemu/sysemu.h @@ -181,6 +181,8 @@ void add_boot_device_path(int32_t bootindex, DeviceState *dev, const char *suffix); char *get_boot_devices_list(size_t *size); +DeviceState *get_boot_device(uint32_t position); + bool usb_enabled(bool default_usb); extern QemuOptsList qemu_drive_opts; diff --git a/vl.c b/vl.c index 84d7031..429e6ea 100644 --- a/vl.c +++ b/vl.c @@ -1247,6 +1247,24 @@ void add_boot_device_path(int32_t bootindex, DeviceState *dev, 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 * separated device paths.
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>