diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2025-01-05 12:19:58 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2025-01-05 12:19:58 +0100 |
| commit | e0633b442140d49e08af6759bd07c89e16ef0e2a (patch) | |
| tree | c83a84f5df6b3f5d486a53e19cc8ad55cd082587 /dev/Kernel | |
| parent | 5903f0c8eca69916c3acffcbe0a20a9af36fdf27 (diff) | |
ADD: Ran format command and refactors too.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/Kernel')
| -rw-r--r-- | dev/Kernel/FSKit/NeFS.h | 6 | ||||
| -rw-r--r-- | dev/Kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc | 10 | ||||
| -rw-r--r-- | dev/Kernel/HALKit/AMD64/HalDescriptorLoader.cc | 4 | ||||
| -rw-r--r-- | dev/Kernel/HALKit/AMD64/HalKernelMain.cc | 4 | ||||
| -rw-r--r-- | dev/Kernel/HALKit/AMD64/Storage/ATA-PIO.cc | 4 | ||||
| -rw-r--r-- | dev/Kernel/HALKit/ARM64/Storage/MFlash+IO.cc | 8 | ||||
| -rw-r--r-- | dev/Kernel/KernelKit/DebugOutput.h | 71 | ||||
| -rw-r--r-- | dev/Kernel/KernelKit/DeviceMgr.h | 2 | ||||
| -rw-r--r-- | dev/Kernel/KernelKit/UserProcessScheduler.h | 12 | ||||
| -rw-r--r-- | dev/Kernel/NetworkKit/IPC.h | 14 | ||||
| -rw-r--r-- | dev/Kernel/NewKit/KernelPanic.h | 2 | ||||
| -rw-r--r-- | dev/Kernel/src/DriveMgr.cc | 6 | ||||
| -rw-r--r-- | dev/Kernel/src/FS/NeFS.cc | 17 | ||||
| -rw-r--r-- | dev/Kernel/src/KernelMain.cc | 8 | ||||
| -rw-r--r-- | dev/Kernel/src/PEFCodeMgr.cc | 6 | ||||
| -rw-r--r-- | dev/Kernel/src/UserProcessScheduler.cc | 2 | ||||
| -rw-r--r-- | dev/Kernel/src/UserProcessTeam.cc | 2 |
17 files changed, 93 insertions, 85 deletions
diff --git a/dev/Kernel/FSKit/NeFS.h b/dev/Kernel/FSKit/NeFS.h index 5431225c..cddd09f0 100644 --- a/dev/Kernel/FSKit/NeFS.h +++ b/dev/Kernel/FSKit/NeFS.h @@ -112,7 +112,7 @@ default. #define kNeFSForkNameLen (200) #define kNeFSFrameworkExt ".fwrk" -#define kNeFSStepsExt ".step" +#define kNeFSStepsExt ".step" #define kNeFSApplicationExt ".app" #define kNeFSJournalExt ".jrnl" @@ -394,8 +394,8 @@ namespace Kernel } Bool CommitJournal(NeFileSystemParser* parser, - KString xml_data, - KString journal_name) + KString xml_data, + KString journal_name) { if (!parser || !mNode) diff --git a/dev/Kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc b/dev/Kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc index ca3f2353..f97669c8 100644 --- a/dev/Kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc +++ b/dev/Kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc @@ -9,7 +9,7 @@ #include <NewKit/KString.h> #include <POSIXKit/signal.h> -STATIC BOOL kIsScheduling = NO; +STATIC BOOL kIsScheduling = NO; /// @brief Handle GPF fault. /// @param rsp @@ -58,8 +58,6 @@ EXTERN_C void idt_handle_pf(Kernel::UIntPtr rsp) process.Leak().Status = Kernel::ProcessStatusKind::kKilled; process.Leak().Crash(); - - } /// @brief Handle scheduler interrupt. @@ -106,8 +104,6 @@ EXTERN_C void idt_handle_math(Kernel::UIntPtr rsp) process.Leak().Status = Kernel::ProcessStatusKind::kKilled; process.Leak().Crash(); - - } /// @brief Handle any generic fault. @@ -132,8 +128,6 @@ EXTERN_C void idt_handle_generic(Kernel::UIntPtr rsp) process.Leak().Status = Kernel::ProcessStatusKind::kKilled; process.Leak().Crash(); - - } EXTERN_C Kernel::Void idt_handle_breakpoint(Kernel::UIntPtr rip) @@ -180,8 +174,6 @@ EXTERN_C void idt_handle_ud(Kernel::UIntPtr rsp) process.Leak().Status = Kernel::ProcessStatusKind::kKilled; process.Leak().Crash(); - - } /// @brief Enter syscall from assembly. diff --git a/dev/Kernel/HALKit/AMD64/HalDescriptorLoader.cc b/dev/Kernel/HALKit/AMD64/HalDescriptorLoader.cc index ed9bf15b..680aa6ed 100644 --- a/dev/Kernel/HALKit/AMD64/HalDescriptorLoader.cc +++ b/dev/Kernel/HALKit/AMD64/HalDescriptorLoader.cc @@ -28,8 +28,8 @@ namespace Kernel::HAL UInt16 cCommDivisor = kPITFrequency / ticks; // 100 Hz. - HAL::rt_out8(kPITControlPort, 0x36); // Command to PIT - HAL::rt_out8(kPITChannel0Port, cCommDivisor & 0xFF); // Send low byte + HAL::rt_out8(kPITControlPort, 0x36); // Command to PIT + HAL::rt_out8(kPITChannel0Port, cCommDivisor & 0xFF); // Send low byte HAL::rt_out8(kPITChannel0Port, (cCommDivisor >> 8) & 0xFF); // Send high byte hal_clear_irq_mask(32); diff --git a/dev/Kernel/HALKit/AMD64/HalKernelMain.cc b/dev/Kernel/HALKit/AMD64/HalKernelMain.cc index 56f8e1e5..b6ac0f3b 100644 --- a/dev/Kernel/HALKit/AMD64/HalKernelMain.cc +++ b/dev/Kernel/HALKit/AMD64/HalKernelMain.cc @@ -26,7 +26,7 @@ STATIC Kernel::Void hal_init_cxx_ctors() { for (Kernel::SizeT i = 0U; i < Kernel::UserProcessScheduler::The().CurrentTeam().AsArray().Count(); ++i) { - Kernel::UserProcessScheduler::The().CurrentTeam().AsArray()[i] = Kernel::UserThread(); + Kernel::UserProcessScheduler::The().CurrentTeam().AsArray()[i] = Kernel::UserThread(); Kernel::UserProcessScheduler::The().CurrentTeam().AsArray()[i].Status = Kernel::ProcessStatusKind::kKilled; } @@ -69,7 +69,7 @@ EXTERN_C void hal_init_platform( /* GDT, mostly descriptors for user and kernel segments. */ STATIC Kernel::HAL::Detail::ZKA_GDT_ENTRY ALIGN(0x08) kGDTArray[kGDTEntriesCount] = { - {.fLimitLow = 0, .fBaseLow = 0, .fBaseMid = 0, .fAccessByte = 0x00, .fFlags = 0x00, .fBaseHigh = 0}, // Null entry + {.fLimitLow = 0, .fBaseLow = 0, .fBaseMid = 0, .fAccessByte = 0x00, .fFlags = 0x00, .fBaseHigh = 0}, // Null entry {.fLimitLow = 0x0, .fBaseLow = 0, .fBaseMid = 0, .fAccessByte = 0x9A, .fFlags = 0xAF, .fBaseHigh = 0}, // Kernel code {.fLimitLow = 0x0, .fBaseLow = 0, .fBaseMid = 0, .fAccessByte = 0x92, .fFlags = 0xCF, .fBaseHigh = 0}, // Kernel data {.fLimitLow = 0x0, .fBaseLow = 0, .fBaseMid = 0, .fAccessByte = 0xFA, .fFlags = 0xAF, .fBaseHigh = 0}, // User code diff --git a/dev/Kernel/HALKit/AMD64/Storage/ATA-PIO.cc b/dev/Kernel/HALKit/AMD64/Storage/ATA-PIO.cc index ea8840eb..9fc261ef 100644 --- a/dev/Kernel/HALKit/AMD64/Storage/ATA-PIO.cc +++ b/dev/Kernel/HALKit/AMD64/Storage/ATA-PIO.cc @@ -121,7 +121,7 @@ Void drv_std_read(UInt64 Lba, UInt16 IO, UInt8 Master, Char* Buf, SizeT SectorSz rt_out8(IO + ATA_REG_SEC_COUNT0, ((Size + SectorSz) / SectorSz)); - rt_out8(IO + ATA_REG_LBA0, (Lba) & 0xFF); + rt_out8(IO + ATA_REG_LBA0, (Lba)&0xFF); rt_out8(IO + ATA_REG_LBA1, (Lba) >> 8); rt_out8(IO + ATA_REG_LBA2, (Lba) >> 16); rt_out8(IO + ATA_REG_LBA3, (Lba) >> 24); @@ -153,7 +153,7 @@ Void drv_std_write(UInt64 Lba, UInt16 IO, UInt8 Master, Char* Buf, SizeT SectorS rt_out8(IO + ATA_REG_SEC_COUNT0, ((Size + (SectorSz)) / SectorSz)); - rt_out8(IO + ATA_REG_LBA0, (Lba) & 0xFF); + rt_out8(IO + ATA_REG_LBA0, (Lba)&0xFF); rt_out8(IO + ATA_REG_LBA1, (Lba) >> 8); rt_out8(IO + ATA_REG_LBA2, (Lba) >> 16); rt_out8(IO + ATA_REG_LBA3, (Lba) >> 24); diff --git a/dev/Kernel/HALKit/ARM64/Storage/MFlash+IO.cc b/dev/Kernel/HALKit/ARM64/Storage/MFlash+IO.cc index 2d556b96..fc16a7e3 100644 --- a/dev/Kernel/HALKit/ARM64/Storage/MFlash+IO.cc +++ b/dev/Kernel/HALKit/ARM64/Storage/MFlash+IO.cc @@ -22,9 +22,9 @@ namespace Kernel constexpr auto kFlashBridgeMagic = "FLSH"; constexpr auto kFlashBridgeRevision = 1; - STATIC BOOL kFlashEnabled = NO; - STATIC SizeT kFlashSize[kMaxFlashSlots] = {}; - STATIC SizeT kFlashSectorSz[kMaxFlashSlots] = {}; + STATIC BOOL kFlashEnabled = NO; + STATIC SizeT kFlashSize[kMaxFlashSlots] = {}; + STATIC SizeT kFlashSectorSz[kMaxFlashSlots] = {}; STATIC IMBCIHost* kFlashMetaPackets[kMaxFlashSlots] = {}; STATIC IMBCIHost* kFlashDataPackets[kMaxFlashSlots] = {}; @@ -76,7 +76,7 @@ namespace Kernel kFlashMetaPackets[slot]->InterruptEnable = NO; kcout << "Disabled hardware slot at: " << number(slot) << endl; - + return YES; } } // namespace Kernel 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(); diff --git a/dev/Kernel/NetworkKit/IPC.h b/dev/Kernel/NetworkKit/IPC.h index 63aa2c13..ae5d1d0c 100644 --- a/dev/Kernel/NetworkKit/IPC.h +++ b/dev/Kernel/NetworkKit/IPC.h @@ -65,15 +65,15 @@ namespace Kernel /// @brief IPC connection header, message cannot be greater than 6K. typedef struct IPC_MSG final { - UInt32 IpcHeaderMagic; // cRemoteHeaderMagic - UInt8 IpcEndianess; // 0 : LE, 1 : BE - SizeT IpcPacketSize; + UInt32 IpcHeaderMagic; // cRemoteHeaderMagic + UInt8 IpcEndianess; // 0 : LE, 1 : BE + SizeT IpcPacketSize; IPC_ADDR IpcFrom; IPC_ADDR IpcTo; - UInt32 IpcCRC32; - UInt32 IpcMsg; - UInt32 IpcMsgSz; - UInt8 IpcData[kIPCMsgSize]; + UInt32 IpcCRC32; + UInt32 IpcMsg; + UInt32 IpcMsgSz; + UInt8 IpcData[kIPCMsgSize]; /// @brief Passes the message to target, could be anything, HTTP packet, JSON or whatever. Bool Pass(IPC_MSG* target) noexcept diff --git a/dev/Kernel/NewKit/KernelPanic.h b/dev/Kernel/NewKit/KernelPanic.h index bd119357..e3c8eaae 100644 --- a/dev/Kernel/NewKit/KernelPanic.h +++ b/dev/Kernel/NewKit/KernelPanic.h @@ -29,7 +29,7 @@ namespace Kernel enum RUNTIME_CHECK { - RUNTIME_CHECK_FAILED = 1111, + RUNTIME_CHECK_FAILED = 1111, RUNTIME_CHECK_POINTER, RUNTIME_CHECK_EXPRESSION, RUNTIME_CHECK_FILE, diff --git a/dev/Kernel/src/DriveMgr.cc b/dev/Kernel/src/DriveMgr.cc index 95e5b988..8e8d5ab2 100644 --- a/dev/Kernel/src/DriveMgr.cc +++ b/dev/Kernel/src/DriveMgr.cc @@ -204,7 +204,11 @@ namespace Kernel { DriveTrait trait{}; - rt_copy_memory((VoidPtr) "/Disks/OS:", trait.fName, rt_string_len("/Disks/OS:")); + const auto kMainDrive = "/Mount/OS:"; + + rt_copy_memory((VoidPtr)kMainDrive, trait.fName, rt_string_len(kMainDrive)); + + MUST_PASS(trait.fName[0] != 0); trait.fVerify = io_drv_unimplemented; trait.fOutput = io_drv_output; diff --git a/dev/Kernel/src/FS/NeFS.cc b/dev/Kernel/src/FS/NeFS.cc index 3dcf13da..b0a7c6c6 100644 --- a/dev/Kernel/src/FS/NeFS.cc +++ b/dev/Kernel/src/FS/NeFS.cc @@ -309,7 +309,7 @@ _Output NFS_CATALOG_STRUCT* NeFileSystemParser::CreateCatalog(_Input const Char* return nullptr; } - + constexpr SizeT kDefaultForkSize = kNeFSForkSize; NFS_CATALOG_STRUCT* child_catalog = new NFS_CATALOG_STRUCT(); @@ -460,6 +460,7 @@ _Output NFS_CATALOG_STRUCT* NeFileSystemParser::CreateCatalog(_Input const Char* /// @return If it was sucessful, see err_global_get(). bool NeFileSystemParser::Format(_Input _Output DriveTrait* drive, _Input const Lba endLba, _Input const Int32 flags, const Char* part_name) { +#ifdef ZKA_EPM_SUPPORT if (*part_name == 0 || endLba == 0) return false; @@ -490,14 +491,14 @@ bool NeFileSystemParser::Format(_Input _Output DriveTrait* drive, _Input const L if (flags & kNeFSPartitionTypeBoot) { // make it bootable when needed. - Char bufEpmHdr[kNeFSSectorSz] = {0}; + Char buf_epm[kNeFSSectorSz] = {0}; - BOOT_BLOCK_STRUCT* epm_boot = (BOOT_BLOCK_STRUCT*)bufEpmHdr; + BOOT_BLOCK_STRUCT* epm_boot = (BOOT_BLOCK_STRUCT*)buf_epm; // Write a new EPM entry. constexpr auto kFsName = "NeFS"; - constexpr auto kBlockName = "ZKA:"; + constexpr auto kBlockName = "ZkaOS:"; rt_copy_memory(reinterpret_cast<VoidPtr>(const_cast<Char*>(kFsName)), epm_boot->Fs, rt_string_len(kFsName)); @@ -533,7 +534,7 @@ bool NeFileSystemParser::Format(_Input _Output DriveTrait* drive, _Input const L epm_boot->LbaEnd = endLba; epm_boot->NumBlocks = cnt; - drive->fPacket.fPacketContent = bufEpmHdr; + drive->fPacket.fPacketContent = buf_epm; drive->fPacket.fPacketSize = sizeof(EPM_BOOT_BLOCK); drive->fPacket.fPacketLba = outEpmLba; @@ -616,6 +617,7 @@ bool NeFileSystemParser::Format(_Input _Output DriveTrait* drive, _Input const L drive->fInput(&drive->fPacket); } +#endif // ZKA_EPM_SUPPORT return false; } @@ -817,7 +819,6 @@ kNeFSSearchThroughCatalogList: return nullptr; } - /// ignore unallocated catalog, break if (!(temporary_catalog.Flags & kNeFSFlagCreated)) { @@ -846,8 +847,8 @@ kNeFSSearchThroughCatalogList: if (local_search_first) { - local_search_first = false; - start_catalog_lba = kStartCatalogList; + local_search_first = false; + start_catalog_lba = kStartCatalogList; goto kNeFSSearchThroughCatalogList; } diff --git a/dev/Kernel/src/KernelMain.cc b/dev/Kernel/src/KernelMain.cc index 58592a10..303b1d81 100644 --- a/dev/Kernel/src/KernelMain.cc +++ b/dev/Kernel/src/KernelMain.cc @@ -40,10 +40,10 @@ namespace Kernel::Detail if (mNeFS) { - const SizeT kFolderCount = 8; - const Char* kFolderStr[kFolderCount] = { - "/", "/Boot/", "/System/", "/Support/", "/Applications/", - "/Users/", "/Library/", "/Mount/"}; + const SizeT kFolderCount = 8; + const Char* kFolderStr[kFolderCount] = { + "/", "/Boot/", "/System/", "/Support/", "/Applications/", + "/Users/", "/Library/", "/Mount/"}; for (Kernel::SizeT dir_index = 0UL; dir_index < kFolderCount; ++dir_index) { diff --git a/dev/Kernel/src/PEFCodeMgr.cc b/dev/Kernel/src/PEFCodeMgr.cc index 17f7f895..497e1f28 100644 --- a/dev/Kernel/src/PEFCodeMgr.cc +++ b/dev/Kernel/src/PEFCodeMgr.cc @@ -253,14 +253,12 @@ namespace Kernel if (errOrStart.Error() != kErrorSuccess) return kProcessInvalidID; - UserThread process; - auto id = UserProcessScheduler::The().Spawn(reinterpret_cast<const Char*>(exec.FindSymbol(kPefNameSymbol, kPefData)), errOrStart.Leak().Leak(), exec.GetBlob().Leak().Leak()); if (id != kProcessInvalidID) { - UserProcessScheduler::The().CurrentTeam().AsArray()[id].Kind = process_kind; - UserProcessScheduler::The().CurrentTeam().AsArray()[id].StackSize = *(UIntPtr*)exec.FindSymbol(kPefStackSizeSymbol, kPefData); + UserProcessScheduler::The().CurrentTeam().AsArray()[id].Kind = process_kind; + UserProcessScheduler::The().CurrentTeam().AsArray()[id].StackSize = *(UIntPtr*)exec.FindSymbol(kPefStackSizeSymbol, kPefData); UserProcessScheduler::The().CurrentTeam().AsArray()[id].MemoryLimit = *(UIntPtr*)exec.FindSymbol(kPefHeapSizeSymbol, kPefData); } diff --git a/dev/Kernel/src/UserProcessScheduler.cc b/dev/Kernel/src/UserProcessScheduler.cc index 85915e10..936d0547 100644 --- a/dev/Kernel/src/UserProcessScheduler.cc +++ b/dev/Kernel/src/UserProcessScheduler.cc @@ -547,7 +547,7 @@ namespace Kernel auto prev_ptime = HardwareThreadScheduler::The()[index].Leak()->fPTime; HardwareThreadScheduler::The()[index].Leak()->fPTime = UserProcessScheduler::The().CurrentTeam().AsArray()[new_pid].PTime; - Bool ret = HardwareThreadScheduler::The()[index].Leak()->Switch(image_ptr, stack, frame_ptr, new_pid); + Bool ret = HardwareThreadScheduler::The()[index].Leak()->Switch(image_ptr, stack, frame_ptr, new_pid); //////////////////////////////////////////////////////////// /// Rollback on fail. /// diff --git a/dev/Kernel/src/UserProcessTeam.cc b/dev/Kernel/src/UserProcessTeam.cc index a41160cc..aea75121 100644 --- a/dev/Kernel/src/UserProcessTeam.cc +++ b/dev/Kernel/src/UserProcessTeam.cc @@ -17,7 +17,7 @@ namespace Kernel { for (SizeT i = 0U; i < this->mProcessList.Count(); ++i) { - this->mProcessList[i] = UserThread(); + this->mProcessList[i] = UserThread(); this->mProcessList[i].Status = ProcessStatusKind::kKilled; } |
