summaryrefslogtreecommitdiffhomepage
path: root/dev/Kernel/KernelKit
diff options
context:
space:
mode:
Diffstat (limited to 'dev/Kernel/KernelKit')
-rw-r--r--dev/Kernel/KernelKit/DebugOutput.h71
-rw-r--r--dev/Kernel/KernelKit/DeviceMgr.h2
-rw-r--r--dev/Kernel/KernelKit/UserProcessScheduler.h12
3 files changed, 49 insertions, 36 deletions
diff --git a/dev/Kernel/KernelKit/DebugOutput.h b/dev/Kernel/KernelKit/DebugOutput.h
index a3fc5a9d..490ffdec 100644
--- a/dev/Kernel/KernelKit/DebugOutput.h
+++ b/dev/Kernel/KernelKit/DebugOutput.h
@@ -38,8 +38,8 @@ namespace Kernel
class TerminalDevice final ZKA_DEVICE<const Char*>
{
public:
- TerminalDevice(void (*print)(const Char*), void (*get)(const Char*))
- : IDeviceObject<const Char*>(print, get)
+ TerminalDevice(void (*print)(const Char*), void (*gets)(const Char*))
+ : IDeviceObject<const Char*>(print, gets)
{
}
@@ -47,7 +47,7 @@ namespace Kernel
/// @brief returns device name (terminal name)
/// @return string type (const Char*)
- virtual const Char* Name() const override
+ const Char* Name() const override
{
return ("TerminalDevice");
}
@@ -59,35 +59,35 @@ namespace Kernel
inline TerminalDevice end_line()
{
- TerminalDevice selfTerm = TerminalDevice::The();
+ TerminalDevice self = TerminalDevice::The();
- selfTerm.operator<<("\r");
- return selfTerm;
+ self.operator<<("\r");
+ return self;
}
inline TerminalDevice carriage_return()
{
- TerminalDevice selfTerm = TerminalDevice::The();
+ TerminalDevice self = TerminalDevice::The();
- selfTerm.operator<<("\r");
- return selfTerm;
+ self.operator<<("\r");
+ return self;
}
inline TerminalDevice tabulate()
{
- TerminalDevice selfTerm = TerminalDevice::The();
+ TerminalDevice self = TerminalDevice::The();
- selfTerm.operator<<("\t");
- return selfTerm;
+ self.operator<<("\t");
+ return self;
}
/// @brief emulate a terminal bell, like the VT100 does.
inline TerminalDevice bell()
{
- TerminalDevice selfTerm = TerminalDevice::The();
+ TerminalDevice self = TerminalDevice::The();
- selfTerm.operator<<("\a");
- return selfTerm;
+ self.operator<<("\a");
+ return self;
}
namespace Detail
@@ -151,30 +151,39 @@ namespace Kernel
inline TerminalDevice hex_number(const Long& x)
{
- TerminalDevice selfTerm = TerminalDevice::The();
+ TerminalDevice self = TerminalDevice::The();
- Detail::_write_number_hex(x, selfTerm);
- selfTerm.operator<<("h");
+ Detail::_write_number_hex(x, self);
+ self.operator<<("h");
- return selfTerm;
+ return self;
+ }
+
+ inline TerminalDevice number(const Char* x)
+ {
+ TerminalDevice self = TerminalDevice::The();
+
+ self << "?";
+
+ return self;
}
inline TerminalDevice number(const Long& x)
{
- TerminalDevice selfTerm = TerminalDevice::The();
+ TerminalDevice self = TerminalDevice::The();
- Detail::_write_number(x, selfTerm);
+ Detail::_write_number(x, self);
- return selfTerm;
+ return self;
}
inline TerminalDevice get_console_in(Char* buf)
{
- TerminalDevice selfTerm = TerminalDevice::The();
+ TerminalDevice self = TerminalDevice::The();
- selfTerm >> buf;
+ self >> buf;
- return selfTerm;
+ return self;
}
typedef Char rt_debug_type[255];
@@ -185,14 +194,18 @@ namespace Kernel
Int16 fPort[kDebugMaxPorts];
Int16 fBoundCnt;
};
+
+ inline TerminalDevice& operator<<(TerminalDevice& src, auto number)
+ {
+ number(number, src);
+ return src;
+ }
} // namespace Kernel
#ifdef kcout
#undef kcout
#endif // ifdef kcout
-#define kcout \
- (Kernel::TerminalDevice::The() << "\e[0;31m [Kernel] (Path: /" << __FILE__ << ") (Line: " << Kernel::number(__LINE__)); \
- (Kernel::TerminalDevice::The() << ") \e[0m" \
- << ": ")
+#define kcout Kernel::TerminalDevice::The() << "\e[0;31m [ZKA] " << __FILE__ << " \e[0m: "
+
#define endl Kernel::TerminalDevice::The() << Kernel::end_line()
diff --git a/dev/Kernel/KernelKit/DeviceMgr.h b/dev/Kernel/KernelKit/DeviceMgr.h
index 1c9233b7..81684f02 100644
--- a/dev/Kernel/KernelKit/DeviceMgr.h
+++ b/dev/Kernel/KernelKit/DeviceMgr.h
@@ -79,7 +79,7 @@ namespace Kernel
return !fOut || !fIn;
}
- private:
+ protected:
Void (*fOut)(T Data) = {nullptr};
Void (*fIn)(T Data) = {nullptr};
};
diff --git a/dev/Kernel/KernelKit/UserProcessScheduler.h b/dev/Kernel/KernelKit/UserProcessScheduler.h
index 452a55a3..a08a5dc1 100644
--- a/dev/Kernel/KernelKit/UserProcessScheduler.h
+++ b/dev/Kernel/KernelKit/UserProcessScheduler.h
@@ -262,14 +262,14 @@ namespace Kernel
ZKA_COPY_DEFAULT(UserProcessTeam);
Array<UserThread, kSchedProcessLimitPerTeam>& AsArray();
- Ref<UserThread>& AsRef();
- ProcessID& Id() noexcept;
+ Ref<UserThread>& AsRef();
+ ProcessID& Id() noexcept;
public:
Array<UserThread, kSchedProcessLimitPerTeam> mProcessList;
- Ref<UserThread> mCurrentProcess;
- ProcessID mTeamId{0};
- ProcessID mProcessCount{0};
+ Ref<UserThread> mCurrentProcess;
+ ProcessID mTeamId{0};
+ ProcessID mProcessCount{0};
};
using UserProcessRef = UserThread&;
@@ -302,7 +302,7 @@ namespace Kernel
public:
Ref<UserThread>& GetCurrentProcess();
- const SizeT Run() noexcept;
+ const SizeT Run() noexcept;
public:
STATIC UserProcessScheduler& The();