|
Barrelfish
|
Pmap code common for x86 archs. More...
Functions | |
| bool | has_vnode (struct vnode *root, uint32_t entry, size_t len, bool only_pages) |
check whether vnode root has children in [entry .. entry+len). More... | |
| struct vnode * | find_vnode (struct vnode *root, uint16_t entry) |
| Starting at a given root, return the vnode with entry equal to #entry. More... | |
| bool | inside_region (struct vnode *root, uint32_t entry, uint32_t npages) |
| void | remove_vnode (struct vnode *root, struct vnode *item) |
remove vnode item from list of children of root. | |
| errval_t | alloc_vnode (struct pmap_x86 *pmap, struct vnode *root, enum objtype type, uint32_t entry, struct vnode **retvnode) |
| Allocates a new VNode, adding it to the page table and our metadata. More... | |
| void | remove_empty_vnodes (struct pmap_x86 *pmap, struct vnode *root, uint32_t entry, size_t len) |
| remove vnodes with no leafs in [entry .. entry+len), destroy their associated capabilities and free their slabs. | |
| errval_t | pmap_x86_serialise (struct pmap *pmap, void *buf, size_t buflen) |
| Serialise vtree to a flat structure, for passing to another process. More... | |
| errval_t | pmap_x86_deserialise (struct pmap *pmap, void *buf, size_t buflen) |
| Deserialise vtree from a flat structure, for importing from another process. More... | |
| errval_t | pmap_x86_determine_addr (struct pmap *pmap, struct memobj *memobj, size_t alignment, genvaddr_t *retvaddr) |
| Determine a suitable address for a given memory object. More... | |
Pmap code common for x86 archs.
| errval_t alloc_vnode | ( | struct pmap_x86 * | pmap, |
| struct vnode * | root, | ||
| enum objtype | type, | ||
| uint32_t | entry, | ||
| struct vnode ** | retvnode | ||
| ) |
Allocates a new VNode, adding it to the page table and our metadata.
allocate vnode as child of root with type type. Allocates the struct vnode with pmap's slab allocator.
Starting at a given root, return the vnode with entry equal to #entry.
entry in root. NULL if no vnode there. | bool has_vnode | ( | struct vnode * | root, |
| uint32_t | entry, | ||
| size_t | len, | ||
| bool | only_pages | ||
| ) |
check whether vnode root has children in [entry .. entry+len).
root has children in [entry .. entry+len) and only_pages falseroot has valid page mappings in [entry .. entry+len) and only_pages true | bool inside_region | ( | struct vnode * | root, |
| uint32_t | entry, | ||
| uint32_t | npages | ||
| ) |
root. | errval_t pmap_x86_deserialise | ( | struct pmap * | pmap, |
| void * | buf, | ||
| size_t | buflen | ||
| ) |
Deserialise vtree from a flat structure, for importing from another process.
This is used in a newly-spawned child
| errval_t pmap_x86_determine_addr | ( | struct pmap * | pmap, |
| struct memobj * | memobj, | ||
| size_t | alignment, | ||
| genvaddr_t * | retvaddr | ||
| ) |
Determine a suitable address for a given memory object.
| pmap | The pmap object |
| memobj | The memory object to determine the address for |
| alignment | Minimum alignment |
| retvaddr | Pointer to return the determined address |
Relies on vspace.c code maintaining an ordered list of vregions
| errval_t pmap_x86_serialise | ( | struct pmap * | pmap, |
| void * | buf, | ||
| size_t | buflen | ||
| ) |
Serialise vtree to a flat structure, for passing to another process.
This is used by spawn_vspace to communicate the vnode capabilities to the child.
1.8.11