NAME | SYNOPSIS | API RESTRICTIONS | FEATURES | DESCRIPTION | RETURN VALUE | ERRORS | RESTRICTIONS | ATTRIBUTES | SEE ALSO
#include <mem/chMem.h>int vmLock(KnCap * actorcap, VmAddr address, VmSize size, VmFlags flags);
The function or functions documented here may not be used safely in all application contexts with all APIs provided in the ChorusOS 5.0 product.
See API(5FEA) for details.
MEM_PROTECTED, MEM_VIRTUAL
The vmLock function locks the translations of the target virtual address range of the target actor address space. The (vmUnLock) function unlocks the translations of the target virtual address range of the target actor address space.
The target actor is specified by actorcap - a pointer to the actor capability. If actorcap is K_MYACTOR, the address space of the current actor is used. If actorcap is K_SVACTOR, the supervisor address space is used.
The target address range is specified using its starting address and its size. Both address and size must be page aligned.
The vmLock function causes each virtual address from the target address range to be mapped to physical memory with the required protections. If the K_WRITABLE flag is set in the flags argument, write access is required; otherwise, read access is required. Then vmLock gets a reader lock on the translations from the target address range. The reader lock guarantees that when a thread tries to modify either the physical address or the protections of a locked mapping (using rgnFree or rgnSetProt , for example), it blocks until the corresponding vmUnLock is encountered.
If the K_WRITABLE flag is set in the flags argument, vmLock marks the locked pages as modified. This could be necessary if, for example after locking, the pages are modified by a driver using the corresponding physical addresses.
An address range locked by a number of non-overlapped vmLock operations may be unlocked by any number of non-overlapped vmUnLock operations.
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 has been provided.
actorcap does not specify a reachable actor.
Some or all addresses from the target address range are invalid.
Write access is required but some or all the addresses from the target address range are write--p rotected.
address isn't page aligned.
size isn't page-aligned.
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 | API RESTRICTIONS | FEATURES | DESCRIPTION | RETURN VALUE | ERRORS | RESTRICTIONS | ATTRIBUTES | SEE ALSO