next up previous contents
Next: 4.3 References Up: 4 Regions Previous: 4.1 Overview

4.2 State

The processor architecture-independent portion of a region object consists of:

struct fluke_region_state  {

	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.



Utah Flux Research Group