Safety improvements in virtual memory and ability to share references
This commit is contained in:
parent
a613309440
commit
4d5f71df4b
@ -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);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user