Kernel: Add 'boot_prof' option to enable full system profiling on boot

The full system profiling functionality is useful for profiling the
boot performance of the system. Add a new kernel boot option to start
the system with profiling enabled. This lets you disable and view a
profile once the system is booted.

You can use it by running:
```
$ run.sh qcmd boot_prof
```
This commit is contained in:
Brian Gianforcaro 2021-03-03 01:00:41 -08:00 committed by Andreas Kling
parent 0f424afd5a
commit afe099388e
Notes: sideshowbarker 2024-07-18 21:45:21 +09:00
3 changed files with 13 additions and 1 deletions

View File

@ -88,6 +88,11 @@ bool CommandLine::contains(const String& key) const
return m_params.contains(key);
}
UNMAP_AFTER_INIT bool CommandLine::is_boot_profiling_enabled() const
{
return contains("boot_prof");
}
UNMAP_AFTER_INIT bool CommandLine::is_ide_enabled() const
{
return !contains("disable_ide");

View File

@ -61,6 +61,7 @@ public:
Optional<String> lookup(const String& key) const;
[[nodiscard]] bool contains(const String& key) const;
[[nodiscard]] bool is_boot_profiling_enabled() const;
[[nodiscard]] bool is_ide_enabled() const;
[[nodiscard]] bool is_smp_enabled() const;
[[nodiscard]] bool is_vmmouse_enabled() const;

View File

@ -246,7 +246,7 @@ void init_stage2(void*)
FinalizerTask::spawn();
PCI::initialize();
auto boot_profiling = kernel_command_line().is_boot_profiling_enabled();
auto is_text_mode = kernel_command_line().is_text_mode();
if (is_text_mode) {
dbgln("Text mode enabled");
@ -319,6 +319,12 @@ void init_stage2(void*)
}
thread->set_priority(THREAD_PRIORITY_HIGH);
if (boot_profiling) {
dbgln("Starting full system boot profiling");
auto result = Process::current()->sys$profiling_enable(-1);
VERIFY(!result.is_error());
}
NetworkTask::spawn();
Process::current()->sys$exit(0);