Kernel: Print all logbuffer from ConsoleDevice to debug Virtual Console

This commit is contained in:
Liav A 2021-05-14 16:39:28 +03:00 committed by Andreas Kling
parent 2e565f1b8a
commit dbccfc3281
Notes: sideshowbarker 2024-07-18 18:00:18 +09:00
3 changed files with 35 additions and 5 deletions

View File

@ -38,6 +38,11 @@ UNMAP_AFTER_INIT ConsoleManagement::ConsoleManagement()
UNMAP_AFTER_INIT void ConsoleManagement::initialize()
{
for (size_t index = 0; index < 4; index++) {
// FIXME: Better determine the debug TTY we chose...
if (index == 1) {
m_consoles.append(VirtualConsole::create_with_preset_log(index, ConsoleDevice::the().logbuffer()));
continue;
}
m_consoles.append(VirtualConsole::create(index));
}
// Note: By default the active console is the first one.

View File

@ -116,10 +116,12 @@ UNMAP_AFTER_INIT NonnullRefPtr<VirtualConsole> VirtualConsole::create(size_t ind
return adopt_ref(*new VirtualConsole(index));
}
UNMAP_AFTER_INIT VirtualConsole::VirtualConsole(const unsigned index)
: TTY(4, index)
, m_index(index)
, m_console_impl(*this)
UNMAP_AFTER_INIT NonnullRefPtr<VirtualConsole> VirtualConsole::create_with_preset_log(size_t index, const CircularQueue<char, 16384>& log)
{
return adopt_ref(*new VirtualConsole(index, log));
}
UNMAP_AFTER_INIT void VirtualConsole::initialize()
{
m_tty_name = String::formatted("/dev/tty{}", m_index);
VERIFY(GraphicsManagement::the().console());
@ -138,6 +140,25 @@ UNMAP_AFTER_INIT VirtualConsole::VirtualConsole(const unsigned index)
VERIFY(m_cells);
}
UNMAP_AFTER_INIT VirtualConsole::VirtualConsole(const unsigned index)
: TTY(4, index)
, m_index(index)
, m_console_impl(*this)
{
initialize();
}
UNMAP_AFTER_INIT VirtualConsole::VirtualConsole(const unsigned index, const CircularQueue<char, 16384>& log)
: TTY(4, index)
, m_index(index)
, m_console_impl(*this)
{
initialize();
for (auto& ch : log) {
echo(ch);
}
}
UNMAP_AFTER_INIT VirtualConsole::~VirtualConsole()
{
VERIFY_NOT_REACHED();

View File

@ -74,6 +74,7 @@ public:
public:
static NonnullRefPtr<VirtualConsole> create(size_t index);
static NonnullRefPtr<VirtualConsole> create_with_preset_log(size_t index, const CircularQueue<char, 16384>&);
virtual ~VirtualConsole() override;
@ -85,7 +86,8 @@ public:
void emit_char(char);
private:
VirtualConsole(const unsigned index);
explicit VirtualConsole(const unsigned index);
VirtualConsole(const unsigned index, const CircularQueue<char, 16384>&);
// ^KeyboardClient
virtual void on_key_pressed(KeyEvent) override;
@ -119,6 +121,8 @@ private:
RecursiveSpinLock m_lock;
private:
void initialize();
void invalidate_cursor(size_t row);
void clear();