ladybird/Kernel/API
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
..
FileSystem Kernel: Add a definition for the FAT32 FSInfo structure 2024-02-24 15:54:52 -07:00
POSIX Kernel+Userland: Add mount MS_SRCHIDDEN option 2024-03-13 15:33:47 -06:00
archctl_numbers.h Kernel+LibC+LibELF: Move TLS handling to userspace 2024-04-19 16:46:47 -06:00
BeepInstruction.h Kernel+Userland: Add option for duration of /dev/beep producing sound 2023-11-03 15:19:33 +01:00
DeviceEvent.h Kernel/Devices: Introduce the Device Control Device 2022-01-23 00:38:02 +00:00
DeviceFileTypes.h Kernel: Move FileSystem/DeviceFileTypes.h => API/DeviceFileTypes.h 2023-09-07 11:50:50 -06:00
InodeWatcherEvent.h Kernel+LibC: Move name length constants to Kernel/API from limits.h 2023-01-21 10:43:59 -07:00
InodeWatcherFlags.h Kernel: Implement multi-watch InodeWatcher :^) 2021-05-12 22:38:20 +02:00
Ioctl.h Kernel/Devices: Introduce the LoopDevice device 2024-03-13 15:33:47 -06:00
Jail.h Kernel: Allow configuring a Jail to not impose PID isolation restriction 2023-04-24 12:15:29 +02:00
kcov.h Everywhere: Use east const in more places 2024-04-19 06:31:19 -04:00
KeyCode.h Kernel: Define bitwise operations for KeyModifier 2024-03-06 07:46:18 +01:00
MemoryLayout.h Kernel: Move userspace virtual address range base to 0x10000 2021-12-22 00:02:36 -08:00
MousePacket.h Kernel: Add horizontal mouse scroll support 2022-01-20 10:37:52 +01:00
prctl_numbers.h Kernel+Userland: Remove the {get,set}_thread_name syscalls 2023-08-25 11:51:52 +02:00
serenity_limits.h Kernel: Bump maximum pthread stack size to 32MiB 2022-12-11 19:55:37 -07:00
Syscall.h Kernel+LibC+LibELF: Move TLS handling to userspace 2024-04-19 16:46:47 -06:00
SyscallString.h Kernel: Stop requiring working malloc for syscall.h includes 2022-05-02 12:44:34 +02:00
TimePage.h Everywhere: Use east const in more places 2024-04-19 06:31:19 -04:00
ttydefaults.h Kernel: Move TYPEDEF_* TTY macros to API/ttydefaults.h file 2023-03-01 19:36:53 -07:00
ttydefaultschars.h Everywhere: Use east const in more places 2024-04-19 06:31:19 -04:00
Unveil.h Kernel+LibCore+LibC: Implement support for forcing unveil on exec 2022-11-26 12:42:15 -07:00
VirGL.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
VirtualMemoryAnnotations.h Kernel/Memory: Add option to annotate region mapping as immutable 2022-12-16 01:02:00 -07:00