Age | Commit message (Collapse) | Author | |
---|---|---|---|
2019-01-13 | Fix Userland build. | Andreas Kling | |
2019-01-13 | Start working on a GUI kernel API. | Andreas Kling | |
2019-01-13 | Make 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-12 | Don'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-12 | Paper 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-12 | Print process name and PID when kmalloc() panics. | Andreas Kling | |
2019-01-12 | Optimize WindowManager::flush() with fast_dword_copy(). | Andreas Kling | |
2019-01-12 | Make 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-12 | All 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-12 | Make 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-12 | Get 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-12 | Reduce PS2MouseDevice debug spam in every dang mouse interrupt. | Andreas Kling | |
2019-01-12 | Make the kernel's memset do a "rep stosb" because. | Andreas Kling | |
2019-01-11 | Hook up the Keyboard device to the AbstractScreen. | Andreas Kling | |
Basic text editing in a TextBox works. How very cool :^) | |||
2019-01-11 | Throw up some widgets on screen so we can see what they look like. | Andreas Kling | |
2019-01-11 | Hook 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-11 | Teach PS2MouseDevice to read the left and right buttons. | Andreas Kling | |
2019-01-11 | Add 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-11 | Fix uninitialized AbstractScreen instance pointer. | Andreas Kling | |
...yeah yeah, one day I'm gonna zero out the kernel's BSS segment. Soon.. | |||
2019-01-10 | Hook 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-10 | Make Widgets/ build inside the kernel. | Andreas Kling | |
2019-01-09 | Switch 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-08 | Add PhysicalAddress::offset(). | Andreas Kling | |
2019-01-08 | Vector<String>() -> { } | Andreas Kling | |
2019-01-04 | Don't omit frame pointers. Duh. This fixes /proc/PID/stack listings. | Andreas Kling | |
2019-01-04 | Fix crash when doing "ls -l" in the /proc/PID directory for a kernel process. | Andreas Kling | |
2019-01-01 | Let the "reaped unparented process" messages go straight to the debugger. | Andreas Kling | |
2019-01-01 | Unbreak ksym loading and make reading /proc/PID/stack not crash. | Andreas Kling | |
2019-01-01 | MM: 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-31 | Add 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-31 | Make PhysicalPage eternally allocated. | Andreas Kling | |
2018-12-31 | Optimize 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-31 | Make 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-31 | Let 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-29 | MM: Fix bug when mapping a region with a VMO with non-zero offset. | Andreas Kling | |
2018-12-29 | Use 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-26 | Fix some issues uncovered by the spawn stress test. | Andreas Kling | |
2018-12-26 | Add 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-26 | Process::create_user_process() shouldn't leak a process if exec() fails. | Andreas Kling | |
2018-12-26 | Unbreak the spawn stress test. | Andreas Kling | |
2018-12-24 | Fix bug where Vnode kept its Inode alive indefinitely. | Andreas Kling | |
2018-12-24 | The syncd loop can just be a lambda. | Andreas Kling | |
2018-12-24 | Move 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-24 | Let sys$sigaction() fail if called with SIGKILL or SIGSTOP. | Andreas Kling | |
2018-12-21 | Remove FS::read_entire_inode() in favor of Inode::read_entire(). | Andreas Kling | |
2018-12-21 | Make syscall invocations look pleasant. | Andreas Kling | |
Old: Syscall::invoke(Syscall::SC_foo, (dword)arg1, (dword)arg2) New: syscall(SC_foo, arg1, arg2) | |||
2018-12-21 | Add a simple /bin/more. | Andreas Kling | |
2018-12-21 | Get rid of three test utilities that I no longer need. | Andreas Kling | |
2018-12-21 | Yet another pass of style fixes. | Andreas Kling | |
2018-12-20 | Add a "syncd" kernel process that periodically calls sync(). | Andreas Kling | |