summaryrefslogtreecommitdiffhomepage
path: root/dev/Kernel
diff options
context:
space:
mode:
Diffstat (limited to 'dev/Kernel')
-rw-r--r--dev/Kernel/KernelKit/FileMgr.h50
-rw-r--r--dev/Kernel/NetworkKit/IPC.h22
-rw-r--r--dev/Kernel/SystemKit/SwapMgr.h (renamed from dev/Kernel/NewKit/SwapMgr.h)13
-rw-r--r--dev/Kernel/SystemKit/ThreadMgr.h (renamed from dev/Kernel/NewKit/ThreadMgr.h)0
-rw-r--r--dev/Kernel/src/KernelPanic.cc2
-rw-r--r--dev/Kernel/src/Mgr/SwapMgr.cc28
-rw-r--r--dev/Kernel/src/Network/IPAddr.cc (renamed from dev/Kernel/src/Network/IP.cc)7
-rw-r--r--dev/Kernel/src/Network/IPCAddr.cc0
-rw-r--r--dev/Kernel/src/Network/IPCMsg.cc (renamed from dev/Kernel/src/Network/IPC.cc)80
-rw-r--r--dev/Kernel/src/PEFCodeMgr.cc4
10 files changed, 92 insertions, 114 deletions
diff --git a/dev/Kernel/KernelKit/FileMgr.h b/dev/Kernel/KernelKit/FileMgr.h
index c448519e..07be1089 100644
--- a/dev/Kernel/KernelKit/FileMgr.h
+++ b/dev/Kernel/KernelKit/FileMgr.h
@@ -209,7 +209,7 @@ namespace Kernel
FileStream(const FileStream&);
public:
- ErrorOr<Int64> WriteAll(const VoidPtr data) noexcept
+ ErrorOr<Int64> Write(const SizeT offset, const VoidPtr data, SizeT len) noexcept
{
if (this->fFileRestrict != kFileMgrRestrictReadWrite &&
this->fFileRestrict != kFileMgrRestrictReadWriteBinary &&
@@ -224,33 +224,14 @@ namespace Kernel
if (man)
{
- man->Write(fFile, data, kFileWriteAll);
+ man->Write(offset, fFile, data, len);
return ErrorOr<Int64>(0);
}
return ErrorOr<Int64>(kErrorInvalidData);
}
- VoidPtr ReadAll() noexcept
- {
- if (this->fFileRestrict != kFileMgrRestrictReadWrite &&
- this->fFileRestrict != kFileMgrRestrictReadWriteBinary &&
- this->fFileRestrict != kFileMgrRestrictRead &&
- this->fFileRestrict != kFileMgrRestrictReadBinary)
- return nullptr;
-
- auto man = FSClass::GetMounted();
-
- if (man)
- {
- VoidPtr ret = man->Read(fFile, kFileReadAll, 0);
- return ret;
- }
-
- return nullptr;
- }
-
- ErrorOr<Int64> WriteAll(const Char* fName, const VoidPtr data) noexcept
+ ErrorOr<Int64> Write(const Char* name, const VoidPtr data, SizeT len) noexcept
{
if (this->fFileRestrict != kFileMgrRestrictReadWrite &&
this->fFileRestrict != kFileMgrRestrictReadWriteBinary &&
@@ -265,14 +246,14 @@ namespace Kernel
if (man)
{
- man->Write(fName, fFile, data, kFileWriteAll);
+ man->Write(name, fFile, data, len);
return ErrorOr<Int64>(0);
}
return ErrorOr<Int64>(kErrorInvalidData);
}
- VoidPtr Read(const Char* fName) noexcept
+ VoidPtr Read(const Char* name, const SizeT sz) noexcept
{
if (this->fFileRestrict != kFileMgrRestrictReadWrite &&
this->fFileRestrict != kFileMgrRestrictReadWriteBinary &&
@@ -284,14 +265,14 @@ namespace Kernel
if (man)
{
- VoidPtr ret = man->Read(fName, fFile, kFileReadAll, 0);
+ VoidPtr ret = man->Read(name, fFile, kFileReadAll, 0);
return ret;
}
return nullptr;
}
- VoidPtr Read(SizeT offset, SizeT sz)
+ VoidPtr Read(SizeT offset, const SizeT sz)
{
if (this->fFileRestrict != kFileMgrRestrictReadWrite &&
this->fFileRestrict != kFileMgrRestrictReadWriteBinary &&
@@ -312,23 +293,6 @@ namespace Kernel
return nullptr;
}
- Void Write(SizeT offset, voidPtr data, SizeT sz)
- {
- if (this->fFileRestrict != kFileMgrRestrictReadWrite &&
- this->fFileRestrict != kFileMgrRestrictReadWriteBinary &&
- this->fFileRestrict != kFileMgrRestrictWrite &&
- this->fFileRestrict != kFileMgrRestrictWriteBinary)
- return;
-
- auto man = FSClass::GetMounted();
-
- if (man)
- {
- man->Seek(fFile, offset);
- man->Write(fFile, data, sz, kFileReadChunk);
- }
- }
-
public:
/// @brief Leak node pointer.
/// @return The node pointer.
diff --git a/dev/Kernel/NetworkKit/IPC.h b/dev/Kernel/NetworkKit/IPC.h
index 4bc293c4..c6594659 100644
--- a/dev/Kernel/NetworkKit/IPC.h
+++ b/dev/Kernel/NetworkKit/IPC.h
@@ -27,11 +27,11 @@
namespace Kernel
{
- struct IPCAddress;
- struct IPCMessage;
+ struct IPC_ADDR;
+ struct IPC_MSG;
/// @brief 128-bit IPC address.
- struct PACKED IPCAddress final
+ struct PACKED IPC_ADDR final
{
UInt64 UserProcessID;
UInt64 UserProcessTeam;
@@ -40,18 +40,18 @@ namespace Kernel
// some operators.
////////////////////////////////////
- bool operator==(const IPCAddress& addr) noexcept
+ bool operator==(const IPC_ADDR& addr) noexcept
{
return addr.UserProcessID == this->UserProcessID && addr.UserProcessTeam == this->UserProcessTeam;
}
- bool operator==(IPCAddress& addr) noexcept
+ bool operator==(IPC_ADDR& addr) noexcept
{
return addr.UserProcessID == this->UserProcessID && addr.UserProcessTeam == this->UserProcessTeam;
}
};
- typedef struct IPCAddress IPCEPAddressKind;
+ typedef struct IPC_ADDR IPCEPAddressKind;
enum
{
@@ -63,7 +63,7 @@ namespace Kernel
constexpr inline auto kIPCMsgSize = 6094U;
/// @brief IPC connection header, message cannot be greater than 6K.
- typedef struct IPCMessage final
+ typedef struct IPC_MSG final
{
UInt32 IpcHeaderMagic; // cRemoteHeaderMagic
UInt8 IpcEndianess; // 0 : LE, 1 : BE
@@ -76,7 +76,7 @@ namespace Kernel
UInt8 IpcData[kIPCMsgSize];
/// @brief Passes the message to target, could be anything, HTTP packet, JSON or whatever.
- Bool Pass(IPCMessage* target) noexcept
+ Bool Pass(IPC_MSG* target) noexcept
{
if (target && target->IpcFrom == this->IpcTo)
{
@@ -90,17 +90,17 @@ namespace Kernel
return No;
}
- } PACKED IPCMessage;
+ } PACKED IPC_MSG;
/// @brief Sanitize packet function
/// @retval true packet is correct.
/// @retval false packet is incorrect and process has crashed.
- Bool ipc_sanitize_packet(_Input IPCMessage* pckt_in);
+ Bool ipc_sanitize_packet(_Input IPC_MSG* pckt_in);
/// @brief Construct packet function
/// @retval true packet is correct.
/// @retval false packet is incorrect and process has crashed.
- Bool ipc_construct_packet(_Output _Input IPCMessage** pckt_in);
+ Bool ipc_construct_packet(_Output _Input IPC_MSG** pckt_in);
} // namespace Kernel
#endif // INC_IPC_H
diff --git a/dev/Kernel/NewKit/SwapMgr.h b/dev/Kernel/SystemKit/SwapMgr.h
index 42df9ca6..27296882 100644
--- a/dev/Kernel/NewKit/SwapMgr.h
+++ b/dev/Kernel/SystemKit/SwapMgr.h
@@ -16,16 +16,3 @@
/// @file SwapMgr.h
/// @brief Virtual memory swap manager.
-
-namespace Kernel
-{
- class SwapMgrDisk;
-
- class SwapMgrDisk
- {
- static BOOL DumpToDisk(const Char* fork_name, SizeT fork_name_len = 0)
- {
- return YES;
- }
- }
-} \ No newline at end of file
diff --git a/dev/Kernel/NewKit/ThreadMgr.h b/dev/Kernel/SystemKit/ThreadMgr.h
index 8148c28d..8148c28d 100644
--- a/dev/Kernel/NewKit/ThreadMgr.h
+++ b/dev/Kernel/SystemKit/ThreadMgr.h
diff --git a/dev/Kernel/src/KernelPanic.cc b/dev/Kernel/src/KernelPanic.cc
index 9b200336..f26925c5 100644
--- a/dev/Kernel/src/KernelPanic.cc
+++ b/dev/Kernel/src/KernelPanic.cc
@@ -14,8 +14,6 @@
#include <Mod/GfxMgr/FBMgr.h>
#include <Mod/GfxMgr/TextMgr.h>
-#define kWebsiteURL "https://el-mahrouss-logic.com/products/help/"
-
/* Each error code is attributed with an ID, which will prompt a string onto the
* screen. Wait for debugger... */
diff --git a/dev/Kernel/src/Mgr/SwapMgr.cc b/dev/Kernel/src/Mgr/SwapMgr.cc
new file mode 100644
index 00000000..47e20982
--- /dev/null
+++ b/dev/Kernel/src/Mgr/SwapMgr.cc
@@ -0,0 +1,28 @@
+/* -------------------------------------------
+
+ Copyright (C) 2024, Theater Quality Inc, all rights reserved.
+
+------------------------------------------- */
+
+#include <SystemKit/SwapMgr.h>
+#include <KernelKit/FileMgr.h>
+
+namespace Kernel
+{
+ class SwapMgrDiskMgr;
+
+ class SwapMgrDiskMgr final
+ {
+ static BOOL DumpToDisk(const Char* fork_name, const SizeT fork_name_len, VoidPtr data, const SizeT data_len)
+ {
+ if (!fork_name || !fork_name_len)
+ return NO;
+
+ FileStream file(kSwapMgrPageFile, "wb");
+
+ file.Write(fork_name, data, data_len);
+
+ return YES;
+ }
+ }
+} \ No newline at end of file
diff --git a/dev/Kernel/src/Network/IP.cc b/dev/Kernel/src/Network/IPAddr.cc
index 2a07bc62..f8e3e903 100644
--- a/dev/Kernel/src/Network/IP.cc
+++ b/dev/Kernel/src/Network/IPAddr.cc
@@ -104,9 +104,12 @@ namespace Kernel
bool IPFactory::IpCheckVersion4(const Char* ip)
{
- int cnter = 0;
+ if (!ip)
+ return NO;
- for (Size base = 0; base < rt_string_len(ip); ++base)
+ Int32 cnter = 0;
+
+ for (SizeT base = 0; base < rt_string_len(ip); ++base)
{
if (ip[base] == '.')
{
diff --git a/dev/Kernel/src/Network/IPCAddr.cc b/dev/Kernel/src/Network/IPCAddr.cc
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/dev/Kernel/src/Network/IPCAddr.cc
diff --git a/dev/Kernel/src/Network/IPC.cc b/dev/Kernel/src/Network/IPCMsg.cc
index 44b4665c..c93f7e7a 100644
--- a/dev/Kernel/src/Network/IPC.cc
+++ b/dev/Kernel/src/Network/IPCMsg.cc
@@ -8,57 +8,55 @@
#include <KernelKit/LPC.h>
#include <KernelKit/UserProcessScheduler.h>
-using namespace Kernel;
-
-/// @internal
-/// @brief The internal sanitize function.
-Bool ipc_int_sanitize_packet(IPCMessage* pckt)
+namespace Kernel
{
- auto endian = rtl_deduce_endianess(pckt, ((Char*)pckt)[0]);
-
- switch (endian)
+ /// @internal
+ /// @brief The internal sanitize function.
+ Bool ipc_int_sanitize_packet(IPC_MSG* pckt)
{
- case Endian::kEndianBig: {
- if (pckt->IpcEndianess == kIPCLittleEndian)
- goto ipc_check_failed;
+ auto endian = rtl_deduce_endianess(pckt, ((Char*)pckt)[0]);
- break;
- }
- case Endian::kEndianLittle: {
- if (pckt->IpcEndianess == kIPCBigEndian)
+ switch (endian)
+ {
+ case Endian::kEndianBig: {
+ if (pckt->IpcEndianess == kIPCLittleEndian)
+ goto ipc_check_failed;
+
+ break;
+ }
+ case Endian::kEndianLittle: {
+ if (pckt->IpcEndianess == kIPCBigEndian)
+ goto ipc_check_failed;
+
+ break;
+ }
+ case Endian::kEndianMixed: {
+ if (pckt->IpcEndianess == kIPCMixedEndian)
+ goto ipc_check_failed;
+
+ break;
+ }
+ default:
goto ipc_check_failed;
+ }
- break;
- }
- case Endian::kEndianMixed: {
- if (pckt->IpcEndianess == kIPCMixedEndian)
+ if (pckt->IpcFrom == pckt->IpcTo ||
+ pckt->IpcPacketSize > kIPCMsgSize)
+ {
goto ipc_check_failed;
+ }
- break;
- }
- default:
- goto ipc_check_failed;
- }
+ return pckt->IpcPacketSize > 1 && pckt->IpcHeaderMagic == kIPCHeaderMagic;
- if (pckt->IpcFrom == pckt->IpcTo ||
- pckt->IpcPacketSize > kIPCMsgSize)
- {
- goto ipc_check_failed;
+ ipc_check_failed:
+ err_local_get() = kErrorIPC;
+ return false;
}
- return pckt->IpcPacketSize > 1 && pckt->IpcHeaderMagic == kIPCHeaderMagic;
-
-ipc_check_failed:
- err_local_get() = kErrorIPC;
- return false;
-}
-
-namespace Kernel
-{
/// @brief Sanitize packet function
/// @retval true packet is correct.
/// @retval false packet is incorrect and process has crashed.
- Bool ipc_sanitize_packet(IPCMessage* pckt)
+ Bool ipc_sanitize_packet(IPC_MSG* pckt)
{
if (!pckt ||
!ipc_int_sanitize_packet(pckt))
@@ -73,7 +71,7 @@ namespace Kernel
/// @brief Construct packet function
/// @retval true packet is correct.
/// @retval false packet is incorrect and process has crashed.
- Bool ipc_construct_packet(_Output IPCMessage** pckt_in)
+ Bool ipc_construct_packet(_Output IPC_MSG** pckt_in)
{
// don't act if it's not even valid.
if (!pckt_in)
@@ -90,7 +88,7 @@ namespace Kernel
return false;
}
- *pckt_in = new IPCMessage();
+ *pckt_in = new IPC_MSG();
if (*pckt_in)
{
@@ -99,7 +97,7 @@ namespace Kernel
(*pckt_in)->IpcHeaderMagic = kIPCHeaderMagic;
(*pckt_in)->IpcEndianess = static_cast<UInt8>(endian);
- (*pckt_in)->IpcPacketSize = sizeof(IPCMessage);
+ (*pckt_in)->IpcPacketSize = sizeof(IPC_MSG);
(*pckt_in)->IpcTo.UserProcessID = 0;
(*pckt_in)->IpcTo.UserProcessTeam = 0;
diff --git a/dev/Kernel/src/PEFCodeMgr.cc b/dev/Kernel/src/PEFCodeMgr.cc
index a8205004..c78dac01 100644
--- a/dev/Kernel/src/PEFCodeMgr.cc
+++ b/dev/Kernel/src/PEFCodeMgr.cc
@@ -66,7 +66,7 @@ namespace Kernel
auto kPefHeader = "PEF_CONTAINER";
- fCachedBlob = fFile->Read(kPefHeader);
+ fCachedBlob = fFile->Read(kPefHeader, mib_cast(16));
PEFContainer* container = reinterpret_cast<PEFContainer*>(fCachedBlob);
@@ -123,7 +123,7 @@ namespace Kernel
PEFContainer* container = reinterpret_cast<PEFContainer*>(fCachedBlob);
- auto blob = fFile->Read(name);
+ auto blob = fFile->Read(name, mib_cast(16));
PEFCommandHeader* container_header = reinterpret_cast<PEFCommandHeader*>(blob);