next up previous contents
Next: 5.3 References Up: 5 Mappings Previous: 5.1 Overview

5.2 State

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

struct fluke_mapping_state  {

	integer_t	hash;		/* object hash value */
	oskit_addr_t	region_off;	/* offset in the region */
	oskit_addr_t	start_va;	/* mapping start VA in task */
	oskit_size_t	size;		/* size of mapping */
	fluke_prot_t	prot;		/* access allowed */
 
}

fluke_ref_t*region_ref; fluke_ref_t*task_ref;

hash is the immutable hash value for the object. Note: Mapping objects contain an exported hash value even though they are not referencable objects.

region_off is the offset in the region at which the mapping starts. The offset may have processor architecture-specific alignment constraints.

start_va and size define the extent of the mapping. Both may have processor architecture-specific alignment constraints.

prot defines the desired access permission for the region. The actual access allowed may be constrained by the region's maximum protection value.

region_ref is a reference to the region object being mapped. If null, the mapping is treated as though its access permissions were zero.

task_ref is a reference to the task object into whose address space the region is being mapped. If null, the mapping has no effect.

The value of region_off + size may exceed the size of the region from which it is mapped (e.g., a region may shrink after it has been mapped). Accesses to that excess memory area will cause synchronous exceptions to be sent to the region keeper.



Utah Flux Research Group