NAME | SYNOPSIS | FEATURES | DESCRIPTION | ATTRIBUTES | SEE ALSO
#include <mem/chMem.h>
#include <mem/chMapper.h>
MpPullIn
request annex (KnMpInle structure):
int service ;
KnCap segkey ;
KnCap lccap ;
VmOffset accessOffset ;
VmSize accessSize ;
VmFlags requiredAccess ;
VmOffset requiredAccessOffset ;
VmSize requiredAccessSize ;
VmOffset dataOffset ;
VmSize dataSize ;
VmOffset requiredDataOffset ;
VmSize requiredDataSize ;
MpPullInId pullInId ;
response annex (KnMpInReply structure) :
int diag ;
VmFlags grantedAccess ;
unsigned ordinalNumber ;
VmOffset returnAccessOffset ;
VmSize returnAccessSize ;
VmSize inClusterSize ;
VmSize outClusterSize ;
VmOffset returnDataOffset ;
VmSize returnDataSize ;
response body:
unsigned char data [bodysize] ;
MEM_VM
This system call is strictly reserved for internal use only. It MUST NOT be used by any application.
In order to demand the contents of a range of a local cache to be updated from the corresponding segment, the kernel memory management system performs a MpPullIn message transaction. It sends, using ipcCall(2K) a MpPullIn request message to the mapper managing the segment. The mapper is identified by the ui field of the segment capability.
The request message consists of an annex (no body) whose head matches the KnMpIn structure defined above. The service field of this structure is set to KN_MPPULLIN
The kernel demands dataSize bytes of data to be updated with the starting offset specified by dataOffset,from the segment specified by segkey on the invoked mapper, in the local cache specified by lccap. The kernel also specifies in the message that the update of requiredDataSize bytes of data with the requiredDataOffset starting offset is mandatory. The kernel guarantees that [dataOffset,dataOffset + dataSize] includes [requiredDataOffset, requiredDataOffset + requiredDataSize]. The dataOffset, dataSize, requiredDataOffset and requiredDataSize parameters are always page aligned. The pullInId identifier is the MpPullIn message transaction identifier used in lcPushData(2SEG).
The mapper must reply (using ipcReply(2K)) with a message whose annex head matches the KnMpInReply structure, and whose body (if any) contains the data to be put in the local cache.
The diag field is the operation return code. The diag field must be either 0 (K_OK), or a negative number. If a negative error code is returned, the kernel returns it to the original kernel call.
The returnDataSize field specifies the size of the data to be put in the local cache, and the returnDataOffset field specifies the starting offset of the data within the segment. The mapper has to guarantee that [returnDataOffset, returnDataOffset + returnDataSize] is included in [dataOffset, dataOffset + dataSize] but includes [requiredDataOffset, requiredDataOffset + requiredDataSize]. Both returnDataOffset and returnDataSize must be page aligned.
The size of the body may be less or equal to the returnDataSize value. If the body size is less than returnDataSize, the memory management system will fill the remaining data with default values: zero or scratch. The default value is zero if the mapper sets the K_FILLZERO flag in the grantedAccess field.
If the K_DIRTY flag is set in the grantedAccess field, the kernel considers the returned data as dirty: the kernel will later perform an MpPushOut operation for the data even if the data is not modified on the site.
If accessSize is not zero, the MpPullIn data request is combined with a getAcceess access request. The mapper must reply to the access request as described in the MpGetAccess (2SEG) manual.
In the case of a combined request, the mapper can defer data return until a subsequent non-combined (pure) MpPullIn request. To reply without data, the mapper sets the returnDataSize field and the reply body size to zero.
If the mapper replies to a combined MpPullIn request with data, it can't use the K_DIRTY and K_ORDERED flags together.
See attributes(5) for descriptions of the following attributes:
ATTRIBUTE TYPE | ATTRIBUTE VALUE |
---|---|
Interface Stability | Evolving |
NAME | SYNOPSIS | FEATURES | DESCRIPTION | ATTRIBUTES | SEE ALSO