19#include "pedigree/kernel/debugger/commands/ModulesCommand.h"
20#include "pedigree/kernel/linker/KernelElf.h"
23const char* statusName(Module::ModuleStatus status) {
25 case Module::Preloaded:
27 case Module::Executing:
33 case Module::Unloading:
35 case Module::Unloaded:
44 NormalStaticString footer(
"j: up k: down backspace: page up space: page down q: quit");
46 screen->
drawString(footer, screen->getHeight() - 1, 0, DebuggerIO::White, DebuggerIO::Green);
52ModulesCommand::~ModulesCommand() {}
60 resize(screen->
getWidth(), screen->getHeight() - 2);
61 setScrollKeys(
'j',
'k');
65 screen->
drawString(
"Pedigree debugger - Modules", 0, 0, DebuggerIO::White, DebuggerIO::Green);
67 DebuggerIO::White, DebuggerIO::Green);
74 while (!(c = screen->
getChar()))
82 scroll(
static_cast<ssize_t
>(height()));
84 scroll(-
static_cast<ssize_t
>(height()));
89 screen->
drawString(
" ", 1, 0, DebuggerIO::White, DebuggerIO::Black);
100 const Module*
module = KernelElf::instance().getModule(index);
107 m_Line += statusName(module->status);
109 m_Line +=
module->name;
111 m_Line.append(module->loadBase, 16);
113 m_Line.append(module->loadBase + module->loadSize, 16);
115 m_Line +=
module->unloadable ? "unloadable" : "pinned";
116 if (!module->runtimeUnloadable) {
117 m_Line +=
", runtime-pinned";
120 colour =
module->isFailed() ? DebuggerIO::LightRed : DebuggerIO::White;
121 bgColour = DebuggerIO::Black;
125const char* ModulesCommand::getLine2(
size_t index,
size_t& colOffset,
DebuggerIO::Colour& colour,
128 colour = DebuggerIO::Black;
129 bgColour = DebuggerIO::Black;
133size_t ModulesCommand::getLineCount() {
virtual void enableCli()=0
virtual void drawString(const char *str, size_t row, size_t col, Colour foreColour, Colour backColour)=0
virtual size_t getWidth()=0
virtual void drawHorizontalLine(char c, size_t row, size_t colStart, size_t colEnd, Colour foreColour, Colour backColour)=0
static KernelElf & instance()
const NormalStaticString getString()
void autocomplete(const HugeStaticString &input, HugeStaticString &output)
bool execute(const HugeStaticString &input, HugeStaticString &output, InterruptState &state, DebuggerIO *screen)