diff --git a/Kernel/PerformanceEventBuffer.cpp b/Kernel/PerformanceEventBuffer.cpp index 5a08c9facc..ee62c2de62 100644 --- a/Kernel/PerformanceEventBuffer.cpp +++ b/Kernel/PerformanceEventBuffer.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include @@ -54,6 +55,12 @@ static Vector raw_backtrace(Fl return backtrace; } +KResult PerformanceEventBuffer::append_with_ip_and_bp(ProcessID pid, ThreadID tid, const RegisterState& regs, + int type, u32 lost_samples, FlatPtr arg1, FlatPtr arg2, const StringView& arg3) +{ + return append_with_ip_and_bp(pid, tid, regs.ip(), regs.bp(), type, lost_samples, arg1, arg2, arg3); +} + KResult PerformanceEventBuffer::append_with_ip_and_bp(ProcessID pid, ThreadID tid, FlatPtr ip, FlatPtr bp, int type, u32 lost_samples, FlatPtr arg1, FlatPtr arg2, const StringView& arg3) { diff --git a/Kernel/PerformanceEventBuffer.h b/Kernel/PerformanceEventBuffer.h index 3b9a4703a4..6247cb173d 100644 --- a/Kernel/PerformanceEventBuffer.h +++ b/Kernel/PerformanceEventBuffer.h @@ -12,6 +12,7 @@ namespace Kernel { class KBufferBuilder; +struct RegisterState; struct [[gnu::packed]] MallocPerformanceEvent { size_t size; @@ -103,6 +104,8 @@ public: KResult append(int type, FlatPtr arg1, FlatPtr arg2, const StringView& arg3, Thread* current_thread = Thread::current()); KResult append_with_ip_and_bp(ProcessID pid, ThreadID tid, FlatPtr eip, FlatPtr ebp, int type, u32 lost_samples, FlatPtr arg1, FlatPtr arg2, const StringView& arg3); + KResult append_with_ip_and_bp(ProcessID pid, ThreadID tid, const RegisterState& regs, + int type, u32 lost_samples, FlatPtr arg1, FlatPtr arg2, const StringView& arg3); void clear() {