Use the configuration file parser provided by ldlinux to search for
and parse any configuration files. If a kernel or ui module is found
in the configuration file, it is executed once parsing completes.
Parsing and loading kernels is now entirely done in C!
The parser also builds the data structures for later use by the menu
system. Previously, after the asm config parser had parsed the config
file and found a kernel image to boot (or dropped the user at a
command prompt), the menu.c32 module had to open the config file and
re-parse it. Now, we only need to parse the file once.
Signed-off-by: Matt Fleming <matt.fleming@linux.intel.com>
}
}
+static void load_kernel(void)
+{
+ enum kernel_type type;
+
+ if (defaultlevel == LEVEL_UI)
+ type = KT_COM32;
+ else
+ type = KT_KERNEL;
+
+ execute(default_cmd, type);
+}
+
static int ldlinux_main(int argc, char **argv)
{
openconsole(&dev_rawcon_r, &dev_ansiserial_w);
+ parse_configs(NULL);
+
+ /* TODO: ADV */
+ /* TODO: Check KbdFlags? */
+
+ if (forceprompt)
+ goto cmdline;
+
+ /*
+ * Auto boot
+ */
+ if (defaultlevel || !noescape) {
+ if (defaultlevel) {
+ load_kernel(); /* Shouldn't return */
+ } else {
+ printf("No DEFAULT or UI configuration directive found!\n");
+
+ if (noescape)
+ kaboom();
+ }
+ }
+
+cmdline:
/* Should never return */
enter_cmdline();
section .text16
;
-; Locate the configuration file
-;
- ;pm_call pm_load_config
- ;jz no_config_file
-
-;
; Now we have the config file open. Parse the config file and
; run the user interface.
;