summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2018-10-22Add a sys$exit and make init_stage2 call it when finished.Andreas Kling
2018-10-22A lot of hacking:Andreas Kling
- More work on funneling console output through Console. - init() now breaks off into a separate task ASAP. - ..this leaves the "colonel" task as a simple hlt idle loop. - Mask all IRQs on startup (except IRQ2 for slave passthru) - Fix underallocation bug in Task::allocateRegion(). - Remember how many times each Task has been scheduled. The panel and scheduling banner are disabled until I get things working nicely in the (brave) new Console world.
2018-10-22printf format fixups in ELFLoader.Andreas Kling
2018-10-21Make Console::m_rows/m_columns const for now.Andreas Kling
2018-10-21Add an InlineLinkedList::containsSlow(T*) helper.Andreas Kling
2018-10-21printf -> kprintfAndreas Kling
2018-10-21Have Console::write() directly call vga_putch.Andreas Kling
2018-10-21Add a Console device and start refactoring screen output.Andreas Kling
2018-10-21Protect the first 4 KB of memory.Andreas Kling
This makes null pointers crashy, tremendously useful :^)
2018-10-21Fix null deref in contextSwitch().Andreas Kling
2018-10-21Move post-boot kernel stack pointer to 0x4000.Andreas Kling
2018-10-19Turn the syscall interrupt into a trap (by switching the gate type.)Andreas Kling
This leaves interrupts enabled while we're in the kernel, which is precisely what we want. This uncovered a horrendous problem with kernel tasks silently overflowing their stacks. For now I've simply increased the stack size but I need a more MMU-y solution for this eventually.
2018-10-19Add a way to initialize VFS globals.Andreas Kling
This is needed since the kernel loader doesn't even zero out bss, much less call any static constructors.
2018-10-18ELFLoader works inside the kernel!Andreas Kling
We load /_hello.o which just prints out a simple message. It executes inside the kernel itself, so no fancy userspace process or anything, but this is still so cool!
2018-10-18ksprintf() should null-terminate strings.Andreas Kling
2018-10-18Build ELFLoader into Kernel.Andreas Kling
2018-10-18Add Regions concept to Task.Andreas Kling
2018-10-18Add a simple ELF binary called _test.o to the test fs.Andreas Kling
2018-10-18More paging stuff.Andreas Kling
The test userspace process now runs at linear address 0x300000 which is mapped to a dynamically allocated page from the MemoryManager. Cool!
2018-10-18Use FileHandle from VFS.Andreas Kling
2018-10-18Add an fd field to FileHandle in Kernel builds.Andreas Kling
2018-10-18Actually destroy tasks after they crash.Andreas Kling
2018-10-18Hang if we GPF in ring 0.Andreas Kling
2018-10-17A userspace process can now GPF and the OS goes on!Andreas Kling
This is really rickety, but it kinda sorta works for my test GPF!
2018-10-17Add basic paging. Only identity maps the bottom 4MB as a start.Andreas Kling
2018-10-17Allow running in QEMU with "./run q"Andreas Kling
The kernel doesn't run in QEMU right now and I don't know why.
2018-10-17Fix a dumb in buffer_putch.Andreas Kling
2018-10-17Add a PIC::getISR() helper.Andreas Kling
2018-10-17Add -fno-pic -fno-pie to build flags.Andreas Kling
2018-10-17Fix some minor build warnings.Andreas Kling
2018-10-17Add size_t and ssize_t to kernel builds.Andreas Kling
2018-10-17Make VFS host build work again.Andreas Kling
2018-10-17Print the contents of motd.txt on boot.Andreas Kling
2018-10-17List the root directory after mounting /.Andreas Kling
So cool that it works! It's spewing out a bunch of terminal escape sequences that the OS console obviously doesn't support, but we'll get there too.
2018-10-17VFS mounts an ext2fs root! :^)Andreas Kling
2018-10-17VirtualFileSystem class builds inside Kernel.Andreas Kling
2018-10-17Integrate ext2 from VFS into Kernel.Andreas Kling
2018-10-16Add the basic character devices to kernel.Andreas Kling
2018-10-16Add a simple IDEDiskDevice class that implements DiskDevice from VFS.Andreas Kling
2018-10-16Rework DiskDevice's read() and write() to be non-virtual wrappers.Andreas Kling
This way subclasses only have to implement readBlock() and writeBlock(). read() and write() require that the offset and length are both divisible by the blockSize().
2018-10-16Fixup small.fs again.Andreas Kling
2018-10-16Start fixing up AK to work inside the kernel.Andreas Kling
2018-10-16Merge some features from gerbert into OwnPtr and RetainPtr.Andreas Kling
2018-10-16Reduce dependence on STL.Andreas Kling
2018-10-16Add String::substring().Andreas Kling
2018-10-16BlockDevice -> DiskDevice.Andreas Kling
BlockDevice was the wrong name for this abstraction, since a block device is a type of file in a unix system, and we should use that name for that concept in the fs implementation.
2018-10-16These changes were lying around uncommitted in the old repo.Andreas Kling
I'm just gonna commit them without too much thinking and then take it from there.
2018-10-16If an interrupt comes from the slave PIC, both PICs need an EOI.Andreas Kling
2018-10-16Import the "gerbert" kernel I worked on earlier this year.Andreas Kling
It's a lot crappier than I remembered it. It's gonna need a lot of work.
2018-10-16Implement creating a new directory.Andreas Kling