Open georgeklees opened 10 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.
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.
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.