summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2025-01-31 18:56:47 +0100
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2025-01-31 18:56:47 +0100
commit9c1e80e1bb3a8d549a9053f0d7bf4afb0c806f80 (patch)
treecc4d3d30a089b268c5d2e8c621c1f9136987dff8
parentd3fee45621c2dda8c809402169aa0b9ac064d91c (diff)
TWEAKS: Improvements and tweaks.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
-rw-r--r--dev/Kernel/HALKit/AMD64/Storage/SATA.cc2
-rw-r--r--dev/Kernel/KernelKit/UserProcessScheduler.h2
-rw-r--r--dev/Kernel/src/BitMapMgr.cc22
-rw-r--r--dev/Kernel/src/UserProcessScheduler.cc20
-rwxr-xr-xgdb.sh3
-rwxr-xr-xrun_debugger.sh3
6 files changed, 28 insertions, 24 deletions
diff --git a/dev/Kernel/HALKit/AMD64/Storage/SATA.cc b/dev/Kernel/HALKit/AMD64/Storage/SATA.cc
index 46bb1ea3..a3b8992f 100644
--- a/dev/Kernel/HALKit/AMD64/Storage/SATA.cc
+++ b/dev/Kernel/HALKit/AMD64/Storage/SATA.cc
@@ -298,10 +298,8 @@ static Kernel::Void drv_std_input_output(Kernel::UInt64 lba, Kernel::UInt8* buff
kcout << "Waiting for slot to be ready...\r\n";
}
-
if (kSATAPort->Is & kHBAErrTaskFile)
Kernel::ke_panic(RUNTIME_CHECK_BAD_BEHAVIOR, "AHCI Read disk failure, faulty component.");
-
}
/***
diff --git a/dev/Kernel/KernelKit/UserProcessScheduler.h b/dev/Kernel/KernelKit/UserProcessScheduler.h
index b1022fb1..013f903e 100644
--- a/dev/Kernel/KernelKit/UserProcessScheduler.h
+++ b/dev/Kernel/KernelKit/UserProcessScheduler.h
@@ -36,6 +36,8 @@ namespace Kernel
class UserProcessScheduler;
class UserProcessHelper;
+ typedef UInt64 PTime;
+
//! @brief Local Process identifier.
typedef Int64 ProcessID;
diff --git a/dev/Kernel/src/BitMapMgr.cc b/dev/Kernel/src/BitMapMgr.cc
index 1be0ed3c..c232fa4f 100644
--- a/dev/Kernel/src/BitMapMgr.cc
+++ b/dev/Kernel/src/BitMapMgr.cc
@@ -29,13 +29,13 @@ namespace Kernel
namespace Detail
{
/// \brief Proxy Interface to allocate a bitmap.
- class IBitMap final
+ class IBitMapProxy final
{
public:
- explicit IBitMap() = default;
- ~IBitMap() = default;
+ explicit IBitMapProxy() = default;
+ ~IBitMapProxy() = default;
- ZKA_COPY_DELETE(IBitMap);
+ ZKA_COPY_DELETE(IBitMapProxy);
auto IsBitMap(VoidPtr page_ptr) -> Bool
{
@@ -159,7 +159,7 @@ namespace Kernel
auto mm_is_bitmap(VoidPtr ptr) -> Bool
{
- Detail::IBitMap bitmp;
+ Detail::IBitMapProxy bitmp;
return bitmp.IsBitMap(ptr);
}
@@ -169,23 +169,25 @@ namespace Kernel
/// @return a new bitmap allocated pointer.
auto mm_alloc_bitmap(Boolean wr, Boolean user, SizeT size, Bool is_page) -> VoidPtr
{
- VoidPtr ptr_new = nullptr;
- Detail::IBitMap bitmp;
+ VoidPtr ptr_new = nullptr;
+ Detail::IBitMapProxy bitmp;
ptr_new = bitmp.FindBitMap(kKernelBitMpStart, size, wr, user);
+ MUST_PASS(ptr_new);
+
return (UIntPtr*)ptr_new;
}
- /// @brief Free Bitmap, and mark it a absent in page terms.
+ /// @brief Free Bitmap, and mark it as absent.
/// @param ptr the pointer to free.
auto mm_free_bitmap(VoidPtr ptr) -> Bool
{
if (!ptr)
return No;
- Detail::IBitMap bitmp;
- Bool ret = bitmp.FreeBitMap(ptr);
+ Detail::IBitMapProxy bitmp;
+ Bool ret = bitmp.FreeBitMap(ptr);
return ret;
}
diff --git a/dev/Kernel/src/UserProcessScheduler.cc b/dev/Kernel/src/UserProcessScheduler.cc
index 30d9af27..9626296f 100644
--- a/dev/Kernel/src/UserProcessScheduler.cc
+++ b/dev/Kernel/src/UserProcessScheduler.cc
@@ -550,7 +550,7 @@ namespace Kernel
*/
/***********************************************************************************/
- Bool UserProcessHelper::Switch(VoidPtr image_ptr, UInt8* stack, HAL::StackFramePtr frame_ptr, const PID& new_pid)
+ Bool UserProcessHelper::Switch(VoidPtr image, UInt8* stack, HAL::StackFramePtr frame_ptr, const PID& new_pid)
{
for (SizeT index = 0UL; index < HardwareThreadScheduler::The().Capacity(); ++index)
{
@@ -558,18 +558,20 @@ namespace Kernel
HardwareThreadScheduler::The()[index].Leak()->Kind() == kAPBoot)
continue;
- // a fallback is a special core for real-time tasks which needs immediate execution.
+ // A fallback is a special core for real-time tasks which needs immediate execution.
if (HardwareThreadScheduler::The()[index].Leak()->Kind() == kAPFallback)
{
if (UserProcessScheduler::The().CurrentTeam().AsArray()[new_pid].Affinity != AffinityKind::kRealTime)
continue;
- if (HardwareThreadScheduler::The()[index].Leak()->Switch(image_ptr, stack, frame_ptr, new_pid))
+ if (HardwareThreadScheduler::The()[index].Leak()->Switch(image, stack, frame_ptr, new_pid))
{
- auto prev_ptime = HardwareThreadScheduler::The()[index].Leak()->fPTime;
+ PTime prev_ptime = HardwareThreadScheduler::The()[index].Leak()->fPTime;
+
HardwareThreadScheduler::The()[index].Leak()->fPTime = UserProcessScheduler::The().CurrentTeam().AsArray()[new_pid].PTime;
- PID prev_pid = UserProcessHelper::TheCurrentPID();
- UserProcessHelper::TheCurrentPID().Leak().Leak() = new_pid;
+
+ PID prev_pid = UserProcessHelper::TheCurrentPID();
+ UserProcessHelper::TheCurrentPID().Leak().Leak() = new_pid;
return YES;
}
@@ -584,7 +586,7 @@ namespace Kernel
/// Prepare task switch. ///
////////////////////////////////////////////////////////////
- Bool ret = HardwareThreadScheduler::The()[index].Leak()->Switch(image_ptr, stack, frame_ptr, new_pid);
+ Bool ret = HardwareThreadScheduler::The()[index].Leak()->Switch(image, stack, frame_ptr, new_pid);
////////////////////////////////////////////////////////////
/// Rollback on fail. ///
@@ -595,10 +597,10 @@ namespace Kernel
PID prev_pid = UserProcessHelper::TheCurrentPID();
UserProcessHelper::TheCurrentPID().Leak().Leak() = new_pid;
- auto prev_ptime = HardwareThreadScheduler::The()[index].Leak()->fPTime;
+ PTime prev_ptime = HardwareThreadScheduler::The()[index].Leak()->fPTime;
HardwareThreadScheduler::The()[index].Leak()->fPTime = UserProcessScheduler::The().CurrentTeam().AsArray()[new_pid].PTime;
- HardwareThreadScheduler::The()[index].Leak()->Wake(NO);
+ HardwareThreadScheduler::The()[index].Leak()->Wake(YES);
break;
}
diff --git a/gdb.sh b/gdb.sh
new file mode 100755
index 00000000..1c87503c
--- /dev/null
+++ b/gdb.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+gdb -x -q boot/gdbinit
diff --git a/run_debugger.sh b/run_debugger.sh
deleted file mode 100755
index 329670f5..00000000
--- a/run_debugger.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-lldb -o "gdb-remote 1234"