summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--dev/Kernel/HALKit/AMD64/HalApplicationProcessor.cc2
-rw-r--r--dev/Kernel/HALKit/AMD64/Storage/AHCI.cc11
-rw-r--r--dev/Kernel/HALKit/AMD64/Storage/PIO.cc10
-rw-r--r--dev/Kernel/KernelKit/Timer.h10
-rw-r--r--dev/Kernel/KernelKit/UserProcessScheduler.inl12
-rw-r--r--dev/Kernel/NewKit/ErrorOr.h7
-rw-r--r--dev/Kernel/src/FS/NeFS.cc2
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;
}