Преглед изворни кода

Kernel: Move global constructor invocation a bit earlier

Andreas Kling пре 5 година
родитељ
комит
e4ab908fe0
1 измењених фајлова са 5 додато и 4 уклоњено
  1. 5 4
      Kernel/init.cpp

+ 5 - 4
Kernel/init.cpp

@@ -119,6 +119,11 @@ extern "C" [[noreturn]] void init()
     gdt_init();
     idt_init();
 
+    // Invoke all static global constructors in the kernel.
+    // Note that we want to do this as early as possible.
+    for (ctor_func_t* ctor = &start_ctors; ctor < &end_ctors; ctor++)
+        (*ctor)();
+
     setup_interrupts();
     setup_acpi();
 
@@ -134,10 +139,6 @@ extern "C" [[noreturn]] void init()
 
     setup_time_management();
 
-    // call global constructors after gtd and itd init
-    for (ctor_func_t* ctor = &start_ctors; ctor < &end_ctors; ctor++)
-        (*ctor)();
-
     new NullDevice;
     if (!get_serial_debug())
         new SerialDevice(SERIAL_COM1_ADDR, 64);