summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-12-27Build: Make sure that RANLIB and AR use cross-compiler provided executablesStefano Cristiano
This is very much needed when compiling host tools on macOS for example
2019-12-27Toolchain: Statically link serenity cross-compiler on macOS to keep the ↵Stefano Cristiano
cross-toolchain self contained
2019-12-27AK: Simplify const T& versions of append/insert in SinglyLinkedListConrad Pankoff
2019-12-27Kernel: Add kernel-level timer queue (heavily based on @juliusf's work)Conrad Pankoff
PR #591 defines the rationale for kernel-level timers. They're most immediately useful for TCP retransmission, but will most likely see use in many other areas as well.
2019-12-27AK: Add insert_{before,after}(iterator, value) to SinglyLinkedListConrad Pankoff
2019-12-27Kernel: Separate runnable thread queues by priorityAndreas Kling
This patch introduces three separate thread queues, one for each thread priority available to userspace (Low, Normal and High.) Each queue operates in a round-robin fashion, but we now always prefer to schedule the highest priority thread that currently wants to run. There are tons of tweaks and improvements that we can and should make to this mechanism, but I think this is a step in the right direction. This makes WindowServer significantly more responsive while one of its clients is burning CPU. :^)
2019-12-27LibGUI: Remove bitrotted automatic keybinds featureAndreas Kling
This feature hasn't been working at all for several months, so let's just remove it and simplify GWindow event handling.
2019-12-27PaintBrush: Add an "ellipse tool"Shannon Booth
The tool currently supports drawing an elliptical line of a specified thickness. Further improvements can include adding a fill mode, and holding down shift to draw a perfect circle. Closes #375.
2019-12-27LibDraw: Add draw_ellipse_intersecting functionShannon Booth
This functon will draw an ellipse which is intersecting the corners of the rect given. It is a very naive implementation, taking 200 samples of points around the ellipse, and drawing straight lines between each of these points. The ellipses look good enough to me though!
2019-12-26Kernel: Simplify force_pio logic in PATA driver (#923)Conrad Pankoff
2019-12-26Kernel: Move PC speaker beep timing logic from scheduler to the syscallAndreas Kling
I don't know why I put this in the scheduler to begin with.. the caller can just block until the beeping is finished.
2019-12-26Kernel: Process::for_each_in_pgrp() should not include dead processesAndreas Kling
We don't care about dead processes that were once members of a specific process group. This was causing us to try and send SIGINT to already-dead processes when pressing Ctrl+C in a terminal whose pgrp they were once in. Fixes #922.
2019-12-26LibGUI: Use NeverDestroyed<T> for the global GWindow tablesAndreas Kling
We don't need these to be destroyed on exit, since that would race with the destruction of static global RefPtr<GWindow>'s. Fixes #900.
2019-12-26AK: Add NeverDestroyed<T>, for things that should never be destroyedAndreas Kling
This template allows you to define static globals without having them destroyed on exit.
2019-12-26PaintBrush: Add a "rectangle tool"Shannon Booth
Fill, line, and gradient modes initially supported :^)
2019-12-26LibDraw: Add dx/dy_relative_to() helper functions for PointsShannon Booth
2019-12-26Base: Add 3x upscaled Liza fontsTibor Nagy
Upscaled with hq3x then cleaned up the glyphs manually.
2019-12-26LibGUI+WindowServer: Mark minimized window backing stores as volatileAndreas Kling
WindowServer will now send out a WindowStateChanged message to clients when one of their windows is minimized. This is then forwarded to the GWindow, which will try to mark its underlying window backing store as volatile. This allows the kernel to steal the memory used by minimized windows in case it starts running low. Very cool! :^)
2019-12-26munch: Add a simple userland program for chewing up lots of memoryAndreas Kling
2019-12-26Kernel: When physical page allocation fails, try to purge somethingAndreas Kling
Instead of panicking right away when we run out of physical pages, we now try to find a PurgeableVMObject with some volatile pages in it. If we find one, we purge that entire object and steal one of its pages. This makes it possible for the kernel to keep going instead of dying. Very cool. :^)
2019-12-26ProcFS: Fix inconsistent numbers in /proc/memstatAndreas Kling
We were listing the total number of user/super pages as the number of "available" pages in the system. This was then misinterpreted in the SystemMonitor program and displayed wrong in the GUI.
2019-12-26Kernel: Add Lock::is_locked()Andreas Kling
2019-12-26LibC: Oops x2, we can't use "bool" in stdlib.h eitherAndreas Kling
2019-12-26LibC: Oops, we can't use [[nodiscard]] when this is included from CAndreas Kling
2019-12-26HackStudio: Fix failure to open filesAndreas Kling
Use FileSystemPath to figure out that "./foo.cpp" == "foo.cpp"
2019-12-26LibHTML: Remove fixed FIXMEShannon Booth
2019-12-26LibC: Implement tmpfile()Shannon Booth
2019-12-26LibC: Use shared functon to generate unique filenamesShannon Booth
Move some dupliated code into __generate_unique_filename()
2019-12-26Kernel: Detect support for no-execute (NX) CPU featuresConrad Pankoff
Previously we assumed all hosts would have support for IA32_EFER.NXE. This is mostly true for newer hardware, but older hardware will crash and burn if you try to use this feature. Now we check for support via CPUID.80000001[20].
2019-12-26LibDraw: Add MenuBaseText and MenuSelectionText color rolesAndreas Kling
This allows the very aesthetic "Hotdog Stand" theme to have quite reasonable looking menus.
2019-12-26Base: Add Hotdog Stand themeConrad Pankoff
2019-12-25Ports: Build nesalizer in release modeAndreas Kling
Together with the new futex-backed pthread_cond_t, this makes nesalizer run downright well on my machine. :^)
2019-12-25AudioServer: Block the mixer thread when there's nothing to doAndreas Kling
Use a pthread_cond_t to have the ASMixer thread wait until a client has connected and added a buffer queue to the "pending mixing" vector. This solves the long-standing issue of the system "idling" at ~8% CPU.
2019-12-25Kernel+LibPthread+LibC: Add a naive futex and use it for pthread_cond_tAndreas Kling
This patch implements a simple version of the futex (fast userspace mutex) API in the kernel and uses it to make the pthread_cond_t API's block instead of busily sched_yield(). An arbitrary userspace address is passed to the kernel as a "token" that identifies the futex and you can then FUTEX_WAIT and FUTEX_WAKE that specific userspace address. FUTEX_WAIT corresponds to pthread_cond_wait() and FUTEX_WAKE is used for pthread_cond_signal() and pthread_cond_broadcast(). I'm pretty sure I'm missing something in this implementation, but it's hopefully okay for a start. :^)
2019-12-25Ports: Fix SDL2 install stepAndreas Kling
Ports using CMake already install into the right place, so we don't need to do the usual port system DESTDIR override.
2019-12-25Toolchain: Fixup CMake toolchain script to install things in /usrAndreas Kling
Also stop clobbering the host's /usr/local/share for DATAROOTDIR.
2019-12-25LibDraw: Remove bogus LibC/ prefix on SharedBuffer.h includeAndreas Kling
This class really doesn't belong in LibC anyway, does it? Mehh.
2019-12-25Kernel: Make kernel memory regions be non-executable by defaultAndreas Kling
From now on, you'll have to request executable memory specifically if you want some.
2019-12-25Kernel: Set NX bit for virtual addresses 0-1MB and 2-8MBAndreas Kling
This removes the ability to jump into kmalloc memory, etc. Only the kernel image itself is allowed to exec, located between 1-2MB.
2019-12-25LibDraw: Fix 1px wide glitch in progress bar painting at some widthsAndreas Kling
Make sure we always line up the "hole" in the progress bar with the right side of the paint rect. This fixes a 1px wide glitch seen when using a darker system theme.
2019-12-25LibGUI: Add space for sort order indicators in autosized table columnsAndreas Kling
2019-12-25Kernel: Clarify the various input validity checks in mmap()Andreas Kling
Also share some validation logic between mmap() and mprotect().
2019-12-25Piano: Factor wave rendering to its own functionWilliam McPherson
2019-12-25Piano: Use switch statements on m_wave_typeWilliam McPherson
2019-12-25Piano: Move m_front_buffer/m_back_buffer off heapWilliam McPherson
2019-12-25Piano: Initialize m_note_on[]William McPherson
This was being read before initialization.
2019-12-25Piano: Rename "release" to "decay"William McPherson
That's not release!
2019-12-25Piano: Initialize keys[] at member definitionWilliam McPherson
2019-12-25run: Run QEMU with "-cpu max"Andreas Kling
This should give us access to the largest set of CPU features available on the host machine.
2019-12-25LibProtocol: Make build depend on ProtocolServer for IPC endpointsAndreas Kling