Age | Commit message (Collapse) | Author |
|
This is very much needed when compiling host tools on macOS for example
|
|
cross-toolchain self contained
|
|
|
|
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.
|
|
|
|
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. :^)
|
|
This feature hasn't been working at all for several months, so let's
just remove it and simplify GWindow event handling.
|
|
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.
|
|
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!
|
|
|
|
I don't know why I put this in the scheduler to begin with.. the caller
can just block until the beeping is finished.
|
|
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.
|
|
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.
|
|
This template allows you to define static globals without having them
destroyed on exit.
|
|
Fill, line, and gradient modes initially supported :^)
|
|
|
|
Upscaled with hq3x then cleaned up the glyphs manually.
|
|
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! :^)
|
|
|
|
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. :^)
|
|
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.
|
|
|
|
|
|
|
|
Use FileSystemPath to figure out that "./foo.cpp" == "foo.cpp"
|
|
|
|
|
|
Move some dupliated code into __generate_unique_filename()
|
|
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].
|
|
This allows the very aesthetic "Hotdog Stand" theme to have quite
reasonable looking menus.
|
|
|
|
Together with the new futex-backed pthread_cond_t, this makes nesalizer
run downright well on my machine. :^)
|
|
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.
|
|
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. :^)
|
|
Ports using CMake already install into the right place, so we don't
need to do the usual port system DESTDIR override.
|
|
Also stop clobbering the host's /usr/local/share for DATAROOTDIR.
|
|
This class really doesn't belong in LibC anyway, does it? Mehh.
|
|
From now on, you'll have to request executable memory specifically
if you want some.
|
|
This removes the ability to jump into kmalloc memory, etc.
Only the kernel image itself is allowed to exec, located between 1-2MB.
|
|
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.
|
|
|
|
Also share some validation logic between mmap() and mprotect().
|
|
|
|
|
|
|
|
This was being read before initialization.
|
|
That's not release!
|
|
|
|
This should give us access to the largest set of CPU features available
on the host machine.
|
|
|