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: u32
Size of each page, in bytes.
page_table_addr: u32
Starting address for the page table in the memory space.
root_addr: u32
Address of the root page, which is the top layer of the Merkle tree.
root_idx: u32
Page index of the root page.
num_pages: u32
Total number of pages covered by this page table.
num_root_entries: u32
Number 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 more