summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAmlal <amlalelmahrouss@icloud.com>2024-12-22 16:50:01 +0100
committerAmlal <amlalelmahrouss@icloud.com>2024-12-22 16:50:01 +0100
commit78772d95f14818efadc676651d30b04f6ae57c7d (patch)
tree7d7ca223c00a60e6b1d8d98be306f53bd93bdac7
parentd78bd7257f380888e9900f6357e6ec280240d451 (diff)
IMPL: Issue #4 Fixing a bug within the scheduler, which causes a SIGKILL
to happen. Signed-off-by: Amlal <amlalelmahrouss@icloud.com>
-rw-r--r--dev/Kernel/HALKit/AMD64/HalKernelMain.cc2
-rw-r--r--dev/Kernel/HALKit/ARM64/HalKernelMain.cc2
-rw-r--r--dev/Kernel/KernelKit/DriveMgr.h4
-rw-r--r--dev/Kernel/KernelKit/HardwareThreadScheduler.h8
-rw-r--r--dev/Kernel/src/CodeMgr.cc3
-rw-r--r--dev/Kernel/src/DriveMgr.cc2
-rw-r--r--dev/Kernel/src/FileMgr.cc2
-rw-r--r--dev/Kernel/src/HardwareThreadScheduler.cc2
-rw-r--r--dev/Kernel/src/PEFCodeMgr.cc6
-rw-r--r--dev/Kernel/src/UserProcessScheduler.cc5
10 files changed, 19 insertions, 17 deletions
diff --git a/dev/Kernel/HALKit/AMD64/HalKernelMain.cc b/dev/Kernel/HALKit/AMD64/HalKernelMain.cc
index 9333d3c5..2de886ca 100644
--- a/dev/Kernel/HALKit/AMD64/HalKernelMain.cc
+++ b/dev/Kernel/HALKit/AMD64/HalKernelMain.cc
@@ -86,7 +86,7 @@ EXTERN_C Kernel::Void hal_real_init(Kernel::Void) noexcept
{
CG::CGDrawBackground();
- rtl_kernel_main(0, nullptr, nullptr, 0);
+ Kernel::rtl_create_process(rtl_kernel_main, "ZkaOS System Kernel");
if (kHandoverHeader->f_HardwareTables.f_MultiProcessingEnabled)
Kernel::HAL::mp_get_cores(kHandoverHeader->f_HardwareTables.f_VendorPtr);
diff --git a/dev/Kernel/HALKit/ARM64/HalKernelMain.cc b/dev/Kernel/HALKit/ARM64/HalKernelMain.cc
index c7c642ff..2901e80b 100644
--- a/dev/Kernel/HALKit/ARM64/HalKernelMain.cc
+++ b/dev/Kernel/HALKit/ARM64/HalKernelMain.cc
@@ -49,7 +49,7 @@ EXTERN_C void hal_init_platform(
CG::CGDrawBackground();
- rtl_kernel_main(0, nullptr, nullptr, 0);
+ Kernel::rtl_create_process(rtl_kernel_main, "ZkaOS System Kernel");
while (YES)
{
diff --git a/dev/Kernel/KernelKit/DriveMgr.h b/dev/Kernel/KernelKit/DriveMgr.h
index 811baeeb..e591a001 100644
--- a/dev/Kernel/KernelKit/DriveMgr.h
+++ b/dev/Kernel/KernelKit/DriveMgr.h
@@ -134,7 +134,7 @@ namespace Kernel
return &mD;
default: {
err_local_get() = kErrorNoSuchDisk;
- kcout << "No such disk index.\n";
+ kcout << "No such disc letter.\n";
break;
}
@@ -150,7 +150,7 @@ namespace Kernel
/// @brief Unimplemented drive.
/// @param pckt the packet to read.
/// @return
- Void io_drv_unimplemented(DriveTrait::DrivePacket* pckt);
+ Void io_drv_unimplemented(DriveTrait::DrivePacket* pckt) noexcept;
/// @brief Gets the drive kind (ATA, SCSI, AHCI...)
/// @param void none.
diff --git a/dev/Kernel/KernelKit/HardwareThreadScheduler.h b/dev/Kernel/KernelKit/HardwareThreadScheduler.h
index 8b6c2a90..7af4d74b 100644
--- a/dev/Kernel/KernelKit/HardwareThreadScheduler.h
+++ b/dev/Kernel/KernelKit/HardwareThreadScheduler.h
@@ -61,7 +61,7 @@ namespace Kernel
void Busy(const bool busy = false) noexcept;
public:
- bool Switch(VoidPtr image, Ptr8 stack_ptr, HAL::StackFramePtr frame, const ProcessID& pid);
+ bool Switch(VoidPtr image, Ptr8 stack_ptr, HAL::StackFramePtr frame, const ThreadID& pid);
bool IsWakeup() noexcept;
public:
@@ -74,9 +74,9 @@ namespace Kernel
HAL::StackFramePtr fStack{nullptr};
ThreadKind fKind{ThreadKind::kAPStandard};
ThreadID fID{0};
- ProcessID fSourcePID{-1};
- Bool fWakeup{false};
- Bool fBusy{false};
+ ThreadID fSourcePID{0};
+ Bool fWakeup{NO};
+ Bool fBusy{NO};
UInt64 fPTime{0};
private:
diff --git a/dev/Kernel/src/CodeMgr.cc b/dev/Kernel/src/CodeMgr.cc
index 0450f56a..7946d424 100644
--- a/dev/Kernel/src/CodeMgr.cc
+++ b/dev/Kernel/src/CodeMgr.cc
@@ -16,7 +16,8 @@ namespace Kernel
/// @return if the process was started or not.
ProcessID rtl_create_process(rtl_main_kind main, const Char* process_name) noexcept
{
- if (*process_name == 0)
+ if (!process_name ||
+ *process_name == 0)
return kProcessInvalidID;
UserProcess* process_hdr = new UserProcess();
diff --git a/dev/Kernel/src/DriveMgr.cc b/dev/Kernel/src/DriveMgr.cc
index ec21b83c..036997cb 100644
--- a/dev/Kernel/src/DriveMgr.cc
+++ b/dev/Kernel/src/DriveMgr.cc
@@ -129,7 +129,7 @@ namespace Kernel
/// @brief Unimplemented drive function.
/// @param pckt the packet to read.
/// @return
- Void io_drv_unimplemented(DriveTrait::DrivePacket* pckt)
+ Void io_drv_unimplemented(DriveTrait::DrivePacket* pckt) noexcept
{
ZKA_UNUSED(pckt);
}
diff --git a/dev/Kernel/src/FileMgr.cc b/dev/Kernel/src/FileMgr.cc
index c748e721..4f2994d2 100644
--- a/dev/Kernel/src/FileMgr.cc
+++ b/dev/Kernel/src/FileMgr.cc
@@ -7,7 +7,7 @@
#include <KernelKit/FileMgr.h>
#include <NewKit/Utils.h>
-/// BUGS: 0
+/// @file FileMgr.cc
//! @brief File System Manager API.
namespace Kernel
diff --git a/dev/Kernel/src/HardwareThreadScheduler.cc b/dev/Kernel/src/HardwareThreadScheduler.cc
index e93b2284..1c5b0a23 100644
--- a/dev/Kernel/src/HardwareThreadScheduler.cc
+++ b/dev/Kernel/src/HardwareThreadScheduler.cc
@@ -114,7 +114,7 @@ namespace Kernel
/// @retval true stack was changed, code is running.
/// @retval false stack is invalid, previous code is running.
/***********************************************************************************/
- Bool HardwareThread::Switch(VoidPtr image, Ptr8 stack_ptr, HAL::StackFramePtr frame, const ProcessID& pid)
+ Bool HardwareThread::Switch(VoidPtr image, Ptr8 stack_ptr, HAL::StackFramePtr frame, const ThreadID& pid)
{
if (!frame ||
!image ||
diff --git a/dev/Kernel/src/PEFCodeMgr.cc b/dev/Kernel/src/PEFCodeMgr.cc
index 5cde2da1..a27db7e3 100644
--- a/dev/Kernel/src/PEFCodeMgr.cc
+++ b/dev/Kernel/src/PEFCodeMgr.cc
@@ -14,9 +14,9 @@
#include <NewKit/KString.h>
/// @brief PEF stack size symbol.
-#define kPefStackSizeSymbol "SizeOfReserveStack"
-#define kPefHeapSizeSymbol "SizeOfReserveHeap"
-#define kPefNameSymbol "ProgramName"
+#define kPefStackSizeSymbol "__PEFSizeOfReserveStack"
+#define kPefHeapSizeSymbol "__PEFSizeOfReserveHeap"
+#define kPefNameSymbol "__PEFProgramName"
namespace Kernel
{
diff --git a/dev/Kernel/src/UserProcessScheduler.cc b/dev/Kernel/src/UserProcessScheduler.cc
index d6e27bd6..cdf5dcee 100644
--- a/dev/Kernel/src/UserProcessScheduler.cc
+++ b/dev/Kernel/src/UserProcessScheduler.cc
@@ -284,7 +284,8 @@ namespace Kernel
ProcessID UserProcessScheduler::Spawn(UserProcess* process)
{
- if (!process)
+ if (!process ||
+ !process->Image)
{
return kProcessInvalidID;
}
@@ -522,7 +523,7 @@ namespace Kernel
Bool UserProcessHelper::Switch(VoidPtr image_ptr, UInt8* stack, HAL::StackFramePtr frame_ptr, const PID& new_pid)
{
- if (!stack || !frame_ptr || !image_ptr || new_pid < 0)
+ if (!stack || !frame_ptr || !image_ptr)
return No;
if (!mm_is_valid_heap(image_ptr))