feat: Various improvements

This commit is contained in:
Daniel Hammer
2025-04-16 10:32:11 +02:00
parent 35cf3f7c80
commit fcd81be1c5
14 changed files with 135 additions and 98 deletions
+74 -2
View File
@@ -15,8 +15,20 @@ namespace Kt
{
constexpr const char *clear = "\033[2J";
constexpr const char *cursor_reset = "\033[H";
};
namespace colors {
constexpr const char* black = "\u001b[30m";
constexpr const char* red = "\u001b[31m";
constexpr const char* green = "\u001b[32m";
constexpr const char* blue = "\u001b[34m";
constexpr const char* cyan = "\u001b[36m";
constexpr const char* yellow = "\u001b[33m";
constexpr const char* magenta = "\u001b[35m";
constexpr const char* white = "\u001b[37m";
};
};
void Initialize(std::uint32_t *framebuffer, std::size_t width, std::size_t height, std::size_t pitch,
std::uint8_t red_mask_size, std::uint8_t red_mask_shift,
std::uint8_t green_mask_size, std::uint8_t green_mask_shift,
@@ -77,7 +89,67 @@ namespace Kt
}
};
// This will be on the kernel entry point's stack. Which is totally fine since we don't ever exit from that function
enum KernelLogLevel {
INFO,
WARNING,
ERROR,
DEBUG,
OK
};
class KernelLogStream {
KernelOutStream localStream{};
KernelLogLevel level;
const char* componentName = "";
public:
KernelLogStream(KernelLogLevel desiredLevel, const char* desiredComponentName) {
level = desiredLevel;
componentName = desiredComponentName;
switch (level) {
case INFO: {
localStream << screen::colors::cyan << "INFO " << screen::colors::white;
break;
}
case WARNING: {
localStream << screen::colors::yellow << "WARNING " << screen::colors::white;
break;
}
case ERROR: {
localStream << screen::colors::red << "ERROR " << screen::colors::white;
break;
}
case DEBUG: {
localStream << screen::colors::magenta << "DEBUG " << screen::colors::white;
break;
}
case OK: {
localStream << screen::colors::green << "OK " << screen::colors::white;
break ;
}
}
localStream << componentName << ": ";
}
~KernelLogStream() {
localStream << newline;
}
template<typename T>
KernelLogStream &operator<<(T item) {
localStream << item;
return *this;
}
};
};
extern Kt::KernelOutStream kout;