summaryrefslogtreecommitdiffhomepage
path: root/dev
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-10-09 12:00:49 +0200
committerAmlal El Mahrouss <amlal@nekernel.org>2025-10-09 12:00:49 +0200
commit59f37ac002635171892925f163783689ec23c1fc (patch)
tree8e119894f8626b7ad23f5c9316e11e32b647bf2f /dev
parentbcc74b466240a3df8a4750e2a5a60a3748d6b3d7 (diff)
feat: fixes and improvements of the kernel.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'dev')
-rw-r--r--dev/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc2
-rw-r--r--dev/kernel/SignalKit/SignalGen.h4
-rw-r--r--dev/kernel/StorageKit/AHCI.h2
-rw-r--r--dev/kernel/src/Storage/AHCIDeviceInterface.cc2
-rw-r--r--dev/kernel/src/Storage/ATADeviceInterface.cc2
-rw-r--r--dev/kernel/src/UserMgr.cc12
-rw-r--r--dev/kernel/src/UserProcessScheduler.cc12
-rw-r--r--dev/kernel/src/UtfUtils.cc9
8 files changed, 25 insertions, 20 deletions
diff --git a/dev/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc b/dev/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc
index 77e3331d..0a465145 100644
--- a/dev/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc
+++ b/dev/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc
@@ -591,7 +591,7 @@ namespace Detail {
/// @brief Acquires a new AHCI device with drv_index in mind.
/// @param drv_index The drive index to assign.
/// @return A wrapped device interface if successful, or error code.
-ErrorOr<AHCIDeviceInterface> sk_acquire_ahci_device(Int32 drv_index) {
+ErrorOr<AHCIDeviceInterface> sk_acquire_ahci_device(UInt32 drv_index) {
if (!drv_std_detected_ahci()) return ErrorOr<AHCIDeviceInterface>(kErrorDisk);
AHCIDeviceInterface device(Detail::sk_io_read_ahci, Detail::sk_io_write_ahci);
diff --git a/dev/kernel/SignalKit/SignalGen.h b/dev/kernel/SignalKit/SignalGen.h
index 4be9452a..fdc27161 100644
--- a/dev/kernel/SignalKit/SignalGen.h
+++ b/dev/kernel/SignalKit/SignalGen.h
@@ -26,10 +26,10 @@ namespace Kernel {
typedef SizeT rt_signal_kind;
/// @brief Standard signal seed for general purpose usage.
-inline static constexpr auto kUserSignalSeed = 0x0895034fUL;
+inline constexpr auto kUserSignalSeed = 0x0895034fUL;
/// @brief Special signal seed for kernel usage.
-inline static constexpr auto kKernelSignalSeed = 0x0895034f9fUL;
+inline constexpr auto kKernelSignalSeed = 0x0895034f9fUL;
/// @brief Generate signal from **Sig**
template <rt_signal_kind Sig, SizeT Seed = kUserSignalSeed>
diff --git a/dev/kernel/StorageKit/AHCI.h b/dev/kernel/StorageKit/AHCI.h
index 3b9dac67..3605abe6 100644
--- a/dev/kernel/StorageKit/AHCI.h
+++ b/dev/kernel/StorageKit/AHCI.h
@@ -45,5 +45,5 @@ class AHCIDeviceInterface NE_DEVICE<MountpointInterface*> {
};
UInt16 sk_init_ahci_device(BOOL atapi);
-ErrorOr<AHCIDeviceInterface> sk_acquire_ahci_device(Int32 drv_index);
+ErrorOr<AHCIDeviceInterface> sk_acquire_ahci_device(UInt32 drv_index);
} // namespace Kernel
diff --git a/dev/kernel/src/Storage/AHCIDeviceInterface.cc b/dev/kernel/src/Storage/AHCIDeviceInterface.cc
index 39570665..182ed2b3 100644
--- a/dev/kernel/src/Storage/AHCIDeviceInterface.cc
+++ b/dev/kernel/src/Storage/AHCIDeviceInterface.cc
@@ -84,6 +84,6 @@ const UInt32& AHCIDeviceInterface::GetIndex() {
}
Void AHCIDeviceInterface::SetIndex(const UInt32& drv) {
- MUST_PASS(MountpointInterface::kDriveIndexInvalid != drv);
+ MUST_PASS(MountpointInterface::kDriveIndexInvalid < drv);
this->fDriveIndex = drv;
} \ No newline at end of file
diff --git a/dev/kernel/src/Storage/ATADeviceInterface.cc b/dev/kernel/src/Storage/ATADeviceInterface.cc
index 609837af..e302d2cc 100644
--- a/dev/kernel/src/Storage/ATADeviceInterface.cc
+++ b/dev/kernel/src/Storage/ATADeviceInterface.cc
@@ -74,7 +74,7 @@ const UInt32& ATADeviceInterface::GetIndex() {
}
Void ATADeviceInterface::SetIndex(const UInt32& drv) {
- MUST_PASS(MountpointInterface::kDriveIndexInvalid != drv);
+ MUST_PASS(MountpointInterface::kDriveIndexInvalid < drv);
this->fDriveIndex = drv;
}
diff --git a/dev/kernel/src/UserMgr.cc b/dev/kernel/src/UserMgr.cc
index 8e4ba540..9db1ca4d 100644
--- a/dev/kernel/src/UserMgr.cc
+++ b/dev/kernel/src/UserMgr.cc
@@ -22,7 +22,7 @@
#define kStdUserType (0xEE)
#define kSuperUserType (0xEF)
-/// @file User.cc
+/// @file UserMgr.cc
/// @brief Multi-user support.
namespace Kernel {
@@ -38,14 +38,14 @@ namespace Detail {
kout << "user_fnv_generator: Hashing user password...\r";
- const UInt64 FNV_OFFSET_BASIS = 0xcbf29ce484222325ULL;
- const UInt64 FNV_PRIME = 0x100000001b3ULL;
+ const UInt64 kFnvOffsetBasis = 0xcbf29ce484222325ULL;
+ const UInt64 fFnvPrime = 0x100000001b3ULL;
- UInt64 hash = FNV_OFFSET_BASIS;
+ UInt64 hash = kFnvOffsetBasis;
while (*password) {
- hash ^= (Utf8Char) (*password++);
- hash *= FNV_PRIME;
+ hash ^= (Char) (*password++);
+ hash *= fFnvPrime;
}
kout << "user_fnv_generator: Hashed user password.\r";
diff --git a/dev/kernel/src/UserProcessScheduler.cc b/dev/kernel/src/UserProcessScheduler.cc
index 07c4a572..ad6263c8 100644
--- a/dev/kernel/src/UserProcessScheduler.cc
+++ b/dev/kernel/src/UserProcessScheduler.cc
@@ -21,6 +21,7 @@
#include <KernelKit/ProcessScheduler.h>
#include <NeKit/KString.h>
#include <NeKit/Utils.h>
+#include <KernelKit/KPC.h>
#include <SignalKit/SignalGen.h>
///! BUGS: 0
@@ -462,15 +463,10 @@ UserProcessScheduler& UserProcessScheduler::The() {
/***********************************************************************************/
Void UserProcessScheduler::Remove(ProcessID process_id) {
- if (process_id < 0 || process_id > kSchedProcessLimitPerTeam) {
- return;
- }
-
- if (this->mTeam.mProcessList[process_id].Status == ProcessStatusKind::kInvalid) {
- return;
- }
+ if (process_id < 0 || process_id > kSchedProcessLimitPerTeam) return;
+ if (this->mTeam.mProcessList[process_id].Status == ProcessStatusKind::kInvalid) return;
- mTeam.mProcessList[process_id].Exit(0);
+ mTeam.mProcessList[process_id].Exit(kErrorSuccess);
}
/// @brief Is it a user scheduler?
diff --git a/dev/kernel/src/UtfUtils.cc b/dev/kernel/src/UtfUtils.cc
index e98b8306..d0523b96 100644
--- a/dev/kernel/src/UtfUtils.cc
+++ b/dev/kernel/src/UtfUtils.cc
@@ -10,6 +10,8 @@
namespace Kernel {
Size urt_string_len(const Utf8Char* str) {
+ if (!str) return 0;
+
SizeT len{0};
while (str[len] != u8'\0') ++len;
@@ -18,6 +20,8 @@ Size urt_string_len(const Utf8Char* str) {
}
Void urt_set_memory(const voidPtr src, UInt32 dst, Size len) {
+ if (!src) return;
+
Utf8Char* srcChr = reinterpret_cast<Utf8Char*>(src);
Size index = 0;
@@ -28,6 +32,8 @@ Void urt_set_memory(const voidPtr src, UInt32 dst, Size len) {
}
Int32 urt_string_cmp(const Utf8Char* src, const Utf8Char* cmp, Size size) {
+ if (!src) return 0;
+
Int32 counter = 0;
for (Size index = 0; index < size; ++index) {
@@ -38,6 +44,9 @@ Int32 urt_string_cmp(const Utf8Char* src, const Utf8Char* cmp, Size size) {
}
Int32 urt_copy_memory(const VoidPtr src, VoidPtr dst, Size len) {
+ if (!src) return 0;
+ if (!dst) return 0;
+
Utf8Char* srcChr = reinterpret_cast<Utf8Char*>(src);
Utf8Char* dstChar = reinterpret_cast<Utf8Char*>(dst);