serenity/Kernel
Daniel Bertalan fd3e3d5e28 LibC+Kernel: Prevent string functions from calling themselves
Most of the string.h and wchar.h functions are implemented quite naively
at the moment, and GCC's pattern recognition pass might realize what we
are trying to do, and transform them into libcalls. This is usually a
useful optimization, but not when we're implementing the functions
themselves :^)

Relevant discussion from the GCC Bugzilla:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102725

This prevents the infamous recursive `strlen`.

A more proper fix would be writing these functions in assembly. That
would likely give a small performance boost as well ;)
2022-05-12 13:12:37 +02:00
..
API Everywhere: Purge all support and usage of framebuffer devices 2022-05-05 20:55:57 +02:00
Arch Kernel: Add initial implementation of Processor in aarch64 2022-05-09 21:12:56 +02:00
Bus Kernel/Graphics: Implement basic support for VMWare SVGA adapter 2022-05-06 18:04:57 +02:00
Devices Kernel/HID: Take a spinlock when calling KeyboardClient::on_key_pressed 2022-05-06 18:05:14 +02:00
FileSystem Kernel: Add /proc/{pid}/children to ProcFS 2022-05-06 02:12:51 +04:30
Firmware Kernel: Move VMWareBackdoor to new directory in the Firmware directory 2022-04-20 19:21:32 +02:00
Graphics Kernel: Force y offset 0 when switching between console & graphics modes 2022-05-06 18:05:14 +02:00
Heap Kernel: Move allocate_unbacked_region_anywhere() to MemoryManager 2022-04-05 13:45:10 +02:00
Interrupts Kernel: Move create_identity_mapped_region() to MemoryManager 2022-04-05 13:45:10 +02:00
Library
Locking Kernel: Verify mutex big lock behavior 2022-04-09 15:55:20 +02:00
Memory Kernel/Memory: Add TypedMapping base_address method 2022-05-05 20:55:57 +02:00
Net Kernel: Stop exposing gateway field 2022-05-01 13:34:27 +02:00
Prekernel
Storage Kernel: Move Kernel/Arch/x86/SafeMem.h to Kernel/Arch/SafeMem.h 2022-05-03 21:53:36 +02:00
Syscalls Kernel: Properly define IOV_MAX 2022-05-05 20:47:38 +02:00
Tasks
Time
TTY Kernel: Support userspace TTY graphics modesetting 2022-04-29 19:52:32 +02:00
AddressSanitizer.cpp
AddressSanitizer.h
Assertions.h Kernel: Do not implement VERIFY_NOT_REACHED() as VERIFY(false) 2022-05-12 13:12:37 +02:00
AtomicEdgeAction.h
BootInfo.h
CMakeLists.txt LibC+Kernel: Prevent string functions from calling themselves 2022-05-12 13:12:37 +02:00
CMOS.cpp
CMOS.h
CommandLine.cpp Kernel/Graphics: Simplify the feature level of the Graphics subsystem 2022-05-05 20:55:57 +02:00
CommandLine.h Kernel/Graphics: Simplify the feature level of the Graphics subsystem 2022-05-05 20:55:57 +02:00
Coredump.cpp Kernel: Store AddressSpace memory regions in an IntrusiveRedBlackTree 2022-04-03 21:51:58 +02:00
Coredump.h
Debug.h.in
DoubleBuffer.cpp
DoubleBuffer.h
embedmap.sh
Forward.h Kernel: Use intrusive RegionTree solution for kernel regions as well 2022-04-03 21:51:58 +02:00
FutexQueue.cpp
FutexQueue.h
GlobalProcessExposed.cpp Kernel: Stop exposing gateway field 2022-05-01 13:34:27 +02:00
init.cpp Kernel+WindowServer: Move setting tty graphical mode to Userspace 2022-04-29 19:52:32 +02:00
KBuffer.h
KBufferBuilder.cpp
KBufferBuilder.h Kernel: Expose .length() of KBufferBuilder 2022-05-06 02:12:51 +04:30
KLexicalPath.cpp
KLexicalPath.h
kprintf.cpp
kstdio.h
KString.cpp
KString.h
KSyms.cpp Kernel: Move Kernel/Arch/x86/SafeMem.h to Kernel/Arch/SafeMem.h 2022-05-03 21:53:36 +02:00
KSyms.h
MiniStdLib.cpp
mkmap.sh
Multiboot.h
Panic.cpp
Panic.h Kernel: Implement __panic() for the aarch64 Kernel 2022-05-03 21:53:36 +02:00
PerformanceEventBuffer.cpp Kernel: Move Kernel/Arch/x86/SafeMem.h to Kernel/Arch/SafeMem.h 2022-05-03 21:53:36 +02:00
PerformanceEventBuffer.h
PerformanceManager.h
PhysicalAddress.h
Process.cpp Kernel: Remove big lock from sys$set_coredump_metadata 2022-04-09 21:51:16 +02:00
Process.h Kernel: Add /proc/{pid}/children to ProcFS 2022-05-06 02:12:51 +04:30
ProcessExposed.cpp Kernel: Add /proc/{pid}/children to ProcFS 2022-05-06 02:12:51 +04:30
ProcessExposed.h Kernel: Add /proc/{pid}/children to ProcFS 2022-05-06 02:12:51 +04:30
ProcessGroup.cpp
ProcessGroup.h
ProcessProcFSTraits.cpp Kernel: Add /proc/{pid}/children to ProcFS 2022-05-06 02:12:51 +04:30
ProcessSpecificExposed.cpp Kernel: Add /proc/{pid}/children to ProcFS 2022-05-06 02:12:51 +04:30
Random.cpp
Random.h Kernel: Make PhysicalRegion.cpp compile on aarch64 2022-04-02 19:34:20 -07:00
RTC.cpp
RTC.h
SanCov.cpp
Scheduler.cpp
Scheduler.h
Sections.h
StdLib.cpp Kernel: Move Kernel/Arch/x86/SafeMem.h to Kernel/Arch/SafeMem.h 2022-05-03 21:53:36 +02:00
StdLib.h
Syscall.cpp
Thread.cpp Kernel: Unbreak ASLR in the new RegionTree world 2022-04-03 21:51:58 +02:00
Thread.h Kernel: Increase the default userspace stack size to 4 MiB 2022-04-12 16:48:15 +02:00
ThreadBlockers.cpp
ThreadTracer.cpp
ThreadTracer.h
TimerQueue.cpp
TimerQueue.h
UBSanitizer.cpp
UnixTypes.h
UserOrKernelBuffer.cpp
UserOrKernelBuffer.h
VirtualAddress.h
WaitQueue.cpp
WaitQueue.h
WorkQueue.cpp Kernel: Take WorkQueue item as reference instead of pointer in do_queue 2022-04-20 19:47:18 +02:00
WorkQueue.h Kernel: Take WorkQueue item as reference instead of pointer in do_queue 2022-04-20 19:47:18 +02:00