mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-22 15:40:19 +00:00
Kernel: Allow the user to specify the virtual console when booting
This commit is contained in:
parent
99eab4667a
commit
ab52108982
Notes:
sideshowbarker
2024-07-18 18:00:31 +09:00
Author: https://github.com/supercomputer7 Commit: https://github.com/SerenityOS/serenity/commit/ab52108982a Pull-request: https://github.com/SerenityOS/serenity/pull/6277 Reviewed-by: https://github.com/ElectrodeYT Reviewed-by: https://github.com/awesomekling
4 changed files with 17 additions and 2 deletions
|
@ -201,4 +201,13 @@ Vector<String> CommandLine::userspace_init_args() const
|
|||
return init_args;
|
||||
}
|
||||
|
||||
UNMAP_AFTER_INIT size_t CommandLine::switch_to_tty() const
|
||||
{
|
||||
const auto default_tty = lookup("switch_to_tty").value_or("1");
|
||||
auto switch_tty_number = default_tty.to_uint();
|
||||
if (switch_tty_number.has_value() && switch_tty_number.value() >= 1) {
|
||||
return switch_tty_number.value() - 1;
|
||||
}
|
||||
PANIC("Invalid default tty value: {}", default_tty);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -72,6 +72,7 @@ public:
|
|||
[[nodiscard]] String userspace_init() const;
|
||||
[[nodiscard]] Vector<String> userspace_init_args() const;
|
||||
[[nodiscard]] String root_device() const;
|
||||
[[nodiscard]] size_t switch_to_tty() const;
|
||||
|
||||
private:
|
||||
CommandLine(const String&);
|
||||
|
|
|
@ -5,8 +5,10 @@
|
|||
*/
|
||||
|
||||
#include <AK/Singleton.h>
|
||||
#include <Kernel/CommandLine.h>
|
||||
#include <Kernel/Debug.h>
|
||||
#include <Kernel/Graphics/GraphicsManagement.h>
|
||||
#include <Kernel/Panic.h>
|
||||
#include <Kernel/TTY/ConsoleManagement.h>
|
||||
|
||||
namespace Kernel {
|
||||
|
@ -39,7 +41,11 @@ UNMAP_AFTER_INIT void ConsoleManagement::initialize()
|
|||
m_consoles.append(VirtualConsole::create(index));
|
||||
}
|
||||
// Note: By default the active console is the first one.
|
||||
m_active_console = m_consoles[0];
|
||||
auto tty_number = kernel_command_line().switch_to_tty();
|
||||
if (tty_number > m_consoles.size()) {
|
||||
PANIC("Switch to tty value is invalid: {} ", tty_number);
|
||||
}
|
||||
m_active_console = m_consoles[tty_number];
|
||||
ScopedSpinLock lock(m_lock);
|
||||
m_active_console->set_active(true);
|
||||
}
|
||||
|
|
|
@ -166,7 +166,6 @@ extern "C" UNMAP_AFTER_INIT [[noreturn]] void init()
|
|||
PCI::initialize();
|
||||
GraphicsManagement::the().initialize();
|
||||
ConsoleManagement::the().initialize();
|
||||
ConsoleManagement::the().switch_to(0);
|
||||
|
||||
Thread::initialize();
|
||||
Process::initialize();
|
||||
|
|
Loading…
Reference in a new issue