Author: imp
Date: Fri Jun 15 19:07:31 2018
New Revision: 335230
URL: https://svnweb.freebsd.org/changeset/base/335230

Log:
  Move arg parsing into its own routine for possible later reuse.

Modified:
  head/stand/efi/loader/main.c

Modified: head/stand/efi/loader/main.c
==============================================================================
--- head/stand/efi/loader/main.c        Fri Jun 15 19:07:26 2018        
(r335229)
+++ head/stand/efi/loader/main.c        Fri Jun 15 19:07:31 2018        
(r335230)
@@ -397,63 +397,14 @@ interactive_interrupt(const char *msg)
        return (false);
 }
 
-EFI_STATUS
-main(int argc, CHAR16 *argv[])
+int
+parse_args(int argc, CHAR16 *argv[], bool has_kbd)
 {
-       char var[128];
-       EFI_GUID *guid;
        int i, j, howto;
        bool vargood;
-       UINTN k;
-       bool has_kbd;
-       char *s;
-       EFI_DEVICE_PATH *imgpath;
-       CHAR16 *text;
-       EFI_STATUS status;
-       UINT16 boot_current;
-       size_t sz;
-       UINT16 boot_order[100];
-       EFI_LOADED_IMAGE *img;
-#if !defined(__arm__)
-       char buf[40];
-#endif
+       char var[128];
 
-       archsw.arch_autoload = efi_autoload;
-       archsw.arch_getdev = efi_getdev;
-       archsw.arch_copyin = efi_copyin;
-       archsw.arch_copyout = efi_copyout;
-       archsw.arch_readin = efi_readin;
-#ifdef EFI_ZFS_BOOT
-       /* Note this needs to be set before ZFS init. */
-       archsw.arch_zfs_probe = efi_zfs_probe;
-#endif
-
-        /* Get our loaded image protocol interface structure. */
-       BS->HandleProtocol(IH, &imgid, (VOID**)&img);
-
-#ifdef EFI_ZFS_BOOT
-       /* Tell ZFS probe code where we booted from */
-       efizfs_set_preferred(img->DeviceHandle);
-#endif
-       /* Init the time source */
-       efi_time_init();
-
-       has_kbd = has_keyboard();
-
        /*
-        * XXX Chicken-and-egg problem; we want to have console output
-        * early, but some console attributes may depend on reading from
-        * eg. the boot device, which we can't do yet.  We can use
-        * printf() etc. once this is done.
-        */
-       cons_probe();
-
-       /*
-        * Initialise the block cache. Set the upper limit.
-        */
-       bcache_init(32768, 512);
-
-       /*
         * Parse the args to set the console settings, etc
         * boot1.efi passes these in, if it can read /boot.config or 
/boot/config
         * or iPXE may be setup to pass these in. Or the optional argument in 
the
@@ -541,6 +492,65 @@ main(int argc, CHAR16 *argv[])
                        }
                }
        }
+       return (howto);
+}
+
+
+EFI_STATUS
+main(int argc, CHAR16 *argv[])
+{
+       EFI_GUID *guid;
+       int howto, i;
+       UINTN k;
+       bool has_kbd;
+       char *s;
+       EFI_DEVICE_PATH *imgpath;
+       CHAR16 *text;
+       EFI_STATUS status;
+       UINT16 boot_current;
+       size_t sz;
+       UINT16 boot_order[100];
+       EFI_LOADED_IMAGE *img;
+#if !defined(__arm__)
+       char buf[40];
+#endif
+
+       archsw.arch_autoload = efi_autoload;
+       archsw.arch_getdev = efi_getdev;
+       archsw.arch_copyin = efi_copyin;
+       archsw.arch_copyout = efi_copyout;
+       archsw.arch_readin = efi_readin;
+#ifdef EFI_ZFS_BOOT
+       /* Note this needs to be set before ZFS init. */
+       archsw.arch_zfs_probe = efi_zfs_probe;
+#endif
+
+        /* Get our loaded image protocol interface structure. */
+       BS->HandleProtocol(IH, &imgid, (VOID**)&img);
+
+#ifdef EFI_ZFS_BOOT
+       /* Tell ZFS probe code where we booted from */
+       efizfs_set_preferred(img->DeviceHandle);
+#endif
+       /* Init the time source */
+       efi_time_init();
+
+       has_kbd = has_keyboard();
+
+       /*
+        * XXX Chicken-and-egg problem; we want to have console output
+        * early, but some console attributes may depend on reading from
+        * eg. the boot device, which we can't do yet.  We can use
+        * printf() etc. once this is done.
+        */
+       cons_probe();
+
+       /*
+        * Initialise the block cache. Set the upper limit.
+        */
+       bcache_init(32768, 512);
+
+       howto = parse_args(argc, argv, has_kbd);
 
        bootenv_set(howto);
 
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to