1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 16:07:47 +00:00

Kernel: Add syscall performance event type

This allows tracing the syscalls made by a thread through the kernel's
performance event framework, which is similar in principle to strace.

Currently, this merely logs a stack backtrace to the current thread's
performance event buffer whenever a syscall is made, if profiling is
enabled. Future improvements could include tracing the arguments and
the return value, for example.
This commit is contained in:
Jean-Baptiste Boric 2021-08-10 21:02:59 +02:00 committed by Andreas Kling
parent 4c4b8ea443
commit 0286160b62
6 changed files with 24 additions and 1 deletions

View file

@ -135,6 +135,8 @@ KResult PerformanceEventBuffer::append_with_ip_and_bp(ProcessID pid, ThreadID ti
break;
case PERF_EVENT_PAGE_FAULT:
break;
case PERF_EVENT_SYSCALL:
break;
default:
return EINVAL;
}
@ -226,6 +228,9 @@ bool PerformanceEventBuffer::to_json_impl(Serializer& object) const
case PERF_EVENT_PAGE_FAULT:
event_object.add("type", "page_fault");
break;
case PERF_EVENT_SYSCALL:
event_object.add("type", "syscall");
break;
}
event_object.add("pid", event.pid);
event_object.add("tid", event.tid);