The processor architecture-independent portion of a region object consists of:
integer_t hash; /* object hash value */ oskit_addr_t start_va; /* region start VA in task */ oskit_size_t size; /* size of region */ fluke_prot_t prot; /* max protection allowed */}
fluke_ref_t | *task_ref; | |
fluke_ref_t | *keeper_ref; |
hash is the immutable hash value for the object.
start_va and size define the extent of the region. Both may have processor architecture-specific alignment constraints.
max_prot defines the maximum access permissions that can be granted to any mapping object directly associated with the region or indirectly derived from it.
task_ref is a reference to the task object over whose address space the region is defined. If null, all mapping objects derived from this region will act as though the region's access permissions were zero; i.e. all accesses to those mappings will cause a synchronous exception to be sent to the region keeper.
keeper_ref is a reference to the port object to which fluke_ipc_call operations are made whenever a memory-related synchronous exception occurs; i.e., it identifies the page-fault handler for this memory region. A null keeper reference causes exceptions to be sent to the faulting thread as though a keeper existed but did not resolve the fault.