summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-07-09 11:47:51 +0200
committerAmlal El Mahrouss <amlal@nekernel.org>2025-07-09 11:47:51 +0200
commit44b09ad2f4b701414379e3a4567e5c7dd1d77413 (patch)
tree41b9ecdadee25e49d33049c39c002c7894440d2b /dev/kernel
parent3b6ee5a4323cfa1446af09626e5582c20f9254e8 (diff)
feat: KID, UPS improvements, and future refactors regarding the
FileTree system inside the UPS. Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'dev/kernel')
-rw-r--r--dev/kernel/KernelKit/KernelTaskScheduler.h18
-rw-r--r--dev/kernel/KernelKit/UserProcessScheduler.inl2
-rw-r--r--dev/kernel/src/UserProcessScheduler.cc2
3 files changed, 20 insertions, 2 deletions
diff --git a/dev/kernel/KernelKit/KernelTaskScheduler.h b/dev/kernel/KernelKit/KernelTaskScheduler.h
index 57b83ccb..222041e8 100644
--- a/dev/kernel/KernelKit/KernelTaskScheduler.h
+++ b/dev/kernel/KernelKit/KernelTaskScheduler.h
@@ -15,6 +15,12 @@
#include <KernelKit/LockDelegate.h>
namespace Kernel {
+class KernelTaskHelper;
+
+typedef PID KID;
+
+/// @brief Equivalent of USER_PROCESS, but for kernel tasks.
+/// @author Amlal
class KERNEL_TASK final {
public:
Char Name[kSchedNameLen] = {"KERNEL_TASK"};
@@ -23,5 +29,17 @@ class KERNEL_TASK final {
UInt8* StackReserve{nullptr};
SizeT StackSize{kSchedMaxStackSz};
PROCESS_IMAGE Image{};
+ /// @brief a KID is a Kernel Identification Descriptor, it is used to find a task running within the kernel.
+ KID Kid{0};
+};
+
+/// @brief Equivalent of UserProcessHelper, but for kernel tasks.
+/// @author Amlal
+class KernelTaskHelper final {
+ public:
+ STATIC Bool Switch(HAL::StackFramePtr frame_ptr, PID new_kid);
+ STATIC Bool CanBeScheduled(const KERNEL_TASK& process);
+ STATIC ErrorOr<PID> TheCurrentKID();
+ STATIC SizeT StartScheduling();
};
} // namespace Kernel \ No newline at end of file
diff --git a/dev/kernel/KernelKit/UserProcessScheduler.inl b/dev/kernel/KernelKit/UserProcessScheduler.inl
index df35e037..0605a5e0 100644
--- a/dev/kernel/KernelKit/UserProcessScheduler.inl
+++ b/dev/kernel/KernelKit/UserProcessScheduler.inl
@@ -17,7 +17,7 @@
namespace Kernel {
/***********************************************************************************/
-/** @brief Free pointer from usage. */
+/** @brief Free pointer/file from usage. */
/***********************************************************************************/
template <typename T>
diff --git a/dev/kernel/src/UserProcessScheduler.cc b/dev/kernel/src/UserProcessScheduler.cc
index ba6e1857..7e14fa62 100644
--- a/dev/kernel/src/UserProcessScheduler.cc
+++ b/dev/kernel/src/UserProcessScheduler.cc
@@ -107,7 +107,7 @@ STATIC T* sched_try_go_upper_ptr_tree(T* tree) {
}
/***********************************************************************************/
-/** @brief Allocate pointer to heap tree. */
+/** @brief Allocate pointer to heap/file tree. */
/***********************************************************************************/
ErrorOr<VoidPtr> USER_PROCESS::New(SizeT sz, SizeT pad_amount) {