From 692c3bfa03368e0d158bc4a996db21832a677aae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Rativel?= Date: Tue, 9 May 2023 19:15:56 +0200 Subject: [PATCH] Documentation for mem_cmp.rs and mmu.rs modules --- src/simulator/mem_cmp.rs | 41 ++++++++++++++++++++++++++++------------ src/simulator/mmu.rs | 28 +++++++++++++++++++++++---- 2 files changed, 53 insertions(+), 16 deletions(-) diff --git a/src/simulator/mem_cmp.rs b/src/simulator/mem_cmp.rs index 07f48b6..64d5942 100644 --- a/src/simulator/mem_cmp.rs +++ b/src/simulator/mem_cmp.rs @@ -1,14 +1,31 @@ -///! FILE.TXT FORMAT Representing machine memory memory -/// - PC -/// - SP -/// - Section_1 -/// - Section_2 -/// - ... -/// - Section_n -/// -/// Each section is divided in 3 parts, on two lines of text -/// addr SPACE len -/// content +//! # mem_cmp +//! +//! This module contains a MemChecker. +//! +//! It's used to compare state memory obtained after a dump memory from NachOS and BurritOS. +//! +//! This module is used exclusively for testing the instruction simulator. +//! +//! Basic usage: +//! +//! ``` +//! let mut m = Machine::new(true, get_debug_configuration()); +//! let mut MemChecker = mem_cmp::MemChecker::from(get_full_path!("memory", expr)); +//! mem_cmp::MemChecker::fill_memory_from_mem_checker(&MemChecker, &mut m); +//! ``` +//! +//! +//! ! FILE.TXT FORMAT Representing machine memory memory +//! - PC +//! - SP +//! - Section_1 +//! - Section_2 +//! - ... +//! - Section_n +//! +//! Each section is divided in 3 parts, on two lines of text +//! addr SPACE len +//! content use std::{fs, io::{BufRead, BufReader, Lines, Error}}; use crate::Machine; @@ -94,7 +111,7 @@ impl MemChecker{ /// Extract the values of pc, sp and sections /// /// ### Parameter - /// -**path** addr to the file + /// - **path** addr to the file /// /// ### Return /// Mem-checker filled diff --git a/src/simulator/mmu.rs b/src/simulator/mmu.rs index 6436794..1d1d9de 100644 --- a/src/simulator/mmu.rs +++ b/src/simulator/mmu.rs @@ -1,18 +1,38 @@ +//! # mmu +//! +//! This module contains a MMU implementation +//! +//! This part isn't tested and integrated to BurritOS because of the lack of pagination implementation +//! +//! + use crate::simulator::translationtable::*; use crate::simulator::machine::*; +//! # Memory Management Unit +//! An MMU possesses a single reference to a translation table +//! This table is associated to the current process pub struct MMU <'a>{ - /* Un MMU possède une seule référence vers une table des pages à un instant donné - * Cette table est associée au processus courant - * Cette référence peut etre mise a jour par exemple lors d'un switchTo - */ + /// Reference to a page table translationTable : Option<&'a mut TranslationTable>, + /// The number of physique pages numPhyPages : u64, + /// Size of each page pageSize : u64 } impl <'a>MMU <'_>{ + /// Create a MMU with a None reference for the translation table + /// + /// ### Parameters + /// + /// - **numPhyPages** the number of physique pages + /// - **pageSize** the size of a page + /// + /// ### Return + /// + /// MMU with None reference and the value for the number of physical pages and pae size associated fn create(numPhyPages: u64, pageSize: u64) -> MMU <'a>{ MMU { translationTable : None,