vm_bind_root - Makes binding to the root page table of an arena


#include <charm.h>

Status vm_bind_root( int arena_id, Cap arenacap, int pfn, Cap bindcap, bool use_hashing);


arena_id Specifies the arena into which the root page table is to be mapped.

arenacap The manage capability associated with the arena denoted by arena_id.

pfn Specifies the physical page frame containing the root page table.

bindcap Specifies the capability associated with pfn.

use_hashing Specifies that hashing is to be used when binding the page.


This system call associates a root page table with an arena. If use_hashing is true, the kernel will calculate a hash value for the supplied page and match it against a cached value for the arena. The calculated hash code must match the stored value otherwise a [VM_BAD_HASH] error is returned (see vm_unbind_root for more information).

If use_hashing is false, the supplied page is cleared. This effectively creates an empty address space in which the kernel creates standard mappings.


Upon the successful completion, the vm_bind_root() function returns [SUCCESS].


If the vm_bind_root() function fails, a Status is returned that corresponds to one of the following values:

[NO_SUCH_ARENA] The arena_id parameter is not valid (out of range).

[ARENA_CAP_INVALID] The arena_cap parameter specifies a capability that does not match the current authorisation capability associated with the arena.

[VM_ROOT_EXISTS] A root page has already been specified.

[VM_BAD_HASH] The page provided does not match the stored hash code for the arena.

[INVALID_BIND_CAP] The capability specified by bindcap is invalid.

[PFN_INVALID]] The page frame number speficied in pfn is invalid.


vm_unbind_root(), vm_bind_l1(), vm_bind_l2().


last updated: 7/9/99