summaryrefslogtreecommitdiffhomepage
path: root/src/kernel/KernelKit/KernelTask.h
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2026-03-07 19:50:39 +0100
committerAmlal El Mahrouss <amlal@nekernel.org>2026-03-07 19:50:39 +0100
commit33cf55c0f5855a55e54a83eb3fee58776e789ed8 (patch)
tree2ebdb1f2b7715e80a74b670c44e9e76c41a09a7e /src/kernel/KernelKit/KernelTask.h
parentb7d4f9943ca6d2561a31fc212b8e074e4984b850 (diff)
[CHORE] KernelTask system for DDK drivers.kernel-task-scheduler-impl
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'src/kernel/KernelKit/KernelTask.h')
-rw-r--r--src/kernel/KernelKit/KernelTask.h49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/kernel/KernelKit/KernelTask.h b/src/kernel/KernelKit/KernelTask.h
new file mode 100644
index 00000000..1b94a9fc
--- /dev/null
+++ b/src/kernel/KernelKit/KernelTask.h
@@ -0,0 +1,49 @@
+// Copyright 2024-2026, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/ne-foss-org/nekernel
+
+#ifndef KERNELKIT_KERNELTASKSCHEDULER_H
+#define KERNELKIT_KERNELTASKSCHEDULER_H
+
+/// @file KernelTaskScheduler.h
+/// @brief Kernel Task Scheduler backend file.
+/// @author Amlal El Mahrouss (amlal@nekernel.org)
+
+#include <ArchKit/ArchKit.h>
+#include <KernelKit/CoreProcessScheduler.h>
+#include <KernelKit/LockDelegate.h>
+
+namespace Kernel {
+
+class KernelTaskHelper;
+
+using KID = ProcessID;
+
+/// @brief Equivalent of UserProcess, but for kernel tasks.
+/// @author Amlal
+class KernelTask final {
+ public:
+ Char Name[kSchedNameLen] = {"KernelTask"};
+ ProcessSubsystem SubSystem{ProcessSubsystem::kProcessSubsystemKernel};
+ HAL::StackFramePtr StackFrame{nullptr};
+ UInt8* StackReserve{nullptr};
+ SizeT StackSize{kSchedMaxStackSz};
+ ProcessImage Image{};
+
+ /// @brief a KID is a Kernel ID, it is used to find a task running within the kernel.
+ KID Kid{};
+
+ NE_NON_VETTABLE;
+};
+
+/// @brief Equivalent of UserProcessHelper, but for kernel tasks.
+/// @author Amlal
+class KernelTaskHelper final {
+ public:
+ STATIC Bool Start(KernelTask& task_ref, const KID& kid);
+ STATIC Bool CanBeStarted(const KernelTask& task_ref);
+};
+
+} // namespace Kernel
+
+#endif