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 */
}
Available on non-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

source

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.

source

pub fn get_page_addr(&self, page_idx: u32) -> u32

Calculate the page address given its index.

source

pub fn get_page_index(&self, addr: u32) -> u32

Calculate the index given its address.

source

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

source§

fn clone(&self) -> PageTableInfo

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<'de> Deserialize<'de> for PageTableInfo

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Serialize for PageTableInfo

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,