summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/src/Network/IPCMessage.cc
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-11-24 03:02:43 +0100
committerAmlal El Mahrouss <amlal@nekernel.org>2025-11-24 03:02:43 +0100
commit83d870e58457a1d335a1d9b9966a6a1887cc297b (patch)
tree72888f88c7728c82f3f6df1f4f70591de15eab36 /dev/kernel/src/Network/IPCMessage.cc
parentab37adbacf0f33845804c788b39680cd754752a8 (diff)
feat! breaking changes on kernel sources.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'dev/kernel/src/Network/IPCMessage.cc')
-rw-r--r--dev/kernel/src/Network/IPCMessage.cc129
1 files changed, 0 insertions, 129 deletions
diff --git a/dev/kernel/src/Network/IPCMessage.cc b/dev/kernel/src/Network/IPCMessage.cc
deleted file mode 100644
index b376b7c8..00000000
--- a/dev/kernel/src/Network/IPCMessage.cc
+++ /dev/null
@@ -1,129 +0,0 @@
-/* ========================================
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-
-======================================== */
-
-#include <KernelKit/KPC.h>
-#include <KernelKit/ProcessScheduler.h>
-#include <NetworkKit/IPC.h>
-
-namespace Kernel {
-/***********************************************************************************/
-/// @internal internal use for IPC system only.
-/// @brief The internal sanitize function.
-/***********************************************************************************/
-Bool ipc_int_sanitize_packet(IPC_MSG* pckt) {
- auto endian = RTL_ENDIAN(pckt, ((Char*) pckt)[0]);
-
- 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;
- }
-
- if (pckt->IpcFrom == pckt->IpcTo || pckt->IpcPacketSize > kIPCMsgSize) {
- goto ipc_check_failed;
- }
-
- return pckt->IpcPacketSize > 1 && pckt->IpcHeaderMagic == kIPCHeaderMagic;
-
-ipc_check_failed:
- err_local_get() = kErrorIPC;
- return false;
-}
-
-/***********************************************************************************/
-/// @brief Sanitize packet function
-/// @retval true packet is correct.
-/// @retval false packet is incorrect and process has crashed.
-/***********************************************************************************/
-Bool ipc_sanitize_packet(IPC_MSG* pckt) {
- if (!pckt || !ipc_int_sanitize_packet(pckt)) {
- return false;
- }
-
- return true;
-}
-
-/***********************************************************************************/
-/// @brief Construct packet function
-/// @retval true packet is correct.
-/// @retval false packet is incorrect and process has crashed.
-/***********************************************************************************/
-Bool ipc_construct_packet(_Output IPC_MSG** pckt_in) {
- // don't act if it's not even valid.
- if (!pckt_in) return false;
-
- if (!*pckt_in) *pckt_in = new IPC_MSG();
-
- MUST_PASS(*pckt_in);
-
- if (*pckt_in) {
- const auto endianess = RTL_ENDIAN((*pckt_in), ((Char*) (*pckt_in))[0]);
-
- (*pckt_in)->IpcHeaderMagic = kIPCHeaderMagic;
-
- (*pckt_in)->IpcEndianess = static_cast<UInt8>(endianess);
- (*pckt_in)->IpcPacketSize = sizeof(IPC_MSG);
-
- (*pckt_in)->IpcTo.UserProcessID = 0;
- (*pckt_in)->IpcTo.UserProcessTeam = 0;
-
- (*pckt_in)->IpcFrom.UserProcessID = 0;
- (*pckt_in)->IpcFrom.UserProcessTeam = 0;
-
- (*pckt_in)->IpcLock = kIPCLockFree;
-
- return Yes;
- }
-
- return No;
-}
-
-/***********************************************************************************/
-/// @brief Pass message from **src** to **target**
-/// @param src Source message.
-/// @param target Target message.
-/***********************************************************************************/
-Bool IPC_MSG::Pass(IPC_MSG* src, IPC_MSG* target) noexcept {
- if (src && target && (target != src)) {
- if (src->IpcMsgSz > target->IpcMsgSz) return No;
- if (target->IpcMsgSz > src->IpcMsgSz) return No;
-
- auto timeout = 0U;
-
- const auto kLimitTimeout = 1000000U;
-
- while ((target->IpcLock % kIPCLockUsed) != 0) {
- if (timeout > kLimitTimeout) {
- return No;
- }
- }
-
- ++target->IpcLock;
-
- rt_copy_memory_safe(src->IpcData, target->IpcData, src->IpcMsgSz, kIPCMsgSize);
-
- --target->IpcLock;
-
- return Yes;
- }
-
- return No;
-}
-} // namespace Kernel