diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2026-03-07 19:50:39 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@nekernel.org> | 2026-03-07 19:50:39 +0100 |
| commit | 33cf55c0f5855a55e54a83eb3fee58776e789ed8 (patch) | |
| tree | 2ebdb1f2b7715e80a74b670c44e9e76c41a09a7e /src/kernel/KernelKit/KernelTask.h | |
| parent | b7d4f9943ca6d2561a31fc212b8e074e4984b850 (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.h | 49 |
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 |
