diff --git a/src/lib.rs b/src/lib.rs index b09728a..f096b65 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -4,6 +4,7 @@ mod general; mod pages; mod stack; mod typed; +pub mod virtual_memory; pub fn panicOOM() -> ! { panic!("Out of memory"); diff --git a/src/virtual_memory.rs b/src/virtual_memory.rs new file mode 100644 index 0000000..af87e20 --- /dev/null +++ b/src/virtual_memory.rs @@ -0,0 +1,18 @@ +use std::ptr::{NonNull, null}; + +pub unsafe trait VirtualMemoryApi: Sized + Drop { + type Reservation: Reservation; + + fn getPageSize(&self) -> usize; + + fn reserveMemory( + &mut self, + extend: Option<&Self::Reservation>, + pagesCount: usize, + ) -> Self::Reservation; +} + +pub unsafe trait Reservation: Sized + Ord + Drop { + fn commitPages(&mut self, indexOfFirst: usize, count: usize) -> *mut [u8]; + fn decommitPages(&mut self, indexOfFirst: usize, count: usize); +}