25 |
|
|
26 |
/* Default pager. */ |
/* Default pager. */ |
27 |
struct vm_pager *default_pager = & pager_default; |
struct vm_pager *default_pager = & pager_default; |
|
|
|
|
/* Request data from PAGER, which controls OBJECT. OFFSET is the |
|
|
data offset into OBJECT. SIZE should be VM_PAGE_SIZE. */ |
|
|
kern_return_t |
|
|
vm_pager_data_request (struct ipc_port *pager, struct vm_object *object, |
|
|
vm_offset_t offset, vm_size_t size, |
|
|
vm_prot_t desired_access, struct vm_page **pagep) |
|
|
{ |
|
|
struct vm_pager *vm_pager; |
|
|
|
|
|
assert (size == VM_PAGE_SIZE); |
|
|
|
|
|
/* Get pointer to VM pager object from the kernel object PAGER. */ |
|
|
assert (pager->kobject.type == IPC_KOBJECT_TYPE_MEMORY_OBJECT); |
|
|
vm_pager = (struct vm_pager *) pager->kobject.port; |
|
|
|
|
|
/* Leave control to the real pager function that does all the |
|
|
work for us. We just return whatever it returns. */ |
|
|
return |
|
|
(*vm_pager->page_request) (vm_pager, vm_pager->cookie, offset, |
|
|
desired_access, pagep); |
|
|
} |
|