summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/KernelKit
diff options
context:
space:
mode:
authorAmlal <amlal@nekernel.org>2025-04-29 08:54:34 +0200
committerAmlal <amlal@nekernel.org>2025-04-29 08:54:34 +0200
commitaa50b4980a84128fed32139758a00e215ee54a78 (patch)
treec199b57917210d66669e5771cd1ce67202ea225a /dev/kernel/KernelKit
parenta435ad97c1dac5282e148e6dac2d82aabcb553e5 (diff)
kernel: Figuring out the EPM header bug; where it gets duplicated when writing an IND. (HeFS)
Signed-off-by: Amlal <amlal@nekernel.org>
Diffstat (limited to 'dev/kernel/KernelKit')
-rw-r--r--dev/kernel/KernelKit/DebugOutput.h43
-rw-r--r--dev/kernel/KernelKit/DriveMgr.h8
2 files changed, 49 insertions, 2 deletions
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 <KernelKit/DeviceMgr.h>
#include <NewKit/OwnPtr.h>
#include <NewKit/Stream.h>
+#include <NewKit/Utils.h>
#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<const Char*> {
STATIC TerminalDevice The() noexcept;
};
+class Utf8TerminalDevice final NE_DEVICE<const Utf8Char*> {
+ public:
+ Utf8TerminalDevice(void (*print)(IDeviceObject*, const Utf8Char*),
+ void (*gets)(IDeviceObject*, const Utf8Char*))
+ : IDeviceObject<const Utf8Char*>(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()
diff --git a/dev/kernel/KernelKit/DriveMgr.h b/dev/kernel/KernelKit/DriveMgr.h
index b40cf0ad..d287a345 100644
--- a/dev/kernel/KernelKit/DriveMgr.h
+++ b/dev/kernel/KernelKit/DriveMgr.h
@@ -156,14 +156,18 @@ namespace Detect {
Void io_detect_drive(DriveTrait& trait);
}
-/// @brief Read from newfs disk.
+Void io_drv_input(DriveTrait::DrivePacket pckt);
+
+Void io_drv_output(DriveTrait::DrivePacket pckt);
+
+/// @brief Read from IFS disk.
/// @param Mnt mounted interface.
/// @param DrvTrait drive info
/// @param DrvIndex drive index.
/// @return
Int32 fs_ifs_read(MountpointInterface* Mnt, DriveTrait& DrvTrait, Int32 DrvIndex);
-/// @brief Write to ifs disk.
+/// @brief Write to IFS disk.
/// @param Mnt mounted interface.
/// @param DrvTrait drive info
/// @param DrvIndex drive index.