From a613309440dda114889153ef335fb2381ee6b2b4 Mon Sep 17 00:00:00 2001 From: Andrew Golovashevich Date: Mon, 15 Dec 2025 23:41:38 +0300 Subject: [PATCH] Virtual memory api --- src/lib.rs | 1 + src/virtual_memory.rs | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 src/virtual_memory.rs 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); +}