NAME | SYNOPSIS | FEATURES | DESCRIPTION | RETURN VALUE | ERRORS | RESTRICTIONS | ATTRIBUTES | SEE ALSO
#include <mem/chMem.h>int rgnMap(KnCap *actorcap, KnRgnDesc *rgndesc, KnObjDesc *segdesc);
MEM_VM
This system call is strictly reserved for internal use only. It MUST NOT be used by any application.
The rgnMap call creates a region in the address space of the target actor and maps a segment to the region.
The target actor is specified by actorcap - a pointer to the target actor capability. If actorcap is K_MYACTOR, the address space of the current actor is used. If actorcap is K_SVACTOR, the region is allocated in the supervisor address space and isn't attached to any particular supervisor actor; it cannot therefore be implicitly deallocated using an actorDelete(2K) of a supervisor actor.
The rgndesc pointer points to a KnRgnDesc structure containing the specification of the region to be created as described in rgnAllocate (2K).
The segdesc pointer points to a KnObjDesc structure containing the specification of the segment range to be mapped to the created region described in rgnInit (2SEG). Note that the size field will be ignored because the size of the range mapped is equal to the size of the region created.
The caller can specify any of the rgndesc->options as described in rgnAllocate (2K) except that the K_FILLZERO flag is ignored, and theK_RESERVED flag is prohibited. Also, the caller can specify K_NOSYNC flag.
If the K_NOSYNC flag is specified, the kernel writes back dirty pages of the segment as late as possible. Otherwise, any modification of a segment is written back within a period of time specified using a system configuration parameter..
If successful K_OK is returned, otherwise a negative error code is returned.
Some of the arguments provided are outside the caller's address space.
An inconsistent actor capability was provided.
actorcap does not specify a reachable actor.
rgndesc->startAddr is not page-aligned.
segdesc->startOffset is not page-aligned.
Tried to create a region outside the valid range for the address space of an actor as returned by vmStat(2K).
rgndesc->size is zero.
Attempted to map a segment outside its valid offset range as returned by vmStat(2K).
The K_ANYWHERE option was specified and there is insufficient room available in the address space to create the region.
The K_RESTRICTIVE option was specified and there is insufficient room in the target address range.
The region created overlaps an existing region.
The system is out of resources.
The segment mapper doesn't respect the kernel/mapper protocol.
The target actor and the current actor must be located on the same site.
See attributes(5) for descriptions of the following attributes:
ATTRIBUTE TYPE | ATTRIBUTE VALUE |
---|---|
Interface Stability | Evolving |
NAME | SYNOPSIS | FEATURES | DESCRIPTION | RETURN VALUE | ERRORS | RESTRICTIONS | ATTRIBUTES | SEE ALSO