summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/KernelKit/KernelTaskScheduler.h
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-08-16 19:56:21 +0200
committerGitHub <noreply@github.com>2025-08-16 19:56:21 +0200
commit1a32b9307357ac0fc9095e853b2b6d94f9fe62bb (patch)
treef41f723659c8926e38182fbe062746d821ab487e /dev/kernel/KernelKit/KernelTaskScheduler.h
parenteb9df5eea339812513c25a8d3b2eeb03c633e7ac (diff)
parentb301047903b79560dce69085fc271a653a1eb4b6 (diff)
Merge pull request #55 from nekernel-org/dev
v0.0.4
Diffstat (limited to 'dev/kernel/KernelKit/KernelTaskScheduler.h')
-rw-r--r--dev/kernel/KernelKit/KernelTaskScheduler.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/dev/kernel/KernelKit/KernelTaskScheduler.h b/dev/kernel/KernelKit/KernelTaskScheduler.h
index 57b83ccb..c0879769 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,18 @@ 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