[haiku-commits] r34666 - in haiku/trunk: data/settings/kernel/drivers src/system/boot/loader

  • From: fredrik.holmqvist@xxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Tue, 15 Dec 2009 16:55:16 +0100 (CET)

Author: tqh
Date: 2009-12-15 16:55:16 +0100 (Tue, 15 Dec 2009)
New Revision: 34666
Changeset: http://dev.haiku-os.org/changeset/34666/haiku

Modified:
   haiku/trunk/data/settings/kernel/drivers/kernel
   haiku/trunk/src/system/boot/loader/elf.cpp
   haiku/trunk/src/system/boot/loader/elf.h
   haiku/trunk/src/system/boot/loader/loader.cpp
Log:
Implemented TODO about not loading symbols at boot. 
This saves ~0.5s of boot time here, but I suspect it might be better for CD.
Enabled loadSymbols in kernel settings so the behavior should be the same as 
before this change.


Modified: haiku/trunk/data/settings/kernel/drivers/kernel
===================================================================
--- haiku/trunk/data/settings/kernel/drivers/kernel     2009-12-15 12:08:36 UTC 
(rev 34665)
+++ haiku/trunk/data/settings/kernel/drivers/kernel     2009-12-15 15:55:16 UTC 
(rev 34666)
@@ -42,7 +42,7 @@
        # Activates a hack that allows single-stepping under qemu
        # to work.
 
-#load_symbols true
+load_symbols true
        # load kernel and kernel add-on symbols, default is off
 
 #apm true

Modified: haiku/trunk/src/system/boot/loader/elf.cpp
===================================================================
--- haiku/trunk/src/system/boot/loader/elf.cpp  2009-12-15 12:08:36 UTC (rev 
34665)
+++ haiku/trunk/src/system/boot/loader/elf.cpp  2009-12-15 15:55:16 UTC (rev 
34666)
@@ -9,6 +9,7 @@
 #include <boot/arch.h>
 #include <boot/platform.h>
 #include <boot/stage2.h>
+#include <driver_settings.h>
 #include <elf32.h>
 #include <kernel.h>
 
@@ -24,6 +25,17 @@
 #endif
 
 
+static bool _loadElfSymbols = false;
+
+
+void
+elf_init() {
+       void *settings = load_driver_settings("kernel");
+       _loadElfSymbols = !get_driver_boolean_parameter(settings, 
"load_symbols",
+               false, false);
+}
+
+
 static status_t
 verify_elf_header(struct Elf32_Ehdr &header)
 {
@@ -370,8 +382,7 @@
        image->debug_symbols = NULL;
        image->debug_string_table = NULL;
 
-       // ToDo: this should be enabled by kernel settings!
-       if (1)
+       if (_loadElfSymbols)
                load_elf_symbol_table(fd, image);
 
        free(programHeaders);

Modified: haiku/trunk/src/system/boot/loader/elf.h
===================================================================
--- haiku/trunk/src/system/boot/loader/elf.h    2009-12-15 12:08:36 UTC (rev 
34665)
+++ haiku/trunk/src/system/boot/loader/elf.h    2009-12-15 15:55:16 UTC (rev 
34666)
@@ -10,6 +10,7 @@
 #include <boot/vfs.h>
 
 
+extern void elf_init();
 extern status_t elf_load_image(Directory *directory, const char *path);
 extern status_t elf_load_image(int fd, preloaded_image *image);
 

Modified: haiku/trunk/src/system/boot/loader/loader.cpp
===================================================================
--- haiku/trunk/src/system/boot/loader/loader.cpp       2009-12-15 12:08:36 UTC 
(rev 34665)
+++ haiku/trunk/src/system/boot/loader/loader.cpp       2009-12-15 15:55:16 UTC 
(rev 34666)
@@ -60,6 +60,7 @@
 
        dprintf("load kernel...\n");
 
+       elf_init();
        status_t status = elf_load_image(fd, &gKernelArgs.kernel_image);
 
        close(fd);


Other related posts: