[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] ieee1275: split up grub_machine_get_bootlocation
From: |
Eric Snowberg |
Subject: |
[PATCH] ieee1275: split up grub_machine_get_bootlocation |
Date: |
Wed, 7 Mar 2018 13:48:10 -0800 |
Split up some of the functionality in grub_machine_get_bootlocation into
grub_ieee1275_get_boot_dev. This will allow for code reuse in a follow on
patch.
Signed-off-by: Eric Snowberg <address@hidden>
---
grub-core/kern/ieee1275/init.c | 24 ++++--------------------
grub-core/kern/ieee1275/openfw.c | 27 +++++++++++++++++++++++++++
include/grub/ieee1275/ieee1275.h | 1 +
3 files changed, 32 insertions(+), 20 deletions(-)
diff --git a/grub-core/kern/ieee1275/init.c b/grub-core/kern/ieee1275/init.c
index 1259022..dff2184 100644
--- a/grub-core/kern/ieee1275/init.c
+++ b/grub-core/kern/ieee1275/init.c
@@ -93,29 +93,13 @@ void (*grub_ieee1275_net_config) (const char *dev, char
**device, char **path,
void
grub_machine_get_bootlocation (char **device, char **path)
{
- char *bootpath;
- grub_ssize_t bootpath_size;
+ char *bootpath = NULL;
char *filename;
char *type;
- if (grub_ieee1275_get_property_length (grub_ieee1275_chosen, "bootpath",
- &bootpath_size)
- || bootpath_size <= 0)
- {
- /* Should never happen. */
- grub_printf ("/chosen/bootpath property missing!\n");
- return;
- }
-
- bootpath = (char *) grub_malloc ((grub_size_t) bootpath_size + 64);
- if (! bootpath)
- {
- grub_print_error ();
- return;
- }
- grub_ieee1275_get_property (grub_ieee1275_chosen, "bootpath", bootpath,
- (grub_size_t) bootpath_size + 1, 0);
- bootpath[bootpath_size] = '\0';
+ grub_ieee1275_get_boot_dev (&bootpath);
+ if (bootpath == NULL)
+ return;
/* Transform an OF device path to a GRUB path. */
diff --git a/grub-core/kern/ieee1275/openfw.c b/grub-core/kern/ieee1275/openfw.c
index ddb7783..81c03cf 100644
--- a/grub-core/kern/ieee1275/openfw.c
+++ b/grub-core/kern/ieee1275/openfw.c
@@ -561,3 +561,30 @@ grub_ieee1275_canonicalise_devname (const char *path)
return NULL;
}
+void
+grub_ieee1275_get_boot_dev (char **boot_dev)
+{
+ char *bootpath;
+ grub_ssize_t bootpath_size;
+
+ if (grub_ieee1275_get_property_length (grub_ieee1275_chosen, "bootpath",
+ &bootpath_size)
+ || bootpath_size <= 0)
+ {
+ /* Should never happen. */
+ grub_printf ("/chosen/bootpath property missing!\n");
+ return;
+ }
+
+ bootpath = (char *) grub_malloc ((grub_size_t) bootpath_size + 64);
+ if (! bootpath)
+ {
+ grub_print_error ();
+ return;
+ }
+ grub_ieee1275_get_property (grub_ieee1275_chosen, "bootpath", bootpath,
+ (grub_size_t) bootpath_size + 1, 0);
+ bootpath[bootpath_size] = '\0';
+
+ *boot_dev = bootpath;
+}
diff --git a/include/grub/ieee1275/ieee1275.h b/include/grub/ieee1275/ieee1275.h
index d0dc274..7c9bb48 100644
--- a/include/grub/ieee1275/ieee1275.h
+++ b/include/grub/ieee1275/ieee1275.h
@@ -253,6 +253,7 @@ void EXPORT_FUNC(grub_ieee1275_children_peer) (struct
grub_ieee1275_devalias *al
void EXPORT_FUNC(grub_ieee1275_children_first) (const char *devpath,
struct grub_ieee1275_devalias
*alias);
+void EXPORT_FUNC(grub_ieee1275_get_boot_dev) (char **boot_dev);
#define FOR_IEEE1275_DEVALIASES(alias) for
(grub_ieee1275_devalias_init_iterator (&(alias)); grub_ieee1275_devalias_next
(&(alias));)
#define FOR_IEEE1275_DEVCHILDREN(devpath, alias) for
(grub_ieee1275_children_first ((devpath), &(alias)); \
--
1.7.1
- [PATCH] ieee1275: split up grub_machine_get_bootlocation,
Eric Snowberg <=