darksideos / darkside-kernel

The bootloader, kernel, and core modules of Darkside OS.
GNU General Public License v3.0
29 stars 4 forks source link

Modules list is unmapped after paging_init() in the microkernel #1396

Open georgeklees opened 10 years ago

georgeklees commented 10 years ago

The bootloader creates a linked-list of modules loaded at boot time and passes it to the kernel. The kernel will use these boot modules to initialize the filesystem so the rest of the needed modules can be loaded, so it has to have access to this list. Due to the nature of the bootloader, the module list and the executable structures inside it reside under the 1MiB mark. Since paging_init() doesn't map the area under 1MiB in its new page directory, the structures become inaccessible after paging_init(). In order for device initialization to work properly, the structures will have to somehow be copied to kernel memory.

georgeklees commented 9 years ago

This has been completed, with the exception of the module registry (which has yet to be implemented) and the symbol table dictionaries, which require a dict_keys() function in libadt.

georgeklees commented 9 years ago

A lot of this issue has been made irrelevant due to the decision to replace boot modules with an initrd. Everything is currently copied except for the kernel's exported symbol dictionary: this will be handled later, as it isn't too important.