-
Notifications
You must be signed in to change notification settings - Fork 13
Home
Fudge is still early alpha. The first release (Lovelace) will ship as soon as I've finished all the tasks below. There are some other issues I'd like to solve as well. One of the biggest hurdles right now is the virtual filesystem implementation. I don't like how it works and I wish I could find something that is slightly easier to use. Other than that most parts are working fairly well. Even though the kernel as a whole is structured very well some parts might need more work in the future.
This is the list of things that I want implemented for each release.
The first release will focus on getting things to work. Fudge will have a set of working drivers and be usable for a small set of tasks.
Improvements:
-
(EASY) Automatically figure out what function belongs to what module by looking at the prefix when searching for symbols using the load program.
-
(MEDIUM) Move all /kernel/vfs/ code to separate modules. Requires that they can get the hold of the resources they need i.e. modules and tasks. Then remove the kernel_get_filesystem function.
-
(MEDIUM) Implement ICMP4/6 and UDP. Only ARP is used now. I really would like to have two instances of Fudge to be able to communicate with eachother.
-
(MEDIUM) If context->running is zero, put CPU to halt as I had previously.
-
(MEDIUM) Fix input stream for UART. At the moment it doesn't work when using buttons like shift.
Considerations:
-
(HARD) Think about what syscalls should actually exist. The open/close syscalls could be implemented by read and write to a specific file. There might also be more examples like that.
-
(HARD) For syscalls, figure out a way so I do not need to first parse arguments in the handle_x functions before handing it over to the actual function that does the work.
-
(HARD) Now when modules can hook-in anywhere consider changing the module interface with the kernel.
Problems:
-
(MEDIUM) Try to figure out why ATA doesn't work on one of my hardware setups. (Perhaps the delay or waits are wrong? It might get solved if I modify the IRQ handling which would enable IRQs for ATA as well.
-
(MEDIUM) Add more safety to module loading. Now it is not possible to load a module twice. This should not break. Also loading modules when device is not present cause it to halt.
The second release will focus on making everything more stable, consistent and more elegant in every way possible. It shall not be possible to break the system in any way.
-
Replace Grub with own bootloader.
-
Multi-user support (different login names and Access Control Lists)
-
SMP support.
-
TCP/IP stack.
-
Intel, Nvidia and ATI mode settings.