File tree Expand file tree Collapse file tree 4 files changed +23
-13
lines changed Expand file tree Collapse file tree 4 files changed +23
-13
lines changed Original file line number Diff line number Diff line change 13
13
namespace Kernel {
14
14
15
15
class PerformanceManager {
16
-
17
16
public:
17
+ inline static void add_process_created_event (Process& process)
18
+ {
19
+ if (g_profiling_all_threads) {
20
+ VERIFY (g_global_perf_events);
21
+ g_global_perf_events->add_process (process, ProcessEventType::Create);
22
+ }
23
+ }
24
+
25
+ inline static void add_process_exec_event (Process& process)
26
+ {
27
+ if (auto * event_buffer = process.current_perf_events_buffer ()) {
28
+ event_buffer->add_process (process, ProcessEventType::Exec);
29
+ }
30
+ }
31
+
18
32
inline static void add_thread_created_event (Thread& thread)
19
33
{
20
34
if (auto * event_buffer = thread.process ().current_perf_events_buffer ()) {
Original file line number Diff line number Diff line change 11
11
#include < Kernel/Debug.h>
12
12
#include < Kernel/FileSystem/Custody.h>
13
13
#include < Kernel/FileSystem/FileDescription.h>
14
- #include < Kernel/PerformanceEventBuffer .h>
14
+ #include < Kernel/PerformanceManager .h>
15
15
#include < Kernel/Process.h>
16
16
#include < Kernel/Random.h>
17
17
#include < Kernel/Time/TimeManagement.h>
@@ -636,9 +636,7 @@ KResult Process::do_exec(NonnullRefPtr<FileDescription> main_program_description
636
636
tss.cr3 = space ().page_directory ().cr3 ();
637
637
tss.ss2 = pid ().value ();
638
638
639
- if (auto * event_buffer = current_perf_events_buffer ()) {
640
- event_buffer->add_process (*this , ProcessEventType::Exec);
641
- }
639
+ PerformanceManager::add_process_exec_event (*this );
642
640
643
641
{
644
642
ScopedSpinLock lock (g_scheduler_lock);
Original file line number Diff line number Diff line change 7
7
#include < Kernel/Debug.h>
8
8
#include < Kernel/FileSystem/Custody.h>
9
9
#include < Kernel/FileSystem/FileDescription.h>
10
- #include < Kernel/PerformanceEventBuffer .h>
10
+ #include < Kernel/PerformanceManager .h>
11
11
#include < Kernel/Process.h>
12
12
#include < Kernel/VM/Region.h>
13
13
@@ -85,10 +85,7 @@ KResultOr<pid_t> Process::sys$fork(RegisterState& regs)
85
85
g_processes->prepend (child);
86
86
}
87
87
88
- if (g_profiling_all_threads) {
89
- VERIFY (g_global_perf_events);
90
- g_global_perf_events->add_process (*child, ProcessEventType::Create);
91
- }
88
+ PerformanceManager::add_process_created_event (*child);
92
89
93
90
ScopedSpinLock lock (g_scheduler_lock);
94
91
child_first_thread->set_affinity (Thread::current ()->affinity ());
Original file line number Diff line number Diff line change 7
7
#include < Kernel/CoreDump.h>
8
8
#include < Kernel/FileSystem/FileDescription.h>
9
9
#include < Kernel/FileSystem/VirtualFileSystem.h>
10
- #include < Kernel/PerformanceEventBuffer .h>
10
+ #include < Kernel/PerformanceManager .h>
11
11
#include < Kernel/Process.h>
12
12
13
13
namespace Kernel {
@@ -27,12 +27,13 @@ KResultOr<int> Process::sys$profiling_enable(pid_t pid)
27
27
g_global_perf_events->clear ();
28
28
else
29
29
g_global_perf_events = PerformanceEventBuffer::try_create_with_size (32 * MiB).leak_ptr ();
30
+
30
31
ScopedSpinLock lock (g_processes_lock);
32
+ g_profiling_all_threads = true ;
31
33
Process::for_each ([](auto & process) {
32
- g_global_perf_events-> add_process (process, ProcessEventType::Create );
34
+ PerformanceManager::add_process_created_event (process );
33
35
return IterationDecision::Continue;
34
36
});
35
- g_profiling_all_threads = true ;
36
37
return 0 ;
37
38
}
38
39
You can’t perform that action at this time.
0 commit comments