MCPcopy Create free account
hub / github.com/IBM/ACE-RISCV / PageStorageTreeNode

Class PageStorageTreeNode

security-monitor/src/core/page_allocator/allocator.rs:337–350  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

335/// Invariant: The whole address space of this node is in addressable memory.
336#[rr::invariant("INV_IN_RANGE": "node.(base_address) + (page_size_in_bytes_nat node.(max_node_size)) ≤ MaxInt usize")]
337struct PageStorageTreeNode {
338 // Page token owned by this node. `None` means that this page token has already been allocated or that it has been divided into smaller
339 // pages token that were stored in this node's children.
340 #[rr::field("<#>@{{ option }} maybe_page_token")]
341 page_token: Option<Page<UnAllocated>>,
342 // Specifies what size of the page token can be allocated by exploring the tree starting at this node.
343 // Invariant: if page token exist, then the its size is the max allocable size. Otherwise, the max allocable page size is the max
344 // allocable page size of children
345 #[rr::field("<#>@{{ option }} max_sz")]
346 max_allocable_page_size: Option<PageSize>,
347 // Invariant: Children store page tokens smaller than the page token stored in the parent node
348 #[rr::field("<#> children")]
349 children: Vec<Self>,
350}
351
352#[rr::context("onceG Σ memory_layout")]
353#[rr::context("MachineConfig")]

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected