summaryrefslogtreecommitdiffhomepage
path: root/docs/tex
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-12-28 09:30:38 +0100
committerAmlal El Mahrouss <amlal@nekernel.org>2025-12-28 09:30:38 +0100
commit7df7ed6d026c5e1f3b8111e3536af3771301c177 (patch)
treef87916ee645aec06971a84dc1e9e5f1267fbe755 /docs/tex
parent176cf8f237745d658185a2fba8fff1401c1c2b5f (diff)
feat! firmware breaking changes on the API.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'docs/tex')
-rw-r--r--docs/tex/30pin.tex73
-rw-r--r--docs/tex/epm.tex143
-rw-r--r--docs/tex/pci-tree.tex72
3 files changed, 0 insertions, 288 deletions
diff --git a/docs/tex/30pin.tex b/docs/tex/30pin.tex
deleted file mode 100644
index 386ddbe..0000000
--- a/docs/tex/30pin.tex
+++ /dev/null
@@ -1,73 +0,0 @@
-
-\documentclass{article}
-\usepackage{listings}
-\usepackage{xcolor}
-\usepackage{geometry}
-\usepackage{titlesec}
-\usepackage{fancyhdr}
-\usepackage{amsmath}
-\usepackage{amsfonts}
-\usepackage{graphicx}
-\usepackage{enumitem}
-\geometry{margin=1in}
-
-\titleformat{\section}{\large\bfseries}{\thesection}{1em}{}
-\titleformat{\subsection}{\normalsize\bfseries}{\thesubsection}{1em}{}
-
-\title{\texttt{30Pin} Technical Specification}
-\author{Amlal El Mahrouss}
-\date{\today}
-
-\lstset{
- basicstyle=\ttfamily\footnotesize,
- keywordstyle=\color{blue},
- commentstyle=\color{gray},
- stringstyle=\color{red},
- showstringspaces=false,
- breaklines=true
-}
-
-\begin{document}
-
-\maketitle
-
-\section*{File Description}
-\textbf{File:} \texttt{30pin.h} \\
-\textbf{Description:} This header defines the 30pin recovery protocol structures, constants, and packet kinds.
-
-\section{Constants}
-\begin{itemize}[leftmargin=2em]
- \item \texttt{NB\_30PIN\_MAG} - Magic number identifier for a 30pin packet. Defined as \texttt{"TP"}.
- \item \texttt{NB\_30PIN\_MAG\_LEN} - Length of the magic number (\texttt{2} bytes).
- \item \texttt{NB\_30PIN\_BUFFER\_LEN} - Length of the data buffer in the packet (\texttt{498} bytes).
- \item \texttt{NB\_30PIN\_EOP\_LEN} - Length of the end-of-packet data (\texttt{11} bytes).
-\end{itemize}
-
-\section{Data Structures}
-\subsection{\texttt{nb\_tpin\_recovery\_packet}}
-\begin{lstlisting}[language=C]
-struct _nb_tpin_recovery_packet
-{
- uint8_t mag[NB_30PIN_MAG_LEN]; // Magic number
- uint8_t kind; // Packet kind identifier
- uint8_t buffer[NB_30PIN_BUFFER_LEN]; // Packet data buffer
- uint8_t eop[NB_30PIN_EOP_LEN]; // End-of-packet data
-};
-\end{lstlisting}
-
-\textbf{Typedef:} \texttt{nb\_tpin\_recovery\_packet\_t}
-
-\section{Enumerations}
-\subsection{Packet Kinds}
-Defines the kinds of packets used in the 30pin recovery protocol:
-
-\begin{itemize}[leftmargin=2em]
- \item \texttt{TPIN\_RECOVERY\_PACKET\_KIND\_UNKNOWN = 0}
- \item \texttt{TPIN\_RECOVERY\_PACKET\_KIND\_BOOT = 1}
- \item \texttt{TPIN\_RECOVERY\_PACKET\_KIND\_DATA = 2}
- \item \texttt{TPIN\_RECOVERY\_PACKET\_KIND\_EOP = 3}
- \item \texttt{TPIN\_RECOVERY\_PACKET\_KIND\_EOP\_ACK = 4}
- \item \texttt{TPIN\_RECOVERY\_PACKET\_KIND\_EOP\_NACK = 5}
-\end{itemize}
-
-\end{document}
diff --git a/docs/tex/epm.tex b/docs/tex/epm.tex
deleted file mode 100644
index c8b1d7a..0000000
--- a/docs/tex/epm.tex
+++ /dev/null
@@ -1,143 +0,0 @@
-\documentclass[12pt]{article}
-\usepackage[utf8]{inputenc}
-\usepackage[margin=1in]{geometry}
-\usepackage{titlesec}
-\usepackage{listings}
-\usepackage{xcolor}
-\usepackage{amsmath}
-\usepackage{caption}
-\usepackage{longtable}
-
-\titleformat{\section}{\large\bfseries}{\thesection}{1em}{}
-\titleformat{\subsection}{\normalsize\bfseries}{\thesubsection}{1em}{}
-
-\definecolor{codegray}{gray}{0.95}
-
-\lstdefinestyle{customc}{
- backgroundcolor=\color{codegray},
- basicstyle=\ttfamily\footnotesize,
- keywordstyle=\color{blue},
- commentstyle=\color{gray},
- stringstyle=\color{red},
- breaklines=true,
- showstringspaces=false,
- frame=single,
- language=C
-}
-
-\title{EPM Partition Map: Technical Specification}
-\author{Amlal El Mahrouss}
-\date{\today}
-
-\begin{document}
-
-\maketitle
-
-\section{Overview}
-This document specifies the Explicit Partition Map (EPM) data structures and constants as defined in \texttt{partition\_map.h}. The EPM is designed to store partition information in a platform-independent manner with architecture-specific magic identifiers.
-
-\section{Constants and Macros}
-
-\subsection{Magic Strings}
-\begin{longtable}{|l|l|}
-\hline
-\textbf{Macro} & \textbf{Description} \\
-\hline
-\texttt{EPM\_MAGIC\_X86} & "EPMAM", used on AMD64 \\
-\texttt{EPM\_MAGIC\_RV} & "EPMRV", used on RISC-V \\
-\texttt{EPM\_MAGIC\_ARM} & "EPMAR", used on ARM \\
-\texttt{EPM\_MAGIC\_64X0} & "EPM64", for custom 64x0 architecture \\
-\texttt{EPM\_MAGIC\_32X0} & "EPM32", for custom 32x0 architecture \\
-\texttt{EPM\_MAGIC\_PPC} & "EPMPC", used on POWER \\
-\texttt{EPM\_MAGIC} & Defaults based on architecture \\
-\hline
-\end{longtable}
-
-\subsection{Layout Macros}
-\begin{itemize}
- \item \texttt{EPM\_MAX\_BLKS = 128} \\
- Maximum number of blocks in the partition table (first 128 LBAs).
- \item \texttt{EPM\_PART\_BLK\_SZ} \\
- Size of the \texttt{part\_block} structure.
- \item \texttt{EPM\_PART\_BLK\_START = 0} \\
- Start LBA of EPM partition headers.
- \item \texttt{EPM\_REVISION = 2} \\
- Current revision of the EPM format.
-\end{itemize}
-
-\section{Data Structures}
-
-\subsection{boot\_guid\_t}
-\begin{lstlisting}[style=customc]
-typedef struct boot_guid {
- uint32_t data1;
- uint16_t data2;
- uint16_t data3;
- uint8_t data4[8];
-} __attribute__((packed)) boot_guid_t;
-\end{lstlisting}
-A GUID structure used for identifying partitions.
-
-\subsection{part\_block}
-\begin{lstlisting}[style=customc]
-struct __attribute__((packed)) part_block {
- ascii_char_t magic[5]; // Magic string
- ascii_char_t name[32]; // Human-readable name
- boot_guid_t uuid; // Partition UUID
- int32_t version; // Partition version
- int32_t num_blocks; // Number of blocks
- int64_t lba_start; // Starting LBA
- int64_t sector_sz; // Sector size
- int64_t lba_end; // Ending LBA
- int16_t type; // Partition type
- int32_t fs_version; // Filesystem version
- ascii_char_t fs[16]; // Filesystem name
- ascii_char_t reserved[401]; // Reserved for future use
-};
-\end{lstlisting}
-
-\subsection*{Filesystem Type Values}
-\begin{longtable}{|l|l|}
-\hline
-\textbf{Enum Value} & \textbf{Meaning} \\
-\hline
-\texttt{EPM\_INVALID} & \texttt{0x00} - Invalid/undefined \\
-\texttt{EPM\_GENERIC\_OS} & \texttt{0xcf} - Generic OS partition \\
-\texttt{EPM\_LINUX} & \texttt{0x8f} - Linux partition \\
-\texttt{EPM\_BSD} & \texttt{0x9f} - BSD partition \\
-\texttt{EPM\_NEKERNEL\_OS} & \texttt{0x1f} - NeKernel-specific \\
-\texttt{EPM\_SNU\_OS} & \texttt{0x1f} - SNU-specific \\
-\hline
-\end{longtable}
-
-\section{Functions}
-
-\subsection{\texttt{cb\_filesystem\_exists}}
-\begin{lstlisting}[style=customc]
-boolean cb_filesystem_exists(caddr_t fs, size_t len);
-\end{lstlisting}
-Checks if a filesystem name is supported.
-
-\subsection{\texttt{cb\_parse\_partition\_block\_data\_at}}
-\begin{lstlisting}[style=customc]
-bool cb_parse_partition_block_data_at(
- voidptr_t blob,
- size_t blob_sz,
- size_t index,
- size_t* end_lba,
- size_t* start_lba,
- size_t* sector_sz);
-\end{lstlisting}
-Parses an EPM partition block from a blob at the specified index and returns LBA information.
-
-\subsection{\texttt{cb\_parse\_partition\_block\_at}}
-\begin{lstlisting}[style=customc]
-part_block_t* cb_parse_partition_block_at(
- voidptr_t blob,
- size_t blob_sz,
- size_t index);
-\end{lstlisting}
-Returns a pointer to a parsed EPM partition block at the specified index.
-
-\end{document}
-
diff --git a/docs/tex/pci-tree.tex b/docs/tex/pci-tree.tex
deleted file mode 100644
index 5ca6dfd..0000000
--- a/docs/tex/pci-tree.tex
+++ /dev/null
@@ -1,72 +0,0 @@
-\documentclass{article}
-\usepackage{graphicx} % Required for inserting images
-
-\title{The PCI Tree System}
-\author{Amlal El Mahrouss}
-\date{\today}
-
-\usepackage{listings}
-
-\lstset { %
- language=C++,
-}
-
-\begin{document}
-
-\maketitle
-
-\section{Abstract}
-
-The PCI tree is an architecture designed to abstract away device specific data. One leaf might for instance hold an AHCI's HBA (Host Bus Adapter) into a '/pci-tree/@ahci' for instance. The advantage of this approach is the ability to quickly lookup and recognize a device from a tree given by a firmware at handoff.
-
-\section{The Protocol}
-
-Each leaf has a identification number of '0xfeedd00d', then followed by the version in a binary encoded format (0x1000). The offset and size of the offset and then given by the firmware. A PCI-Tree is assembled by the firmware itself. As the structures are not packed, thus multi-platform portability isn't possible.
-
-\section{Trade-offs}
-
-The trade-offs (portability, complexity) are largely justified by the need of a better and more straightforward way to recognize devices at the firmware level, the PCI tree approach helps us do exactly that.
-
-\subsection{Implementation of a PCI-Tree Leaf}
-
-Language of implementation is the C programming language
-
-\begin{lstlisting}
-struct hw_nb_pci_tree {
- cb_pci_num_t d_magic;
- cb_pci_num_t d_version;
- cb_pci_num_t d_off_props;
- cb_pci_num_t d_off_struct;
- cb_pci_num_t d_sz_props;
- cb_pci_num_t d_sz_struct;
-
- cb_pci_num_t d_first_node;
- cb_pci_num_t d_next_sibling;
-
- cb_pci_char_t d_name[NB_PCI_NAME_LEN];
-};
-
-\end{lstlisting}
-
-\section{Official Implementations}
-
-\subsection{ISO C}
-
-\begin{ImplC}
-\item {SNU Trusted Base:} \url(https://snu.systems)
-\item {NeBoot (NeKernel Boot):} \url(https://github.com/nekernel-org/neboot)
-\end{ImplC}
-
-\subsection{ISO C++}
-
-\begin{ImplCxx}
-\item {No Implementation yet}
-\end{ImplCxx}
-
-\subsection{Forth}
-
-\begin{ImplForth}
-\item {No Implementation yet}
-\end{ImplForth}
-
-\end{document}