Age | Commit message (Collapse) | Author |
|
This helps avoid confusion in general, and make constructors, methods
and code patterns much more clean and understandable.
|
|
Equivalent to std::ranges::any_of as clang-tidy suggests.
|
|
No need to copy and move them around, just to pass them as a
`String const&` to the constructor.
We still end up copying it to a normal String in the end though...
|
|
|
|
|
|
|
|
Thanks clang-tidy
|
|
This is what normal assign operators do and what clang-tidy expects form
us.
|
|
These include AK::String and X86::Instruction
|
|
|
|
|
|
|
|
Stealing what Andreas did for the `dbgln` output, I think it also looks
nice inside of Terminal :^)
|
|
Previously we were assigning to Process::m_space before actually
entering the new address space (assigning it to CR3.)
If a thread was preempted by the scheduler while destroying the old
address space, we'd then attempt to resume the thread with CR3 pointing
at a partially destroyed address space.
We could then crash immediately in write_cr3(), right after assigning
the new value to CR3. I am hopeful that this may have been the bug
haunting our CI for months. :^)
|
|
Instead, wait until we transition back to userspace. This stops
userspace from being able to suspend a thread indefinitely while it's
running in kernelspace (potentially holding some blocking mutex.)
|
|
25B2-25FF https://www.unicode.org/charts/PDF/U25A0.pdf
|
|
2038, 203F, 2040, 2045, 2046, 2054
https://www.unicode.org/charts/PDF/U2000.pdf
|
|
30A0, 30B3, 30C3, 30C4, 30FB, 30FC, 30FF
https://www.unicode.org/charts/PDF/U30A0.pdf
|
|
FF01-FF02, FF07-FF0F, FF3B-FF3D
https://www.unicode.org/charts/PDF/UFF00.pdf
|
|
Found by PVS Studio Static Analysis
|
|
Found by PVS Studio Static Analysis
|
|
Found by PVS Studio Static Analysis.
|
|
PVS Studio static analysis noticed we didn't initialize these in a
bunch of cases. This change fixes that so we will always initialize
these using universal initialization.
|
|
fio allows you to test various different IO subsystems and patterns.
It can help us test and benchmark the I/O subsystems of Serenity.
This port gets the fio bootstrapped and working, using the included
.fio file, I have been able to test the file I/O performance already.
|
|
Add the `posix_madvise(..)` LibC implementation that just forwards
to the normal `madvise(..)` implementation.
Also define a few POSIX_MADV_DONTNEED and POSIX_MADV_NORMAL as they
are part of the POSIX API for `posix_madvise(..)`.
This is needed by the `fio` port.
|
|
|
|
These 2 members are required by POSIX and are also used by some ports.
Zero is a valid value for both of these, so no further work to support
them is required.
|
|
We don't need to build tests/binaries for CE.
|
|
|
|
The general idea when ENABLE_UNICODE_DATABASE_DOWNLOAD is OFF has been
that the Intl APIs will provide obviously incorrect results, but should
not crash. This regressed a bit with NumberFormat and DateTimeFormat.
|
|
The old patch to define `HAVE_SIGSET_T` is no longer needed, as we now
have implementations for `sigwaitinfo` and `sigtimedwait`.
Instead, for the same reason, we now have to remove a reference to
`si_errno`, which we haven't implemented yet but is just assumed to be
there.
|
|
This now matches the spec change from reminder() to modulo which was
done here: https://github.com/tc39/proposal-temporal/commit/bdf60f5
|
|
Just like with integral and floating numbers, doing it manually is
error-prone: when we get a negative remainder, y has to be added to the
result to match the spec's modulo.
Solve this by just adding another (templated) overload to also permit
using the function for LibCrypto BigInts.
|
|
This makes it much easier to write (template) functions that accept
either a signed or unsigned bigint parameter.
|
|
It's a bit annoying having to add '.0' to y given that it's an integral
number in most cases.
This turns the single template parameter T into T and U to permit that.
|
|
Previously the debuggee process used the same tty of the HackStudio
process.
We now set things up so the debuggee gets attached to the
TerminalWrapper in the "Console" tab.
|
|
If set, this callback gets called right after fork() in the child
process.
It can be used by the caller if it wants to perform some logic in the
child process before it starts executing the debuggee program.
|
|
Previously the setup for both the master and slave pseudoterminals was
done in TerminalWrapper::run_command.
This commit separates the relevant logic into
TerminalWrapper::setup_master_pseudoterminal
and TerminalWrapper::setup_slave_pseudoterminal.
|
|
The TerminalWrapper in this tab is not only used for displaying build
output, so "Console" would be a better name.
|
|
At this point, the double conversions should really only be
implementation details of the KeypadValue class. Therefore,
the constructor-from double and conversion-operator-to
double of KeypadValue are made private. Instead, the
required functionality is provided by KeypadValue itself.
The internal implementation is still done using doubles.
However, this opens us up to the possibility of having
loss-free square root, inversion and division in the future.
|
|
This allows to KUBSAN to print correctly in strictier memory
conditions. This patch also removes some useless curly braces around
single line ifs.
|
|
Now that the shared bottom 2 MiB virtual address mappings are gone
userspace can use lower virtual addresses.
|
|
Now that the last 2 users of these mappings (the Prekernel and the APIC
ap boot environment) were removed, these are no longer used.
|
|
The Prekernel's memory is only accessed until MemoryManager has been
initialized. Keeping them around afterwards is both unnecessary and bad,
as it prevents the userland from using the 0x100000-0x155000 virtual
address range.
Co-authored-by: Idan Horowitz <idan.horowitz@gmail.com>
|
|
As PROT_NONE regions can't be accessed by processes, and their only real
use is for reserving ranges of virtual memory, there's no point in
including them in coredumps.
|
|
This behavior is mandated by POSIX and is used by software like Wine
after reserving large chunks of the address range.
|
|
Since this range is mapped in already in the kernel page directory, we
can initialize it before jumping into the first kernel process which
lets us avoid mapping in the range into init_stage2's address space.
This brings us half-way to removing the shared bottom 2 MiB mapping in
every process, leaving only the Prekernel.
|
|
Some programs (like wine) add custom dynamic tags to their binaries
that are used internally by them, so we can just ignore them.
|
|
These are required for some ports.
|
|
These should allow users to receive the names of network interfaces in
the system, but for now these are only stubs required to compile some
ports.
|