Age | Commit message (Collapse) | Author | |
---|---|---|---|
2019-02-12 | AK: Fix bug in MMX memcpy() unaligned prologue handling. | Andreas Kling | |
2019-02-11 | AK: Oops, the optimization in Vector::append(Vector&&) was broken. | Andreas Kling | |
It forgot to clear out the moved-from vector. It's easy to see where this bug came from: I assumed m_impl was an OwnPtr. It would be comfy if move() on some arbitrary T* would also null it out but alas that's not how things work. | |||
2019-02-10 | Kernel: Add an LRU block cache. | Andreas Kling | |
This papers over some of the incredibly inefficient access patterns in the Ext2FS implementation for a while longer. :^) | |||
2019-02-08 | Kernel: Use a Lockable<bool> for sysctl booleans as well. | Andreas Kling | |
2019-02-08 | AK: Add a Lockable wrapping container. | Andreas Kling | |
2019-02-07 | Kernel: When a lock is busy, donate remaining process ticks to lock holder. | Andreas Kling | |
Since we know who's holding the lock, and we're gonna have to yield anyway, we can just ask the scheduler to donate any remaining ticks to that process. | |||
2019-02-07 | AK: Optimize Vector::append(Vector&&) for case where this->m_impl is null. | Andreas Kling | |
2019-02-07 | Add a fast memcpy() using MMX when we're moving >= 1KB. | Andreas Kling | |
This is a nice speedup for WindowServer. I'll eventually have to do this with SSE but the kernel doesn't support SSE yet so this is it for now. | |||
2019-02-06 | AK: Lock should ASSERT_INTERRUPTS_ENABLED(). | Andreas Kling | |
Trying to take a Lock while interrupts are disabled is always a bug. | |||
2019-02-06 | Bootloader: Locate the kernel's data segment and clear it. | Andreas Kling | |
This was a constant source of stupid bugs and I kept postponing it because I wasn't in the mood to write assembly code. Until now! :^) | |||
2019-02-06 | AK: Add a TemporaryChange helper class. | Andreas Kling | |
2019-02-06 | Kernel: Clean up around Scheduler::yield() a bit. | Andreas Kling | |
Also add assertion in Lock that the scheduler isn't currently active. I've been seeing occasional fuckups that I suspect might be someone called by the scheduler trying to take a busy lock. | |||
2019-02-05 | Remove some unused files. | Andreas Kling | |
2019-02-05 | AK: Vector::data() shouldn't crash if the vector is empty. | Andreas Kling | |
It's up to the caller to check size() and stay within the bounds. | |||
2019-02-05 | AK: Add bounds assertions in Vector::operator[]. | Andreas Kling | |
I was sure I had this already. | |||
2019-02-04 | AK: Fix leak in HashTable move assignment operator. | Andreas Kling | |
2019-02-03 | Get nyancat nyanning in Serenity. | Andreas Kling | |
I found a cute program that renders an animated nyancat in the terminal. This patch adds enough hackery to get it working correctly. :^) | |||
2019-02-02 | Support font files. | Andreas Kling | |
This only works with the userspace build of SharedGraphics so far. It's also very slow at loading fonts, but that's easy to fix. Let's put fonts in /res/fonts/. | |||
2019-02-02 | Add basic automatic dependency management to Makefiles. | Andreas Kling | |
2019-02-01 | Implement event loop timers. | Andreas Kling | |
GObjects can now register a timer with the GEventLoop. This will eventually cause GTimerEvents to be dispatched to the GObject. This needed a few supporting changes in the kernel: - The PIT now ticks 1000 times/sec. - select() now supports an arbitrary timeout. - gettimeofday() now returns something in the tv_usec field. With these changes, the clock window in guitest2 finally ticks on its own. | |||
2019-01-31 | Big, possibly complete sweep of naming changes. | Andreas Kling | |
2019-01-30 | Fix dumb bug in HashTable::clear(). | Andreas Kling | |
We forgot to clear the m_buckets pointer. This meant that multiple calls to clear() would cause trouble. | |||
2019-01-30 | Deallocate PTY's when they close. | Andreas Kling | |
This required a fair bit of plumbing. The CharacterDevice::close() virtual will now be closed by ~FileDescriptor(), allowing device implementations to do custom cleanup at that point. One big problem remains: if the master PTY is closed before the slave PTY, we go into crashy land. | |||
2019-01-30 | Add a String::format() and use that in place of ksprintf() in the Kernel. | Andreas Kling | |
You're never gonna be right 100% of the time when guessing how much buffer space you need. This avoids having to make that type of decision in a bunch of cases. :^) | |||
2019-01-29 | Implement basic chmod() syscall and /bin/chmod helper. | Andreas Kling | |
Only raw octal modes are supported right now. This patch also changes mode_t from 32-bit to 16-bit to match the on-disk type used by Ext2FS. I also ran into EPERM being errno=0 which was confusing, so I inserted an ESUCCESS in its place. | |||
2019-01-28 | VFS: Resolve FIXME in Inode::read_entire() about using dynamic allocation. | Andreas Kling | |
2019-01-28 | Expose the kernel log buffer through /proc/dmesg. | Andreas Kling | |
Also add a /bin/dmesg program for convenience. | |||
2019-01-27 | Painter: Tell the compiler to flatten Font::draw_glyph(). | Andreas Kling | |
I think that concludes the Terminal stress test optimizations for now. | |||
2019-01-23 | Ext2FS: Factor out block list generation and writing into functions. | Andreas Kling | |
2019-01-19 | Coding style fixes in AK. | Andreas Kling | |
2019-01-18 | Add a simple /bin/sysctl that wraps the files in /proc/sys. | Andreas Kling | |
2019-01-18 | StringBuilder: Use a ByteBuffer internally instead of a Vector<String>. | Andreas Kling | |
2019-01-18 | Add a simple StringBuilder::appendf() and use it for ProcFS. | Andreas Kling | |
Okay, now ProcFS doesn't crash due to the crappy buffer size estimates not really working out. This thing has dogshit performance and I will fix that separately. | |||
2019-01-17 | Rename SpinLock to Lock. It hasn't been a SpinLock for some time. | Andreas Kling | |
I'm pretty happy with the mechanism of AK::Lock for now. | |||
2019-01-17 | Get rid of #ifdef SERENITY. We're past that phase of bootstrapping. | Andreas Kling | |
2019-01-16 | Optimize the Painter::blit() loop a bit. ~3% fewer cycles, I'll take it. | Andreas Kling | |
2019-01-16 | Tear out or duplicate what's unique for WindowServer from Widgets. | Andreas Kling | |
This turned into a huge refactoring that somehow also includes making locks recursive/reentrant. | |||
2019-01-14 | Always inline the locks. | Andreas Kling | |
2019-01-14 | Add Vector::take_first(). | Andreas Kling | |
2019-01-13 | Add basic GUI API for creating labels and buttons. | Andreas Kling | |
2019-01-13 | Fix Userland build. | Andreas Kling | |
2019-01-12 | Optimize WindowManager::flush() with fast_dword_copy(). | Andreas Kling | |
2019-01-12 | Add a Vector::clear_with_capacity() that doesn't release the backing store. | Andreas Kling | |
Use this for WindowManager's dirty rects to avoid kmalloc traffic. | |||
2019-01-09 | More window manager hacking. FocusIn/FocusOut events. | Andreas Kling | |
2019-01-09 | Start refactoring graphics system to have per-window backing stores. | Andreas Kling | |
It was fun for everyone to share a single framebuffer but it was also kinda really awful. Let's move towards having a "GraphicsBitmap" as the backing store for each Window. This is going to need a lot of refactoring so let's get started. | |||
2019-01-01 | Ext2FS: Free Ext2FSInodes when the last user releases them. | Andreas Kling | |
The inode cache was keeping these alive forever. Added a cute little magic trick to Retainable that calls T::one_retain_left() when the retain count is decremented to 1. | |||
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-28 | Plug leaks in SynthFS::remove_file(). | Andreas Kling | |
The process spawn stress test can now run forever. :^) | |||
2018-12-26 | Fix some issues uncovered by the spawn stress test. | Andreas Kling | |
2018-12-21 | Remove FS::read_entire_inode() in favor of Inode::read_entire(). | Andreas Kling | |