Struct risc0_binfmt::PageTableInfo
source · pub struct PageTableInfo {
pub page_size: u32,
pub page_table_addr: u32,
pub root_addr: u32,
pub root_idx: u32,
pub num_pages: u32,
pub num_root_entries: u32,
/* private fields */
}target_os="zkvm" only.Expand description
Structure representing the page table for zkVM memory.
The notion of pages is borrowed from common operating system memory management, and the zkVM organizes memory into a series of memory pages similarly. In the zkVM, the “page table” is backed by a Merkle tree that verifies memory that is loaded into memory, or stored between segments.
Fields§
§page_size: u32Size of each page, in bytes.
page_table_addr: u32Starting address for the page table in the memory space.
root_addr: u32Address of the root page, which is the top layer of the Merkle tree.
root_idx: u32Page index of the root page.
num_pages: u32Total number of pages covered by this page table.
num_root_entries: u32Number of entries in the root page. The root page may not be full, if the memory space is smaller than what the full number of entries could cover.
Implementations§
source§impl PageTableInfo
impl PageTableInfo
sourcepub fn new(page_table_addr: u32, page_size: u32) -> Result<Self>
pub fn new(page_table_addr: u32, page_size: u32) -> Result<Self>
Crate a new page table info struct with the given address and page size.
sourcepub fn get_page_addr(&self, page_idx: u32) -> u32
pub fn get_page_addr(&self, page_idx: u32) -> u32
Calculate the page address given its index.
sourcepub fn get_page_index(&self, addr: u32) -> u32
pub fn get_page_index(&self, addr: u32) -> u32
Calculate the index given its address.
sourcepub fn get_page_entry_addr(&self, page_idx: u32) -> u32
pub fn get_page_entry_addr(&self, page_idx: u32) -> u32
Calculate the index of the page that contains the hash of this page.
Trait Implementations§
source§impl Clone for PageTableInfo
impl Clone for PageTableInfo
source§fn clone(&self) -> PageTableInfo
fn clone(&self) -> PageTableInfo
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moresource§impl<'de> Deserialize<'de> for PageTableInfo
impl<'de> Deserialize<'de> for PageTableInfo
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for PageTableInfo
impl RefUnwindSafe for PageTableInfo
impl Send for PageTableInfo
impl Sync for PageTableInfo
impl Unpin for PageTableInfo
impl UnwindSafe for PageTableInfo
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit)