瀏覽代碼

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);