NAME | SYNOPSIS | FEATURES | DESCRIPTION | RESTRICTIONS | RETURN VALUE | ERRORS | ATTRIBUTES | SEE ALSO
#include <mem/chMem.h>int dcGetPages(KnLcId lcid, VmOffset start, VmOffset end, VmFlags flags, KnPage **page);
PXM_EXT
This system call is strictly reserved for internal use only. It MUST NOT be used by any application.
The dcGetPages function enables a proxy-mapper to implement a read-ahead policy. It scans the data cache identified by the lcid argument, looking for pages belonging to the range defined by the start and end arguments. A new physical page is allocated for each page missing in the data cache. These pages are grouped in a contiguous list whose head is returned to the invoker at the location defined by the argument page. They may then be mapped or unmapped using the pageMap and pageUnmap nucleus calls, respectively. When pages have been filled with meaningful data, the proxy-mapper informs the nucleus using the pageIoDone nucleus call.
When I/O is completed, access rights are granted to the nucleus according to the values of the flags argument. If K_READABLE is set, read access is granted to the nucleus. If K_WRITABLE is set write access is granted to the nucleus. Pages returned by the nucleus to the proxy-mapper as a result of the dcGetPages nucleus call are write-locked until the read-ahead completes. This insures that concurrent access to these pages (mapping, reading, flushing,...) will be blocked until the read-ahead completes.
If the K_NOWAITFORMEMORY value is set in the flags argument, the nucleus will not allocate free pages in case free memory is low.
The page list returned by the dcGetPages nucleus call starts with the first missing page in the cache and will end at the first non missing page. However, this list cannot be greater than the range specified by the start and end arguments (which must be page aligned). The effective size of the list is also constrained by the input cluster size of the data cache, except if the K_PAGELIST value is set within the flags argument.
The current implementation is only applicable to trusted supervisor actors.
If successful K_OK is returned, otherwise a negative error code is returned.
See attributes(5) for descriptions of the following attributes:
ATTRIBUTE TYPE | ATTRIBUTE VALUE |
---|---|
Interface Stability | Evolving |
dcAlloc(2SEG), dcFlush(2SEG), dcFree(2SEG), dcRead(2SEG), dcWrite(2SEG), dcPgNumber(2SEG), dcCluster(2SEG), dcSync(2SEG), dcPxmDeclare(2SEG), rgnMapFromDtCache(2SEG), rgnInitFromDtCache(2SEG), rgnFlush(2SEG)
NAME | SYNOPSIS | FEATURES | DESCRIPTION | RESTRICTIONS | RETURN VALUE | ERRORS | ATTRIBUTES | SEE ALSO