diff options
Diffstat (limited to 'dev')
| -rw-r--r-- | dev/Kernel/HALKit/AMD64/HalApplicationProcessor.cc | 2 | ||||
| -rw-r--r-- | dev/Kernel/HALKit/AMD64/Storage/AHCI.cc | 11 | ||||
| -rw-r--r-- | dev/Kernel/HALKit/AMD64/Storage/PIO.cc | 10 | ||||
| -rw-r--r-- | dev/Kernel/KernelKit/Timer.h | 10 | ||||
| -rw-r--r-- | dev/Kernel/KernelKit/UserProcessScheduler.inl | 12 | ||||
| -rw-r--r-- | dev/Kernel/NewKit/ErrorOr.h | 7 | ||||
| -rw-r--r-- | dev/Kernel/src/FS/NeFS.cc | 2 |
7 files changed, 34 insertions, 20 deletions
diff --git a/dev/Kernel/HALKit/AMD64/HalApplicationProcessor.cc b/dev/Kernel/HALKit/AMD64/HalApplicationProcessor.cc index 15bd7616..7a9c83bc 100644 --- a/dev/Kernel/HALKit/AMD64/HalApplicationProcessor.cc +++ b/dev/Kernel/HALKit/AMD64/HalApplicationProcessor.cc @@ -239,7 +239,7 @@ namespace NeOS::HAL hal_send_start_ipi(kApicBaseAddress, kAPICLocales[kSMPCount]); - HardwareTimer timer(NeOS::Milliseconds(10)); + HardwareTimer timer(NeOS::rtl_ms(10)); timer.Wait(); /// TODO: HAL helper to create an address. diff --git a/dev/Kernel/HALKit/AMD64/Storage/AHCI.cc b/dev/Kernel/HALKit/AMD64/Storage/AHCI.cc index f6656ce5..874b7012 100644 --- a/dev/Kernel/HALKit/AMD64/Storage/AHCI.cc +++ b/dev/Kernel/HALKit/AMD64/Storage/AHCI.cc @@ -42,7 +42,7 @@ #define kSATASRDrq (0x08) #define kHBABohcBiosOwned (1 << 0) -#define kHBABohcOSOwned (1 << 1) +#define kHBABohcOSOwned (1 << 1) #define kSATAPortCnt (0x20) @@ -85,8 +85,8 @@ STATIC Void drv_compute_disk_ahci() noexcept for (SizeT i = 0; i < 40; ++i) { - kCurrentDiskModel[i * 2] = identify_data[27 + i * 2] >> 8; - kCurrentDiskModel[i * 2 + 1] = identify_data[27 + i * 2] & 0xFF; + kCurrentDiskModel[i * 2] = identify_data[27 + (i * 2)] >> 8; + kCurrentDiskModel[i * 2 + 1] = identify_data[27 + (i * 2) + 1] & 0xFF; } kCurrentDiskModel[40] = '\0'; @@ -261,7 +261,7 @@ STATIC Bool drv_std_init_ahci(UInt16& pi, BOOL atapi) kout << "Detect: /dev/sat" << number(ahci_index) << kendl; kSATAIndex = ahci_index; - kSATAHba = mem_ahci; + kSATAHba = mem_ahci; if (kSATAHba->Bohc & kHBABohcBiosOwned) { @@ -269,7 +269,6 @@ STATIC Bool drv_std_init_ahci(UInt16& pi, BOOL atapi) while (kSATAHba->Bohc & kHBABohcBiosOwned) { - } } @@ -285,7 +284,7 @@ STATIC Bool drv_std_init_ahci(UInt16& pi, BOOL atapi) kout << "Detect: /dev/atp" << number(ahci_index) << kendl; kSATAIndex = ahci_index; - kSATAHba = mem_ahci; + kSATAHba = mem_ahci; kSATAHba->Ports[ahci_index].Cmd |= kHBAPxCmdFre | kHBAPxCmdST; diff --git a/dev/Kernel/HALKit/AMD64/Storage/PIO.cc b/dev/Kernel/HALKit/AMD64/Storage/PIO.cc index 0951dc99..62791aee 100644 --- a/dev/Kernel/HALKit/AMD64/Storage/PIO.cc +++ b/dev/Kernel/HALKit/AMD64/Storage/PIO.cc @@ -96,10 +96,10 @@ ATAInit_Retry: for (SizeT i = 0ul; i < kATADataLen; ++i) { - kATAData[i] = NeOS::HAL::rt_in16(OutBus + ATA_REG_DATA); + kATAData[i] = HAL::rt_in16(OutBus + ATA_REG_DATA); } - for (NeOS::Int32 i = 0; i < 20; i++) + for (Int32 i = 0; i < 20; i++) { kCurrentDiskModel[i * 2] = kATAData[27 + i] >> 8; kCurrentDiskModel[i * 2 + 1] = kATAData[27 + i + 1] & 0xFF; @@ -135,7 +135,7 @@ Void drv_std_read(UInt64 Lba, UInt16 IO, UInt8 Master, Char* Buf, SizeT SectorSz for (SizeT IndexOff = 0; IndexOff < Size; ++IndexOff) { drv_std_wait_io(IO); - Buf[IndexOff] = NeOS::HAL::rt_in16(IO + ATA_REG_DATA); + Buf[IndexOff] = HAL::rt_in16(IO + ATA_REG_DATA); } } @@ -175,13 +175,13 @@ Boolean drv_std_detected(Void) /*** @brief Getter, gets the number of sectors inside the drive. */ -NeOS::SizeT drv_get_sector_count() +SizeT drv_get_sector_count() { return (kATAData[61] << 16) | kATAData[60]; } /// @brief Get the drive size. -NeOS::SizeT drv_get_size() +SizeT drv_get_size() { return (drv_get_sector_count()) * kATASectorSize; } diff --git a/dev/Kernel/KernelKit/Timer.h b/dev/Kernel/KernelKit/Timer.h index 6328c1a1..abca5352 100644 --- a/dev/Kernel/KernelKit/Timer.h +++ b/dev/Kernel/KernelKit/Timer.h @@ -14,6 +14,8 @@ namespace NeOS class SoftwareTimer; class TimerInterface; + inline constexpr Int16 kTimeUnit = 1000; + class TimerInterface { public: @@ -62,20 +64,20 @@ namespace NeOS Int64 fWaitFor{0}; }; - inline Int64 Milliseconds(Int64 time) + inline Int64 rtl_ms(Int64 time) { if (time < 0) return 0; // TODO: nanoseconds maybe? - return 1000 * 1000 * time; + return kTimeUnit * kTimeUnit * time; } - inline Int64 Seconds(Int64 time) + inline Int64 rtl_seconds(Int64 time) { if (time < 0) return 0; - return 1000 * Milliseconds(time); + return kTimeUnit * rtl_ms(time); } } // namespace NeOS diff --git a/dev/Kernel/KernelKit/UserProcessScheduler.inl b/dev/Kernel/KernelKit/UserProcessScheduler.inl index ecb668fe..6b3b9300 100644 --- a/dev/Kernel/KernelKit/UserProcessScheduler.inl +++ b/dev/Kernel/KernelKit/UserProcessScheduler.inl @@ -19,6 +19,12 @@ namespace NeOS if (!ptr) return No; + if (!this->ProcessMemoryHeap) + { + kout << "Process Memory is empty.\r"; + return No; + } + ProcessMemoryHeapList* entry = this->ProcessMemoryHeap; while (entry != nullptr) @@ -29,16 +35,18 @@ namespace NeOS #ifdef __NE_AMD64__ auto pd = hal_read_cr3(); + hal_write_cr3(this->VMRegister); auto ret = mm_delete_heap(entry->MemoryEntry); hal_write_cr3(pd); - return ret; + return ret == kErrorSuccess; #else Bool ret = mm_delete_heap(ptr.Leak().Leak()); - return ret; + + return ret == kErrorSuccess; #endif } diff --git a/dev/Kernel/NewKit/ErrorOr.h b/dev/Kernel/NewKit/ErrorOr.h index 3f32b033..7c879cc8 100644 --- a/dev/Kernel/NewKit/ErrorOr.h +++ b/dev/Kernel/NewKit/ErrorOr.h @@ -67,9 +67,14 @@ namespace NeOS return mRef; } + BOOL HasError() + { + return this->mId > 0; + } + private: Ref<T> mRef; - Int32 mId{0}; + UInt32 mId{0}; }; using ErrorOrAny = ErrorOr<voidPtr>; diff --git a/dev/Kernel/src/FS/NeFS.cc b/dev/Kernel/src/FS/NeFS.cc index 971cc6c2..2742b03d 100644 --- a/dev/Kernel/src/FS/NeFS.cc +++ b/dev/Kernel/src/FS/NeFS.cc @@ -1056,7 +1056,7 @@ namespace NeOS::NeFS kMountpoint.A() = io_construct_main_drive(); if (kMountpoint.A().fPacket.fPacketReadOnly == YES) - ke_panic(RUNTIME_CHECK_FILESYSTEM, "Filesystem cannot be mounted on a broken driver."); + ke_panic(RUNTIME_CHECK_FILESYSTEM, "Main filesystem cannot be mounted."); return YES; } |
