Strongly typed virtual/physical memory seperation.

This minicommit introduces two newtpyes, `Physical` and `Virtual`,
respectively. These serves as a way to segregate the different forms of
addresses to avoid the issues we had in the old kernel.
This commit is contained in:
ticki 2016-08-14 19:21:21 +02:00
parent f8bd171efd
commit 3967c0f291
3 changed files with 19 additions and 0 deletions

View file

@ -23,3 +23,5 @@ pub mod serial;
/// Task state segment. /// Task state segment.
pub mod tss; pub mod tss;
pub mod physical;

View file

@ -0,0 +1,11 @@
//! Typestrong address segregation.
/// A physical address in memory.
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct Physical {
/// The position.
///
/// Note that we do not use a pointer here to avoid simple mistakes where the programmer
/// confuse virtual and physical.
pub inner: u64,
}

6
kernel/paging/mod.rs Normal file
View file

@ -0,0 +1,6 @@
/// A newtype representing a virtual address.
#[derive(Copy, Clone, Debug, Eq, Ord, PartialEq, PartialOrd)]
pub struct Virtual {
/// The inner value.
pub inner: usize,
}