Safety improvements in virtual memory and ability to share references

This commit is contained in:
Andrew Golovashevich 2025-12-18 23:43:59 +03:00
parent a613309440
commit 4d5f71df4b

View File

@ -1,18 +1,24 @@
use std::ptr::{NonNull, null};
pub unsafe trait VirtualMemoryApi: Sized + Drop {
type Reservation: Reservation;
type Reservation<'s>: Reservation + 's
where
Self: 's;
fn getPageSize(&self) -> usize;
fn reserveMemory(
&mut self,
extend: Option<&Self::Reservation>,
fn reserveMemory<'s>(
&'s self,
extend: ReservationToExtend<&Self::Reservation<'s>>,
pagesCount: usize,
) -> Self::Reservation;
) -> Option<Self::Reservation<'s>>;
}
pub enum ReservationToExtend<T> {
ReserveAnywhere,
TryExtend(T),
}
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);
unsafe fn commitPages(&mut self, indexOfFirst: usize, count: usize) -> *mut [u8];
unsafe fn decommitPages(&mut self, indexOfFirst: usize, count: usize);
unsafe fn release(self);
}