summaryrefslogtreecommitdiff
path: root/Kernel
AgeCommit message (Collapse)Author
2019-01-13Fix Userland build.Andreas Kling
2019-01-13Start working on a GUI kernel API.Andreas Kling
2019-01-13Make GraphicsBitmaps be Region-backed when running in the kernel.Andreas Kling
This is a lot better than having them in kmalloc memory. I'm gonna need a way to keep track of which process owns which bitmap eventually, maybe through some sort of resource keying system. We'll see.
2019-01-12Don't use dword-by-dword memset/memcpy if the addresses are unaligned.Andreas Kling
Also don't enable the large kmalloc catcher by default.
2019-01-12Paper over a race in DoubleBuffer.Andreas Kling
I'm still somewhat okay throwing InterruptDisabler at races as they screw me. Eventually I'm gonna have to devise a different strategy though.
2019-01-12Print process name and PID when kmalloc() panics.Andreas Kling
2019-01-12Optimize WindowManager::flush() with fast_dword_copy().Andreas Kling
2019-01-12Make the kernel's memcpy() and memset() go fast with dword copies.Andreas Kling
Also I learned that the ABI allows us to assume DF=0 on function entry.
2019-01-12All right, let's double buffer the display. It looks so much better.Andreas Kling
This performs like dogshit. I need to make some optimizations. :^)
2019-01-12Make PS2MouseDevice behave more like a proper character device.Andreas Kling
Get rid of the goofy MouseClient interface and have the GUI event loop just read mouse data from the character device. The previous approach was awful as it was sending us into random GUI code in the mouse interrupt handler.
2019-01-12Get rid of the "root widget" concept in WindowManager.Andreas Kling
Instead just create a GraphicsBitmap wrapper around the display framebuffer and teach Painter how to draw directly into a GraphicsBitmap.
2019-01-12Reduce PS2MouseDevice debug spam in every dang mouse interrupt.Andreas Kling
2019-01-12Make the kernel's memset do a "rep stosb" because.Andreas Kling
2019-01-11Hook up the Keyboard device to the AbstractScreen.Andreas Kling
Basic text editing in a TextBox works. How very cool :^)
2019-01-11Throw up some widgets on screen so we can see what they look like.Andreas Kling
2019-01-11Hook up the PS2MouseDevice to the AbstractScreen+WindowManager.Andreas Kling
Render the mouse cursor by xor'ing the pixels. I don't know anything about hardware cursors yet and this way we don't need to recompose the window hierarchy every time you move the mouse. :^)
2019-01-11Teach PS2MouseDevice to read the left and right buttons.Andreas Kling
2019-01-11Add a simple PS/2 mouse device.Andreas Kling
It's not hooked up to anything just yet, but it does read movement deltas.
2019-01-11Fix uninitialized AbstractScreen instance pointer.Andreas Kling
...yeah yeah, one day I'm gonna zero out the kernel's BSS segment. Soon..
2019-01-10Hook everything up to run the GUI on top of the kernel.Andreas Kling
Okay things kinda sorta work. Both Bochs and QEMU now boot into GUI mode. There's a ton of stuff that doesn't make sense and so many things to rework. Still it's quite cool to have made it this far. :^)
2019-01-10Make Widgets/ build inside the kernel.Andreas Kling
2019-01-09Switch into 1024x768x32bpp VESA LFB mode at boot.Andreas Kling
This is going to be pretty cool once I can hook up the Widgets/ code to it.
2019-01-08Add PhysicalAddress::offset().Andreas Kling
2019-01-08Vector<String>() -> { }Andreas Kling
2019-01-04Don't omit frame pointers. Duh. This fixes /proc/PID/stack listings.Andreas Kling
2019-01-04Fix crash when doing "ls -l" in the /proc/PID directory for a kernel process.Andreas Kling
2019-01-01Let the "reaped unparented process" messages go straight to the debugger.Andreas Kling
2019-01-01Unbreak ksym loading and make reading /proc/PID/stack not crash.Andreas Kling
2019-01-01MM: Allocate page tables from a separate set of physical pages.Andreas Kling
The old approach only worked because of an overpermissive accident. There's now a concept of supervisor physical pages that can be allocated. They all sit in the low 4 MB of physical memory and are identity mapped, shared between all processes, and only ring 0 can access them.
2018-12-31Add a PageDirectory::flush() that does nothing if another PD is active.Andreas Kling
This way callers can just flush() every time after making any modification and the PageDirectory itself will decide if TLB invalidation is necessary.
2018-12-31Make PhysicalPage eternally allocated.Andreas Kling
2018-12-31Optimize PageDirectory destruction.Andreas Kling
Remove an extra hash lookup and only iterate over the actually-used PhysicalPages that we need to clean up.
2018-12-31Make PageDirectory store physical pages in a HashMap.Andreas Kling
This container is really just there to keep a retain on the individual PhysicalPages for each page table. A HashMap does the job with far greater space efficiency.
2018-12-31Let PageDirectory have a PhysicalPage for the PDB instead of being the PDB.Andreas Kling
This is more efficient than using the wasteful kmalloc_aligned() approach to allocation. It also allows much tighter encapsulation of the class.
2018-12-29MM: Fix bug when mapping a region with a VMO with non-zero offset.Andreas Kling
2018-12-29Use the entry point address from the ELF header instead of looking up _start.Andreas Kling
I love these kind of dumb gotcha moments. Turns out you can find the entry address right there in the header. :^)
2018-12-26Fix some issues uncovered by the spawn stress test.Andreas Kling
2018-12-26Add slightly better kmalloc_aligned() and kfree_aligned().Andreas Kling
Process page directories can now actually be freed. This could definitely be implemented in a nicer, less wasteful way, but this works for now. The spawn stress test can now run for a lot longer but eventually dies due to kmalloc running out of memory.
2018-12-26Process::create_user_process() shouldn't leak a process if exec() fails.Andreas Kling
2018-12-26Unbreak the spawn stress test.Andreas Kling
2018-12-24Fix bug where Vnode kept its Inode alive indefinitely.Andreas Kling
2018-12-24The syncd loop can just be a lambda.Andreas Kling
2018-12-24Move kernel symbolication code out of init.cpp and into its own KSym files.Andreas Kling
Also use a simple array of { dword, const char* } for the KSyms and put the whole shebang in kmalloc_eternal() memory. This was a fugly source of kmalloc perma-frag.
2018-12-24Let sys$sigaction() fail if called with SIGKILL or SIGSTOP.Andreas Kling
2018-12-21Remove FS::read_entire_inode() in favor of Inode::read_entire().Andreas Kling
2018-12-21Make syscall invocations look pleasant.Andreas Kling
Old: Syscall::invoke(Syscall::SC_foo, (dword)arg1, (dword)arg2) New: syscall(SC_foo, arg1, arg2)
2018-12-21Add a simple /bin/more.Andreas Kling
2018-12-21Get rid of three test utilities that I no longer need.Andreas Kling
2018-12-21Yet another pass of style fixes.Andreas Kling
2018-12-20Add a "syncd" kernel process that periodically calls sync().Andreas Kling