clang-format automatically sorts include statements that are in a
'block'. Adding a whitespace prevents this. It is crutial that
<AK/TestSuite.h> is included first because it redefines some macros.
Rather than hardcoding where the kmalloc pool should be, place
it at the end of the kernel image instead. This avoids corrupting
global variables or other parts of the kernel as it grows.
Fixes#3257
MemoryManager cannot use the Singleton class because
MemoryManager::initialize is called before the global constructors
are run. That caused the Singleton to be re-initialized, causing
it to create another MemoryManager instance.
The "Step Out" action continues execution until the current function
returns.
Also, LibDebug/StackFrameUtils was introduced to eliminate the
duplication of stack frame inspection logic between the "Step Out"
action and the BacktraceModel.
This is not perfect and kinda clunky to use, but these are the best
input widgets we have available at the moment, so let's make do with
what we have. :^)
The CMOS sets bit 2 (0x4) if times are binary, if it's not
set they're in BCD.
The CMOS sets bit 1 (0x1) if hours are on a 12 hour clock.
In that case, the highest bit in the hour byte is set for
PM times (both in binary and BCD times).
Three bugs:
1. The lower 7 bits were masked off incorrectly when calling
bcd_to_binary(). Use 0x7F as mask, not 0x70.
2. The highest bit to check if a time was PM was checked after
BCD conversion of the low 7 bits, which clobbered that bit.
Do the check before BCD conversion.
3. In the 12 hour clock, midnight and noon are "12", so those
need to be converted to 0 even if for non-PM times (else
midnight is "12", not "0").
With this, SerenityOS consistently shows UTC as the current time,
as it should.
If folks want it to display local time instead, they can get this
by adding `-rtc base=localtime` to Meta/run.sh -- but a better fix
would be to add timezone management and convert from UTC system
clock to the user timezone at display time.
Instead of computing it on the fly while painting each layout node,
they now remember their selection state. This avoids a whole bunch
of tree traversal while painting with anything selected.
Makes C-c print "^C" and continue prompting on a new line.
Also fixes a problem where an interrupted get_line() would need more
read()'s than required to update the display.