From: Sam Eiderman <shmuel.eiderman@oracle.com>
Move device name construction to a separate function.
We will reuse this function in the following commit to pass logical CHS
parameters through fw_cfg much like we currently pass bootindex.
Reviewed-by: Karl Heubaum <karl.heubaum@oracle.com>
Reviewed-by: Arbel Moshe <arbel.moshe@oracle.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: Sam Eiderman <shmuel.eiderman@oracle.com>
Signed-off-by: Sam Eiderman <sameid@google.com>
---
bootdevice.c | 61 +++++++++++++++++++++++++++++-----------------------
1 file changed, 34 insertions(+), 27 deletions(-)
diff --git a/bootdevice.c b/bootdevice.c
index bc5e1c2de4..2cf6b37c57 100644
--- a/bootdevice.c
+++ b/bootdevice.c
@@ -202,6 +202,39 @@ DeviceState *get_boot_device(uint32_t position)
return res;
}
+static char *get_boot_device_path(DeviceState *dev, bool ignore_suffixes,
+ const char *suffix)
+{
+ char *devpath = NULL, *s = NULL, *d, *bootpath;
+
+ if (dev) {
+ devpath = qdev_get_fw_dev_path(dev);
+ assert(devpath);
+ }
+
+ if (!ignore_suffixes) {
+ if (dev) {
+ d = qdev_get_own_fw_dev_path_from_handler(dev->parent_bus, dev);
+ if (d) {
+ assert(!suffix);
+ s = d;
+ } else {
+ s = g_strdup(suffix);
+ }
+ } else {
+ s = g_strdup(suffix);
+ }
+ }
+
+ bootpath = g_strdup_printf("%s%s",
+ devpath ? devpath : "",
+ s ? s : "");
+ g_free(devpath);
+ g_free(s);
+
+ return bootpath;
+}
+
/*
* This function returns null terminated string that consist of new line
* separated device paths.
@@ -218,36 +251,10 @@ char *get_boot_devices_list(size_t *size)
bool ignore_suffixes = mc->ignore_boot_device_suffixes;
QTAILQ_FOREACH(i, &fw_boot_order, link) {
- char *devpath = NULL, *suffix = NULL;
char *bootpath;
- char *d;
size_t len;
- if (i->dev) {
- devpath = qdev_get_fw_dev_path(i->dev);
- assert(devpath);
- }
-
- if (!ignore_suffixes) {
- if (i->dev) {
- d = qdev_get_own_fw_dev_path_from_handler(i->dev->parent_bus,
- i->dev);
- if (d) {
- assert(!i->suffix);
- suffix = d;
- } else {
- suffix = g_strdup(i->suffix);
- }
- } else {
- suffix = g_strdup(i->suffix);
- }
- }
-
- bootpath = g_strdup_printf("%s%s",
- devpath ? devpath : "",
- suffix ? suffix : "");
- g_free(devpath);
- g_free(suffix);
+ bootpath = get_boot_device_path(i->dev, ignore_suffixes, i->suffix);
if (total) {
list[total-1] = '\n';
--
2.23.0.700.g56cf767bdb-goog
On 10/16/19 6:41 PM, Sam Eiderman wrote: > From: Sam Eiderman <shmuel.eiderman@oracle.com> > > Move device name construction to a separate function. > > We will reuse this function in the following commit to pass logical CHS > parameters through fw_cfg much like we currently pass bootindex. > > Reviewed-by: Karl Heubaum <karl.heubaum@oracle.com> > Reviewed-by: Arbel Moshe <arbel.moshe@oracle.com> > Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> > Signed-off-by: Sam Eiderman <shmuel.eiderman@oracle.com> > Signed-off-by: Sam Eiderman <sameid@google.com> > --- > bootdevice.c | 61 +++++++++++++++++++++++++++++----------------------- > 1 file changed, 34 insertions(+), 27 deletions(-) > > diff --git a/bootdevice.c b/bootdevice.c > index bc5e1c2de4..2cf6b37c57 100644 > --- a/bootdevice.c > +++ b/bootdevice.c > @@ -202,6 +202,39 @@ DeviceState *get_boot_device(uint32_t position) > return res; > } > > +static char *get_boot_device_path(DeviceState *dev, bool ignore_suffixes, > + const char *suffix) > +{ > + char *devpath = NULL, *s = NULL, *d, *bootpath; > + > + if (dev) { > + devpath = qdev_get_fw_dev_path(dev); > + assert(devpath); > + } > + > + if (!ignore_suffixes) { > + if (dev) { > + d = qdev_get_own_fw_dev_path_from_handler(dev->parent_bus, dev); > + if (d) { > + assert(!suffix); > + s = d; > + } else { > + s = g_strdup(suffix); > + } > + } else { > + s = g_strdup(suffix); > + } > + } > + > + bootpath = g_strdup_printf("%s%s", > + devpath ? devpath : "", > + s ? s : ""); > + g_free(devpath); > + g_free(s); > + > + return bootpath; > +} > + > /* > * This function returns null terminated string that consist of new line > * separated device paths. > @@ -218,36 +251,10 @@ char *get_boot_devices_list(size_t *size) > bool ignore_suffixes = mc->ignore_boot_device_suffixes; > > QTAILQ_FOREACH(i, &fw_boot_order, link) { > - char *devpath = NULL, *suffix = NULL; > char *bootpath; > - char *d; > size_t len; > > - if (i->dev) { > - devpath = qdev_get_fw_dev_path(i->dev); > - assert(devpath); > - } > - > - if (!ignore_suffixes) { > - if (i->dev) { > - d = qdev_get_own_fw_dev_path_from_handler(i->dev->parent_bus, > - i->dev); > - if (d) { > - assert(!i->suffix); > - suffix = d; > - } else { > - suffix = g_strdup(i->suffix); > - } > - } else { > - suffix = g_strdup(i->suffix); > - } > - } > - > - bootpath = g_strdup_printf("%s%s", > - devpath ? devpath : "", > - suffix ? suffix : ""); > - g_free(devpath); > - g_free(suffix); > + bootpath = get_boot_device_path(i->dev, ignore_suffixes, i->suffix); > > if (total) { > list[total-1] = '\n'; > Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com> _______________________________________________ SeaBIOS mailing list -- seabios@seabios.org To unsubscribe send an email to seabios-leave@seabios.org
© 2016 - 2025 Red Hat, Inc.