My OS also doesn't have a console output driver, so screenshot wouldn't show anything beyond what GRUB says on boot, but I guess I can post a log of debug messages sent to serial port from the last run.
Code: Select all
Interrupt setup. IDT at: 0x00104000
Virtual manager init:
- Building initial page directory
- Page directory at 0x00108000
- Enabling paging..done!
- Initializing physical memory allocator
Initializing kernel malloc..done!
- Maximum size supported is 0x2400 bytes.
Initializing CPU 0x00:
- Initializing TSS.. done!
Loading module 0x00
- Created new page directory at 0x01FF2000
- Module start = 0x0018D000, end = 0x0018E7C4
- Mapping page: vaddr = 0x40000000, paddr = 0x0018D000
- Mapping page: vaddr = 0x40001000, paddr = 0x0018E000
- Address space mapped
Loading module 0x01
- Created new page directory at 0x01FF0000
- Module start = 0x0018F000, end = 0x001901E4
- Mapping page: vaddr = 0x40000000, paddr = 0x0018F000
- Mapping page: vaddr = 0x40001000, paddr = 0x00190000
- Address space mapped
All modules loaded !
mod_keyb: init..reset..leds..rate..enable..set..done !
mod_keyb: Keyboard initialized.
Attaching IRQ handler 0x400005B0 (context: 0x01FF2000, flags: 0x00000000) for IRQ 0x01
We are outputting from the module here.
Userspace has gained ability to talk with the outer world !
---
Trying to exit a lot :)
edit: urgh, for those interested, the non-sense-printer and mod_keyb are both processes, and IRQ handler for keyboard exists completely in userspace. Timer is directly in kernel though.
I think I'll need a new malloc, and the new IPC needs to be implemented, and finally the VMM needs all the high-level management code. Once I've written those, I'm pretty happy with the kernel, and might even create a site for it.