Barrelfish
|
Pmap definition common for the x86 archs, but private to libbarrelfish. More...
Functions | |
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 *vaddr) |
Determine a suitable address for a given memory object. More... | |
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) |
allocate vnode as child of root with type type . Allocates the struct vnode with pmap 's slab allocator. 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. | |
Pmap definition common for the x86 archs, but private to libbarrelfish.
errval_t alloc_vnode | ( | struct pmap_x86 * | pmap, |
struct vnode * | root, | ||
enum objtype | type, | ||
uint32_t | entry, | ||
struct vnode ** | retvnode | ||
) |
allocate vnode as child of root
with type type
. Allocates the struct vnode with pmap
's slab allocator.
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.