summaryrefslogtreecommitdiff
path: root/AK
AgeCommit message (Collapse)Author
2019-02-12AK: Fix bug in MMX memcpy() unaligned prologue handling.Andreas Kling
2019-02-11AK: 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-10Kernel: 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-08Kernel: Use a Lockable<bool> for sysctl booleans as well.Andreas Kling
2019-02-08AK: Add a Lockable wrapping container.Andreas Kling
2019-02-07Kernel: 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-07AK: Optimize Vector::append(Vector&&) for case where this->m_impl is null.Andreas Kling
2019-02-07Add 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-06AK: Lock should ASSERT_INTERRUPTS_ENABLED().Andreas Kling
Trying to take a Lock while interrupts are disabled is always a bug.
2019-02-06Bootloader: 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-06AK: Add a TemporaryChange helper class.Andreas Kling
2019-02-06Kernel: 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-05Remove some unused files.Andreas Kling
2019-02-05AK: 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-05AK: Add bounds assertions in Vector::operator[].Andreas Kling
I was sure I had this already.
2019-02-04AK: Fix leak in HashTable move assignment operator.Andreas Kling
2019-02-03Get 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-02Support 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-02Add basic automatic dependency management to Makefiles.Andreas Kling
2019-02-01Implement 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-31Big, possibly complete sweep of naming changes.Andreas Kling
2019-01-30Fix 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-30Deallocate 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-30Add 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-29Implement 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-28VFS: Resolve FIXME in Inode::read_entire() about using dynamic allocation.Andreas Kling
2019-01-28Expose the kernel log buffer through /proc/dmesg.Andreas Kling
Also add a /bin/dmesg program for convenience.
2019-01-27Painter: Tell the compiler to flatten Font::draw_glyph().Andreas Kling
I think that concludes the Terminal stress test optimizations for now.
2019-01-23Ext2FS: Factor out block list generation and writing into functions.Andreas Kling
2019-01-19Coding style fixes in AK.Andreas Kling
2019-01-18Add a simple /bin/sysctl that wraps the files in /proc/sys.Andreas Kling
2019-01-18StringBuilder: Use a ByteBuffer internally instead of a Vector<String>.Andreas Kling
2019-01-18Add 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-17Rename 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-17Get rid of #ifdef SERENITY. We're past that phase of bootstrapping.Andreas Kling
2019-01-16Optimize the Painter::blit() loop a bit. ~3% fewer cycles, I'll take it.Andreas Kling
2019-01-16Tear 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-14Always inline the locks.Andreas Kling
2019-01-14Add Vector::take_first().Andreas Kling
2019-01-13Add basic GUI API for creating labels and buttons.Andreas Kling
2019-01-13Fix Userland build.Andreas Kling
2019-01-12Optimize WindowManager::flush() with fast_dword_copy().Andreas Kling
2019-01-12Add 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-09More window manager hacking. FocusIn/FocusOut events.Andreas Kling
2019-01-09Start 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-01Ext2FS: 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-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-28Plug leaks in SynthFS::remove_file().Andreas Kling
The process spawn stress test can now run forever. :^)
2018-12-26Fix some issues uncovered by the spawn stress test.Andreas Kling
2018-12-21Remove FS::read_entire_inode() in favor of Inode::read_entire().Andreas Kling