ladybird/Kernel/Tasks
Sönke Holz 243d7003a2 Kernel+LibC+LibELF: Move TLS handling to userspace
This removes the allocate_tls syscall and adds an archctl option to set
the fs_base for the current thread on x86-64, since you can't set that
register from userspace. enter_thread_context loads the fs_base for the
next thread on each context switch.
This also moves tpidr_el0 (the thread pointer register on AArch64) to
the register state, so it gets properly saved/restored on context
switches.

The userspace TLS allocation code is kept pretty similar to the original
kernel TLS code, aside from a couple of style changes.

We also have to add a new argument "tls_pointer" to
SC_create_thread_params, as we otherwise can't prevent race conditions
between setting the thread pointer register and signal handling code
that might be triggered before the thread pointer was set, which could
use TLS.
2024-04-19 16:46:47 -06:00
..
AtomicEdgeAction.h
Coredump.cpp Everywhere: Replace ElfW(type) macro usage with Elf_type 2023-12-01 10:02:39 +02:00
Coredump.h
CrashHandler.cpp Kernel: Make CrashHandler more useful before init_stage2 2023-12-09 22:36:28 +01:00
FinalizerTask.cpp
FinalizerTask.h
FutexQueue.cpp
FutexQueue.h
PerformanceEventBuffer.cpp
PerformanceEventBuffer.h
PerformanceManager.h
PowerStateSwitchTask.cpp
PowerStateSwitchTask.h
Process.cpp Kernel: Track KCOVInstance via Process instead of HashMap 2024-04-15 21:16:22 -06:00
Process.h Kernel+LibC+LibELF: Move TLS handling to userspace 2024-04-19 16:46:47 -06:00
ProcessGroup.cpp
ProcessGroup.h
ProcessList.cpp
Scheduler.cpp Kernel: Deduplicate backtrace printing 2024-04-15 21:16:22 -06:00
Scheduler.h
SyncTask.cpp
SyncTask.h
Thread.cpp Kernel+LibC+LibELF: Move TLS handling to userspace 2024-04-19 16:46:47 -06:00
Thread.h Kernel+LibC+LibELF: Move TLS handling to userspace 2024-04-19 16:46:47 -06:00
ThreadBlockers.cpp
ThreadTracer.cpp
ThreadTracer.h
WaitQueue.cpp
WaitQueue.h
WorkQueue.cpp
WorkQueue.h