mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-01-24 18:24:45 -05:00
243d7003a2
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. |
||
---|---|---|
.. | ||
AtomicEdgeAction.h | ||
Coredump.cpp | ||
Coredump.h | ||
CrashHandler.cpp | ||
FinalizerTask.cpp | ||
FinalizerTask.h | ||
FutexQueue.cpp | ||
FutexQueue.h | ||
PerformanceEventBuffer.cpp | ||
PerformanceEventBuffer.h | ||
PerformanceManager.h | ||
PowerStateSwitchTask.cpp | ||
PowerStateSwitchTask.h | ||
Process.cpp | ||
Process.h | ||
ProcessGroup.cpp | ||
ProcessGroup.h | ||
ProcessList.cpp | ||
Scheduler.cpp | ||
Scheduler.h | ||
SyncTask.cpp | ||
SyncTask.h | ||
Thread.cpp | ||
Thread.h | ||
ThreadBlockers.cpp | ||
ThreadTracer.cpp | ||
ThreadTracer.h | ||
WaitQueue.cpp | ||
WaitQueue.h | ||
WorkQueue.cpp | ||
WorkQueue.h |