From aa50b4980a84128fed32139758a00e215ee54a78 Mon Sep 17 00:00:00 2001 From: Amlal Date: Tue, 29 Apr 2025 08:54:34 +0200 Subject: kernel: Figuring out the EPM header bug; where it gets duplicated when writing an IND. (HeFS) Signed-off-by: Amlal --- dev/kernel/KernelKit/DebugOutput.h | 43 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'dev/kernel/KernelKit/DebugOutput.h') diff --git a/dev/kernel/KernelKit/DebugOutput.h b/dev/kernel/KernelKit/DebugOutput.h index 7110a941..f6cfa027 100644 --- a/dev/kernel/KernelKit/DebugOutput.h +++ b/dev/kernel/KernelKit/DebugOutput.h @@ -10,6 +10,7 @@ #include #include #include +#include #define kDebugUnboundPort 0x0FEED @@ -26,6 +27,8 @@ namespace Kernel { class TerminalDevice; class DTraceDevice; +class DebugDevice; +class Utf8TerminalDevice; inline TerminalDevice end_line(); inline TerminalDevice number(const Long& x); @@ -49,6 +52,23 @@ class TerminalDevice final NE_DEVICE { STATIC TerminalDevice The() noexcept; }; +class Utf8TerminalDevice final NE_DEVICE { + public: + Utf8TerminalDevice(void (*print)(IDeviceObject*, const Utf8Char*), + void (*gets)(IDeviceObject*, const Utf8Char*)) + : IDeviceObject(print, gets) {} + + ~Utf8TerminalDevice() override; + + /// @brief returns device name (terminal name) + /// @return string type (const Char*) + const Char* Name() const override { return ("Utf8TerminalDevice"); } + + NE_COPY_DEFAULT(Utf8TerminalDevice) + + STATIC Utf8TerminalDevice The() noexcept; +}; + inline TerminalDevice end_line() { TerminalDevice self = TerminalDevice::The(); @@ -56,6 +76,13 @@ inline TerminalDevice end_line() { return self; } +inline Utf8TerminalDevice utf_end_line() { + Utf8TerminalDevice self = Utf8TerminalDevice::The(); + + self.operator<<(u8"\r"); + return self; +} + inline TerminalDevice carriage_return() { TerminalDevice self = TerminalDevice::The(); @@ -175,4 +202,20 @@ inline TerminalDevice& operator<<(TerminalDevice& src, const Long& num) { #define kout TerminalDevice::The() +#ifdef kendl +#undef kendl +#endif // ifdef kendl + #define kendl end_line() + +#ifdef kout8 +#undef kout8 +#endif // ifdef kout8 + +#define kout8 Utf8TerminalDevice::The() + +#ifdef kendl8 +#undef kendl8 +#endif // ifdef kendl8 + +#define kendl8 utf_end_line() -- cgit v1.2.3