vm_unbind_root - Undoes an extant binding to the root page table of an arena


#include <charm.h>

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


arena_id Specifies the arena from which the root page table is being removed.

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 the page is unmapped (see below).


This system call disassociates a root page table from an arena. The arena is left without an address space and consequently cannot support computation.

If use_hashing is true, the kernel will calculate a hash code for the page before it is unmapped. This hash code is stored in a kernel data structure associated with the arena. This mechanism provides an efficient means to remove and later reinstate a root page table (containing valid bindings). Without this mechanism, any extant bindings on the page would need to be recreated whenever the page was rebound. (c.f. vm_bind_root)


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


If the vm_unbind_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_bind_root(), vm_bind_l1(), vm_bind_l2().


last updated: 7/9/99