From e2b71e8459a501e441da6fa3b7aee19ca1cfe043 Mon Sep 17 00:00:00 2001
From: Amlal El Mahrouss <amlal@nekernel.org>
Date: Wed, 17 Dec 2025 07:45:21 +0100
Subject: chore: replace cps.tex with wg02.tex

Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
---
 docs/tex/core_process_scheduler.tex | 128 ------------------------------------
 1 file changed, 128 deletions(-)
 delete mode 100644 docs/tex/core_process_scheduler.tex

(limited to 'docs/tex/core_process_scheduler.tex')

diff --git a/docs/tex/core_process_scheduler.tex b/docs/tex/core_process_scheduler.tex
deleted file mode 100644
index 71c1db9e..00000000
--- a/docs/tex/core_process_scheduler.tex
+++ /dev/null
@@ -1,128 +0,0 @@
-\documentclass{article}
-\usepackage{graphicx}
-\usepackage{hyperref}
-
-\title{CoreProcessScheduler: Technical Documentation}
-\author{Amlal El Mahrouss}
-\date{\today}
-
-\begin{document}
-
-\maketitle
-
-\section{Abstract}
-
-{The CoreProcessScheduler governs how the scheduling backend and policy of the kernel works, It is the common gateway for schedulers inside NeKernel based systems.}
-
-\section{Overview}
-
-{The CoreProcessScheduler (now referred as CPS) serves as the intermediate foundal between the scheduler backend and kernel.} {It takes care of process life-cycle management, team-based process grouping, and affinity-based CPU based allocation to mention the least.}
-
-\section{The Affinity System}
-
-{Processes are given CPU time affinity hints using an affinity kind type, these hints help the scheduler run or adjust the current process.}
-
-\subsection{Sample Code \#1}
-
-{The following sample is C++ code.} {The smaller the value, the more critical the process.}
-
-\begin{verbatim}
-enum struct AffinityKind : Int32 {
-  kRealTime     = 100,
-  kVeryHigh     = 150,
-  kHigh         = 200,
-  kStandard     = 1000,
-  kLowUsage     = 1500,
-  kVeryLowUsage = 2000,
-};
-\end{verbatim}
-
-\section{The Team System}
-
-{The team system holds process metadata for the backend scheduler to run on. It holds methods and fields for backend specific operations.} {One implementation of such team is the UserProcessTeam object inside NeKernel.}
-
-\subsection{Sample Code \#2}
-
-{The following sample is used to hold team metadata.} {This is part of the NeKernel source tree.}
-
-\begin{verbatim}
-class UserProcessTeam final {
- public:
-  explicit UserProcessTeam();
-  ~UserProcessTeam() = default;
-
-  NE_COPY_DEFAULT(UserProcessTeam)
-
-  Array<UserProcess, kSchedProcessLimitPerTeam>& AsArray();
-  Ref<UserProcess>&                              AsRef();
-  ProcessID&                                      Id() noexcept;
-
- public:
-  UserProcessArray mProcessList;
-  UserProcessRef   mCurrentProcess;
-  ProcessID          mTeamId{0};
-  ProcessID          mProcessCur{0};
-};
-
-\end{verbatim}
-
-\section{The Process Image System}
-
-{The process image container is a design pattern made to contain process data and metadata, its purpose comes from the lack of mainstream operating systems of such ability to hold metadata.}
-
-{This approach helps separate concerns and give modularity to the system, as the image and process structure are not mixed together.}
-
-\subsection{Sample Code \#3}
-
-{The following sample is a C++ container used to hold process data and metadata.} {This is part of the NeKernel source tree.}
-
-\begin{verbatim}
-struct PROCESS_IMAGE final {
-  explicit PROCESS_IMAGE() = default;
-
- private:
-  friend UserProcess;
-  friend KernelTask;
-
-  friend class UserProcessScheduler;
-
-  ImagePtr fCode;
-  ImagePtr fBlob;
-
- public:
-  Bool HasCode() const { return this->fCode != nullptr; }
-
-  Bool HasImage() const { return this->fBlob != nullptr; }
-
-  ErrorOr<ImagePtr> LeakImage() {
-    if (this->fCode) {
-      return ErrorOr<ImagePtr>{this->fCode};
-    }
-
-    return ErrorOr<ImagePtr>{kErrorInvalidData};
-  }
-
-  ErrorOr<ImagePtr> LeakBlob() {
-    if (this->fBlob) {
-      return ErrorOr<ImagePtr>{this->fBlob};
-    }
-
-    return ErrorOr<ImagePtr>{kErrorInvalidData};
-  }
-};
-
-\end{verbatim}
-
-\section{Conclusion}
-
-{The CoreProcessScheduler is a piece of systems design with robust design and useful cases, although useful in desktop/server cases, It may not be suited for every other tasks.}
-
-{And while one scheduler backend (such as the UserProcessScheduler) takes care of user process scheduling and fairness, the CoreProcessScheduler takes care of the foundation for those systems.}
-
-\section{References}
-
-{NeKernel}: \href{https://github.com/nekernel-org/nekernel}{NeKernel}
-
-{CoreProcessScheduler}: \href{https://github.com/nekernel-org/nekernel/blob/dev/src/kernel/KernelKit/CoreProcessScheduler.h}{CoreProcessScheduler}
-
-\end{document}
\ No newline at end of file
-- 
cgit v1.2.3

