Andreas Kling
3399b6c57f
Kernel: Remove old SlabAllocator :^)
...
This is no longer useful since kmalloc() does automatic slab allocation
without any of the limitations of the old SlabAllocator. :^)
2021-12-26 21:22:59 +01:00
Nick Johnson
08e4a1a4dc
AK+Everywhere: Replace __builtin bit functions
...
In order to reduce our reliance on __builtin_{ffs, clz, ctz, popcount},
this commit removes all calls to these functions and replaces them with
the equivalent functions in AK/BuiltinWrappers.h.
2021-12-21 22:13:51 +01:00
Andreas Kling
e0521cfb9d
Kernel: Stop ProcFS stack walk on bogus userspace->kernel traversal
...
Unsurprisingly, the /proc/PID/stacks/TID stack walk had the same
arbitrary memory read problem as the perf event stack walk.
It would be nice if the kernel had a single stack walk implementation,
but that's outside the scope of this commit.
2021-12-19 18:18:38 +01:00
Hendiadyoin1
7a206868f8
Kernel: Move architecture dependent includes to the top in Processor.h
...
With the declaration order dependency resolved in the last two commits
we can now do this, which looks a lot nicer.
2021-12-11 13:23:27 -08:00
Hendiadyoin1
3f434506f5
Kernel: Extract ProcessorSpecificDataID from from Arch/Processor.h
2021-12-11 13:23:27 -08:00
Hendiadyoin1
556b516182
Kernel: Extract DeferredCallEntry from Arch/Processor.h
2021-12-11 13:23:27 -08:00
Hendiadyoin1
e34eb3e36d
Kernel: Remove unused String.h includes
...
This makes searching for not yet OOM safe interfaces a bit easier.
2021-12-11 13:15:26 -08:00
Idan Horowitz
39ecb832e4
Kernel: Don't try to dispatch urgent signals for kernel crashes
...
If we crashed in the kernel there's no point to sending a signal to the
active process, we're going to panic soon anyway.
2021-12-06 19:36:42 +01:00
Daniel Bertalan
8e2d0c8d5c
Kernel: Do not return a null ref in Processor::current
on aarch64
...
Clang rejects binding a reference to a null pointer at compile-time.
Let's just crash explicitly, instead of waiting for a null dereference
to mess things up.
2021-12-04 11:59:59 -08:00
Idan Horowitz
40f64d7379
Kernel: Dispatch handle-able signals instead of crashing if possible
...
This matches the behaviour of the other *nixs and allows processes to
try and recover from such signals in userland.
2021-12-01 21:44:11 +02:00
Idan Horowitz
a9e436c4a3
Kernel: Replace usages of SIGSTKFLT with SIGSEGV
...
SIGSTKFLT is a signal that signifies a stack fault in a x87 coprocessor,
this signal is not POSIX and also unused by Linux and the BSDs, so let's
use SIGSEGV so programs that setup signal handlers for the common
signals could still handle them in serenity.
2021-12-01 21:44:11 +02:00
James Mintram
224b865fda
Kernel: Add an x86 include check+error in x86/TSS.h
2021-12-01 11:22:04 -08:00
James Mintram
b08eb37b11
Kernel: Add an x86 include check+error in x86/TrapFrame.h
2021-12-01 11:22:04 -08:00
James Mintram
80cdfee10a
Kernel: Add an x86 include check+error in x86/Spinlock.h
2021-12-01 11:22:04 -08:00
James Mintram
34b341e35d
Kernel: Add an x86 include check+error in x86/RegisterState.h
2021-12-01 11:22:04 -08:00
James Mintram
1dc1412dee
Kernel: Add an x86 include check+error in x86/ProcessorInfo.h
2021-12-01 11:22:04 -08:00
James Mintram
e20884dc0c
Kernel: Add an x86 include check+error in x86/Processor.h
2021-12-01 11:22:04 -08:00
James Mintram
eb33df0c30
Kernel: Add an x86 include check+error in x86/PageFault.h
2021-12-01 11:22:04 -08:00
James Mintram
17fb2adf61
Kernel: Add an x86 include check+error in x86/PageDirectory.h
2021-12-01 11:22:04 -08:00
James Mintram
70a18a2271
Kernel: Add an x86 include check+error in x86/MSR.h
2021-12-01 11:22:04 -08:00
James Mintram
bffc3da9d7
Kernel: Add an x86 include check+error in x86/ISRStubs.h
2021-12-01 11:22:04 -08:00
James Mintram
1e5b82f0c6
Kernel: Add an x86 include check+error in x86/IO.h
2021-12-01 11:22:04 -08:00
James Mintram
b9ae6daa02
Kernel: Add an x86 include check+error in x86/Inerrupts.h
2021-12-01 11:22:04 -08:00
James Mintram
ed2aa96511
Kernel: Add an x86 include check+error in x86/InerruptDisabler.h
2021-12-01 11:22:04 -08:00
James Mintram
62d86afee9
Kernel: Add an x86 include check+error in x86/DescriptorTable.h
2021-12-01 11:22:04 -08:00
James Mintram
db1fbdabf9
Kernel: Add an x86 include check+error in x86/CPUID.h
2021-12-01 11:22:04 -08:00
James Mintram
8350b44ebd
Kernel: Add an x86 include check+error in x86/CPU.h
2021-12-01 11:22:04 -08:00
James Mintram
3e3c632969
Kernel: Add an x86 include check+error in x86/ASM_Wrapper.h
2021-12-01 11:22:04 -08:00
James Mintram
1c86b7043b
Kernel: Remove ASM_Wrapper include from platform independent processor.h
2021-12-01 11:22:04 -08:00
Brian Gianforcaro
a5cec06135
Kernel: Handle string format error in page_fault_handler(..) :^)
...
Utilize the new KString::formatted to provide a fallback
if formatting fails because of OOM or whatever reason.
2021-11-30 11:16:35 +01:00
James Mintram
4a4a3193f8
Kernel: Rename Aarch64Asm -> ASM_wrapper and add Aarch64::Asm namespace
2021-11-28 22:01:21 -08:00
James Mintram
34709c8d39
Kernel: Rename Aarch64Registers -> Registers and add Aarch64 namespace
2021-11-28 22:01:21 -08:00
James Mintram
271b9b8da3
Kernel: Set up and activate the MMU in the aarch64 perkernel
2021-11-28 22:01:21 -08:00
James Mintram
c2d7e200eb
Kernel: Move common aarch64 asm functions into kernel folder and NS
2021-11-28 22:01:21 -08:00
James Mintram
5a75bd31b0
Kernel: Replace inline asm with typesafe static member functions
2021-11-28 22:01:21 -08:00
Andreas Kling
216e21a1fa
AK: Convert AK::Format formatting helpers to returning ErrorOr<void>
...
This isn't a complete conversion to ErrorOr<void>, but a good chunk.
The end goal here is to propagate buffer allocation failures to the
caller, and allow the use of TRY() with formatting functions.
2021-11-17 00:21:13 +01:00
Andrew Kaster
16d8556472
Kernel: Remove redundant return statement from Spinlock::lock()
...
Also from RecursiveSpinlock::lock()
2021-11-14 22:52:35 +01:00
Andrew Kaster
5920b84696
Kernel: Stop truncating PageTableEntry::raw(), and make set_bit private
...
set_bit() in both PageDirectory and PageTableEntry are now private, and
remove a useless cast from PageTableEntry::raw().
2021-11-14 22:52:35 +01:00
Andrew Kaster
65edc62c02
Kernel: Resolve clang-tidy readability-make-member-function-const
...
... In files included from Kernel/Thread.cpp or Kernel/Process.cpp
Some places the warning is suppressed, because we do not want a const
object do have non-const access to the returned sub-object.
2021-11-14 22:52:35 +01:00
Andrew Kaster
a92132e44a
Kernel: Resolve clang-tidy readability-implicit-bool-conversion warnings
...
... In files included from Kernel/Process.cpp and Kernel/Thread.cpp
2021-11-14 22:52:35 +01:00
Andreas Kling
79fa9765ca
Kernel: Replace KResult and KResultOr<T> with Error and ErrorOr<T>
...
We now use AK::Error and AK::ErrorOr<T> in both kernel and userspace!
This was a slightly tedious refactoring that took a long time, so it's
not unlikely that some bugs crept in.
Nevertheless, it does pass basic functionality testing, and it's just
real nice to finally see the same pattern in all contexts. :^)
2021-11-08 01:10:53 +01:00
AMACB
60362ef401
Kernel: Initialize regs.fs in Processor::init_context
...
Commit f285241c
replaced the line that sets regs.fs with a line that
sets regs.gs, but not vice versa.
2021-11-06 11:54:28 +01:00
Daniel Bertalan
17b66eaa3c
Kernel: Call try_set_coredump_property with StringView arguments
...
Storing assigning a string literal to a String object just to pass it to
a function expecting a StringView is wasteful. Let's just not do that.
For consistency's sake, this commit changes all of the other invocations
to use StringView literals, too.
2021-10-21 22:19:50 +02:00
James Mintram
e35222a76e
Kernel: Move ScopedCritical + SmapDisabler CPP files into x86 common
2021-10-16 15:43:41 -07:00
James Mintram
8e4d53f216
Kernel: Add MiniStdLib to the Aarch64 kernel
2021-10-16 23:31:52 +01:00
James Mintram
3a9c7ce9d4
Kernel: Add StdLib.cpp to aarch64 build and update stubs in dummy.cpp
2021-10-15 21:48:45 +01:00
James Mintram
e8f09279d3
Kernel: Move spinlock into Arch
...
Spinlocks are tied to the platform they are built for, this is why they
have been moved into the Arch folder. They are still available via
"Locking/Spinlock.h"
An Aarch64 stub has been created
2021-10-15 21:48:45 +01:00
James Mintram
dfe4810c3a
Kernel: Add cross platform RegisterState header and Aarch64 version
...
A new RegisterState header includes the platform specific RegisterState
header based on the platform being compiled.
The Aarch64 RegisterState header contains stubs for Debug
2021-10-15 21:48:45 +01:00
James Mintram
0fbeac6011
Kernel: Split SmapDisabler so header is platform independent
...
A new header file has been created in the Arch/ folder while the
implementation has been moved into a CPP living in the X86 folder.
2021-10-15 21:48:45 +01:00
James Mintram
f4fb637914
Kernel: Split ScopedCritical so header is platform independent
...
A new header file has been created in the Arch/ folder while the
implementation has been moved into a CPP living in the X86 folder.
2021-10-15 21:48:45 +01:00