From 86a4036ba2c42bd38c87d1770009eab82dff01e3 Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Wed, 20 Jul 2016 13:40:51 +0200 Subject: blspec: Make blspec_boot static Since blspec_boot is now only used locally we can make it static. Move it up to avoid a static declaration. Signed-off-by: Sascha Hauer --- common/blspec.c | 156 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 78 insertions(+), 78 deletions(-) (limited to 'common/blspec.c') diff --git a/common/blspec.c b/common/blspec.c index aa70685414..6c963df0de 100644 --- a/common/blspec.c +++ b/common/blspec.c @@ -42,6 +42,84 @@ int blspec_entry_var_set(struct blspec_entry *entry, const char *name, val ? strlen(val) + 1 : 0, 1); } +/* + * blspec_boot - boot an entry + * + * This boots an entry. On success this function does not return. + * In case of an error the error code is returned. This function may + * return 0 in case of a succesful dry run. + */ +static int blspec_boot(struct bootentry *be, int verbose, int dryrun) +{ + struct blspec_entry *entry = container_of(be, struct blspec_entry, entry); + int ret; + const char *abspath, *devicetree, *options, *initrd, *linuximage; + const char *appendroot; + struct bootm_data data = { + .initrd_address = UIMAGE_INVALID_ADDRESS, + .os_address = UIMAGE_SOME_ADDRESS, + .verbose = verbose, + .dryrun = dryrun, + }; + + globalvar_set_match("linux.bootargs.dyn.", ""); + globalvar_set_match("bootm.", ""); + + devicetree = blspec_entry_var_get(entry, "devicetree"); + initrd = blspec_entry_var_get(entry, "initrd"); + options = blspec_entry_var_get(entry, "options"); + linuximage = blspec_entry_var_get(entry, "linux"); + + if (entry->rootpath) + abspath = entry->rootpath; + else + abspath = ""; + + data.os_file = basprintf("%s/%s", abspath, linuximage); + + if (devicetree) { + if (!strcmp(devicetree, "none")) { + struct device_node *node = of_get_root_node(); + if (node) + of_delete_node(node); + } else { + data.oftree_file = basprintf("%s/%s", abspath, + devicetree); + } + } + + if (initrd) + data.initrd_file = basprintf("%s/%s", abspath, initrd); + + globalvar_add_simple("linux.bootargs.dyn.bootentries", options); + + appendroot = blspec_entry_var_get(entry, "linux-appendroot"); + if (appendroot) { + int val; + + ret = strtobool(appendroot, &val); + if (ret) { + pr_err("Invalid value \"%s\" for appendroot option\n", + appendroot); + goto err_out; + } + data.appendroot = val; + } + + pr_info("booting %s from %s\n", blspec_entry_var_get(entry, "title"), + entry->cdev ? dev_name(entry->cdev->dev) : "none"); + + ret = bootm_boot(&data); + if (ret) + pr_err("Booting failed\n"); +err_out: + free((char *)data.oftree_file); + free((char *)data.initrd_file); + free((char *)data.os_file); + + return ret; +} + /* * blspec_entry_var_get - get the value of a variable */ @@ -653,81 +731,3 @@ int blspec_scan_devicename(struct bootentries *bootentries, const char *devname) return blspec_scan_device(bootentries, dev); } - -/* - * blspec_boot - boot an entry - * - * This boots an entry. On success this function does not return. - * In case of an error the error code is returned. This function may - * return 0 in case of a succesful dry run. - */ -int blspec_boot(struct bootentry *be, int verbose, int dryrun) -{ - struct blspec_entry *entry = container_of(be, struct blspec_entry, entry); - int ret; - const char *abspath, *devicetree, *options, *initrd, *linuximage; - const char *appendroot; - struct bootm_data data = { - .initrd_address = UIMAGE_INVALID_ADDRESS, - .os_address = UIMAGE_SOME_ADDRESS, - .verbose = verbose, - .dryrun = dryrun, - }; - - globalvar_set_match("linux.bootargs.dyn.", ""); - globalvar_set_match("bootm.", ""); - - devicetree = blspec_entry_var_get(entry, "devicetree"); - initrd = blspec_entry_var_get(entry, "initrd"); - options = blspec_entry_var_get(entry, "options"); - linuximage = blspec_entry_var_get(entry, "linux"); - - if (entry->rootpath) - abspath = entry->rootpath; - else - abspath = ""; - - data.os_file = basprintf("%s/%s", abspath, linuximage); - - if (devicetree) { - if (!strcmp(devicetree, "none")) { - struct device_node *node = of_get_root_node(); - if (node) - of_delete_node(node); - } else { - data.oftree_file = basprintf("%s/%s", abspath, - devicetree); - } - } - - if (initrd) - data.initrd_file = basprintf("%s/%s", abspath, initrd); - - globalvar_add_simple("linux.bootargs.dyn.bootentries", options); - - appendroot = blspec_entry_var_get(entry, "linux-appendroot"); - if (appendroot) { - int val; - - ret = strtobool(appendroot, &val); - if (ret) { - pr_err("Invalid value \"%s\" for appendroot option\n", - appendroot); - goto err_out; - } - data.appendroot = val; - } - - pr_info("booting %s from %s\n", blspec_entry_var_get(entry, "title"), - entry->cdev ? dev_name(entry->cdev->dev) : "none"); - - ret = bootm_boot(&data); - if (ret) - pr_err("Booting failed\n"); -err_out: - free((char *)data.oftree_file); - free((char *)data.initrd_file); - free((char *)data.os_file); - - return ret; -} -- cgit v1.2.3