diff options
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/tex/NOTICE.md | 7 | ||||
| -rw-r--r-- | docs/tex/binary_mutex.tex | 2 | ||||
| -rw-r--r-- | docs/tex/core_process_scheduler.tex | 4 | ||||
| -rw-r--r-- | docs/tex/nefs.tex | 4 | ||||
| -rw-r--r-- | docs/tex/nekernel_smp_subsystem.tex | 32 |
5 files changed, 41 insertions, 8 deletions
diff --git a/docs/tex/NOTICE.md b/docs/tex/NOTICE.md index 5d6eb03f..c4015afd 100644 --- a/docs/tex/NOTICE.md +++ b/docs/tex/NOTICE.md @@ -1,5 +1,6 @@ -# Notice for LaTeX documents. +# Notice -## Recommended Tool +## Recommended: -`pdflatex` is recommended for this matter, although you are free to use other tools. +- `pdflatex` is recommended for this matter. +- You can use `overleaf` to edit the LaTeX files too.
\ No newline at end of file diff --git a/docs/tex/binary_mutex.tex b/docs/tex/binary_mutex.tex index 9b8a1c40..1b5a59c2 100644 --- a/docs/tex/binary_mutex.tex +++ b/docs/tex/binary_mutex.tex @@ -51,7 +51,7 @@ class BinaryMutex final { public: bool Lock(USER_PROCESS* process); - bool LockOrWait(USER_PROCESS* process, TimerInterface* timer); + bool LockAndWait(USER_PROCESS* process, TimerInterface* timer); public: NE_COPY_DEFAULT(BinaryMutex) diff --git a/docs/tex/core_process_scheduler.tex b/docs/tex/core_process_scheduler.tex index b99232bb..ab5636f6 100644 --- a/docs/tex/core_process_scheduler.tex +++ b/docs/tex/core_process_scheduler.tex @@ -77,8 +77,8 @@ class UserProcessTeam final { {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; +struct ProcessImage final { + explicit ProcessImage() = default; private: friend USER_PROCESS; diff --git a/docs/tex/nefs.tex b/docs/tex/nefs.tex index 7f2fdd84..37e43d13 100644 --- a/docs/tex/nefs.tex +++ b/docs/tex/nefs.tex @@ -21,9 +21,9 @@ showstringspaces=false } -\title{NeFS: New Extended File System} +\title{NeFS: New Extended File System Specification} \author{Amlal El Mahrouss} -\date{\today} +\date{2025} \begin{document} diff --git a/docs/tex/nekernel_smp_subsystem.tex b/docs/tex/nekernel_smp_subsystem.tex new file mode 100644 index 00000000..cb30f3cb --- /dev/null +++ b/docs/tex/nekernel_smp_subsystem.tex @@ -0,0 +1,32 @@ +\documentclass{article} +\usepackage{graphicx} + +\title{NeKernel: The SMP Subsystem} +\author{Amlal El Mahrouss} +\date{\today} + +\begin{document} + + \maketitle + + \section{Abstract} + + {NeKernel is a hybrid based operating system kernel written in modern C++ (C++17/C++20). It features a bootloader, kernel, tools, libraries, and frameworks. This document is about the SMP subsystem of the kernel.} + + \section{Design Overview} + + {NeKernel is designed with SMP by default. Although it may fallback under classic preemptive round-robin scheduling when unavailable - NeKernel runs best on a SMP based machine. The subsystem goes from the HardwareThreadScheduler to the Hardware Abstraction Layer's Application Processor API.} + + \section{The SMP Subsystem} + + {The SMP subsystem consist of the HTS (HardwareThreadScheduler) and AP (Application Processor) APIs. Those systems are made to handle SMP tasks inside NeKernel.} + + \subsection{Higher Level: HardwareThreadScheduler (HTS)} + + {HTS's main purpose is to make cores all busy with a StackFrame object. That object contains program registers such as the stack pointer and instruction pointer. Each task is fairly assigned to then be run by the AP's mp\_register\_task function.} + + \subsection{Lower Level: Application Processor (AP) API} + + {Application Processors (now referred as AP) is the API taking care of multi-core scheduling, very platform dependent (thus its presence on the HAL) it is designed to run tasks passed from the HTS.} + +\end{document} |
