Hello again !
As advertised, I continue to release regular updates about the work that has been done in the last months. Let’s begin with two screenshots that show the power of the debugging features I’ve been working on in July.
One is the current code of the kernel’s main function.
The other one is the result in the Bochs emulator.
There’s a lot of things to describe here. Let’s start with the most obvious : I’ve got some nice color handling functionality put on top of a fun and easy to operate cout-like output stream. Now, let’s consider that the debugging output is written on a window, in sense of a delimited area of the screen. This window appears when the kernel is loaded, on top of the new loading screen provided by the bootstrap code. When text output reaches its bottom, scrolling is automatically handled, as all shell users are used. If needed, the window can be dynamically resized, or moved to another place on screen. All that using simple stream manipulators like dbgout << set_win(new_window);
The cherry on top of the cake is that you can create as many of such debugging windows as you want. In fact, this is where this functionality moves beyond the area of development challenge and cosmetics and become actually useful for debugging. Just imagine that when several processes are summoned, you can give each one one of those output windows, and as such easily distinguish where each text output comes from.
Now, this is what I call a nice debugging feature !
Apart from that, the roadmap has received an in-depth update to better fit today’s development. One of the changes is the merge of the interruption and memory management parts in one single milestone. That’s because I’ve discovered that those parts are partly entangled and can’t be separated. You need dynamic memory allocation in order to reliably store processor state when an interrupt occurs, and you need page fault interruption management in order to fully master some of the most arcane concepts of virtual memory (like, as an example, the Copy-on-Write feature that most Unices have).
There are still some important things coming, but I don’t know if I will be able to complete them before I have to leave, so I’ll just stop here for this post. Stay tuned for part 3, coming in a few days or more than a week depending on how much spare time the next part of my holidays will leave to me ;)