vm: object: add prefetch function to fetch missing pages

This commit is contained in:
2026-04-30 19:09:41 +01:00
parent 607efa961f
commit d63c2dbd12
3 changed files with 78 additions and 9 deletions
+27
View File
@@ -516,6 +516,33 @@ static kern_status_t request_page(
return status;
}
kern_status_t vm_object_prefetch(
struct vm_object *vo,
off_t offset,
size_t length,
unsigned long *irq_flags)
{
offset &= ~VM_PAGE_MASK;
if (length & VM_PAGE_MASK) {
length &= ~VM_PAGE_MASK;
length += VM_PAGE_SIZE;
}
for (off_t i = offset; i < offset + length; i += VM_PAGE_SIZE) {
struct vm_page *pg = vm_object_get_page(
vo,
i,
VMO_ALLOCATE_MISSING_PAGE | VMO_REQUEST_MISSING_PAGE,
irq_flags);
if (!pg) {
/* TODO get error code from vm_object_get_page */
return KERN_NO_MEMORY;
}
}
return KERN_OK;
}
struct vm_page *vm_object_get_page(
struct vm_object *vo,
off_t offset,