mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-09-23 03:18:07 +03:00
b32e961a84
The kernel now supports basic profiling of all the threads in a process by calling profiling_enable(pid_t). You finish the profiling by calling profiling_disable(pid_t). This all works by recording thread stacks when the timer interrupt fires and the current thread is in a process being profiled. Note that symbolication is deferred until profiling_disable() to avoid adding more noise than necessary to the profile. A simple "/bin/profile" command is included here that can be used to start/stop profiling like so: $ profile 10 on ... wait ... $ profile 10 off After a profile has been recorded, it can be fetched in /proc/profile There are various limits (or "bugs") on this mechanism at the moment: - Only one process can be profiled at a time. - We allocate 8MB for the samples, if you use more space, things will not work, and probably break a bit. - Things will probably fall apart if the profiled process dies during profiling, or while extracing /proc/profile
136 lines
3.3 KiB
Makefile
136 lines
3.3 KiB
Makefile
include ../Makefile.common
|
|
|
|
CXX_OBJS = \
|
|
../AK/FileSystemPath.o \
|
|
../AK/JsonParser.o \
|
|
../AK/JsonValue.o \
|
|
../AK/LogStream.o \
|
|
../AK/String.o \
|
|
../AK/StringBuilder.o \
|
|
../AK/StringImpl.o \
|
|
../AK/StringView.o \
|
|
../Libraries/LibELF/ELFImage.o \
|
|
../Libraries/LibELF/ELFLoader.o \
|
|
Arch/i386/APIC.o \
|
|
Arch/i386/CPU.o \
|
|
Arch/i386/PIC.o \
|
|
Arch/i386/PIT.o \
|
|
CMOS.o \
|
|
Console.o \
|
|
Devices/BXVGADevice.o \
|
|
Devices/BlockDevice.o \
|
|
Devices/CharacterDevice.o \
|
|
Devices/DebugLogDevice.o \
|
|
Devices/Device.o \
|
|
Devices/DiskDevice.o \
|
|
Devices/DiskPartition.o \
|
|
Devices/FloppyDiskDevice.o \
|
|
Devices/FullDevice.o \
|
|
Devices/GPTPartitionTable.o \
|
|
Devices/KeyboardDevice.o \
|
|
Devices/MBRPartitionTable.o \
|
|
Devices/MBVGADevice.o \
|
|
Devices/NullDevice.o \
|
|
Devices/PATAChannel.o \
|
|
Devices/PATADiskDevice.o \
|
|
Devices/PCSpeaker.o \
|
|
Devices/PS2MouseDevice.o \
|
|
Devices/RandomDevice.o \
|
|
Devices/SB16.o \
|
|
Devices/SerialDevice.o \
|
|
Devices/ZeroDevice.o \
|
|
DoubleBuffer.o \
|
|
FileSystem/Custody.o \
|
|
FileSystem/DevPtsFS.o \
|
|
FileSystem/DiskBackedFileSystem.o \
|
|
FileSystem/Ext2FileSystem.o \
|
|
FileSystem/FIFO.o \
|
|
FileSystem/File.o \
|
|
FileSystem/FileDescription.o \
|
|
FileSystem/FileSystem.o \
|
|
FileSystem/Inode.o \
|
|
FileSystem/InodeFile.o \
|
|
FileSystem/InodeWatcher.o \
|
|
FileSystem/ProcFS.o \
|
|
FileSystem/SharedMemory.o \
|
|
FileSystem/TmpFS.o \
|
|
FileSystem/VirtualFileSystem.o \
|
|
Heap/SlabAllocator.o \
|
|
Heap/kmalloc.o \
|
|
IRQHandler.o \
|
|
KBufferBuilder.o \
|
|
KParams.o \
|
|
KSyms.o \
|
|
Lock.o \
|
|
Net/E1000NetworkAdapter.o \
|
|
Net/IPv4Socket.o \
|
|
Net/LocalSocket.o \
|
|
Net/LoopbackAdapter.o \
|
|
Net/NetworkAdapter.o \
|
|
Net/NetworkTask.o \
|
|
Net/RTL8139NetworkAdapter.o \
|
|
Net/Routing.o \
|
|
Net/Socket.o \
|
|
Net/TCPSocket.o \
|
|
Net/UDPSocket.o \
|
|
PCI.o \
|
|
Process.o \
|
|
ProcessTracer.o \
|
|
Profiling.o \
|
|
RTC.o \
|
|
Scheduler.o \
|
|
SharedBuffer.o \
|
|
StdLib.o \
|
|
Syscall.o \
|
|
TTY/MasterPTY.o \
|
|
TTY/PTYMultiplexer.o \
|
|
TTY/SlavePTY.o \
|
|
TTY/TTY.o \
|
|
TTY/VirtualConsole.o \
|
|
Thread.o \
|
|
VM/AnonymousVMObject.o \
|
|
VM/InodeVMObject.o \
|
|
VM/MemoryManager.o \
|
|
VM/PageDirectory.o \
|
|
VM/PhysicalPage.o \
|
|
VM/PhysicalRegion.o \
|
|
VM/PurgeableVMObject.o \
|
|
VM/RangeAllocator.o \
|
|
VM/Region.o \
|
|
VM/VMObject.o \
|
|
WaitQueue.o \
|
|
init.o \
|
|
kprintf.o
|
|
|
|
MODULE_OBJS = TestModule.o
|
|
|
|
OBJS = $(CXX_OBJS) Arch/i386/Boot/boot.ao
|
|
|
|
KERNEL = kernel
|
|
CXXFLAGS += -ffreestanding -mno-80387 -mno-mmx -mno-sse -mno-sse2 -fno-asynchronous-unwind-tables
|
|
CXXFLAGS += -nostdlib -nostdinc -nostdinc++
|
|
CXXFLAGS += -I../Toolchain/Local/i686-pc-serenity/include/c++/8.3.0/
|
|
CXXFLAGS += -I../Toolchain/Local/i686-pc-serenity/include/c++/8.3.0/i686-pc-serenity/
|
|
DEFINES += -DKERNEL
|
|
LDFLAGS += -Ttext 0x100000 -Wl,-T linker.ld -nostdlib
|
|
|
|
all: $(KERNEL) $(MODULE_OBJS) kernel.map
|
|
|
|
kernel.map: kernel
|
|
@echo "MKMAP $@"; sh mkmap.sh
|
|
|
|
$(KERNEL): $(OBJS)
|
|
@echo "LD $@"; $(LD) $(LDFLAGS) -o $@ $(OBJS) -lgcc -lstdc++
|
|
|
|
.cpp.o:
|
|
@echo "CXX $<"; $(CXX) $(CXXFLAGS) -o $@ -c $<
|
|
|
|
%.ao: %.S
|
|
@echo "AS $@"; $(AS) -o $@ $<
|
|
|
|
-include $(CXX_OBJS:%.o=%.d)
|
|
|
|
clean:
|
|
@echo "CLEAN"; rm -f $(KERNEL) $(OBJS) *.d
|
|
|