Function - Provide kernel with data previously requested by the kernel's Memory Management facility.
[in memory-cache-control send right]
The memory cache control port
to be used by the memory manager for cache management requests.
This port is provided by the kernel in a memory_object_init
or memory_object_create call.
The offset within the memory object, in bytes.
[pointer to page aligned in array of bytes]
The address of the data
being provided to the kernel.
The amount of data to be provided. The number must be an
integral number of memory object pages.
If TRUE, the pages to be copied (starting at data) will be
deallocated from the memory manager's address space as a result of
being copied into the message, allowing the pages to be moved into the
kernel instead of being physically copied.
One or more forms of access not permitted for the specified
data. Valid values are:
Prohibits no access (that is, all forms of access are permitted).
Prohibits read access.
Prohibits write access.
Prohibits execute access.
Prohibits all forms of access.
If TRUE, the pages being supplied are "precious," that is,
the memory manager is not (necessarily) retaining its own copy. These
pages must be returned to the manager when evicted from memory,
even if not modified.
[in reply receive (to be converted to send) right]
A port to which the
kernel should send a memory_object_supply_completed to indicate
the status of the accepted data. MACH_PORT_NULL is allowed. The
reply message indicates which pages have been accepted.
The memory_object_data_supply function supplies the
kernel with a range of
data for the specified memory object. A memory manager can only provide data
that was requested by a memory_object_data_request
call from the kernel.
The kernel accepts only integral numbers of pages. It discards
any partial pages
A memory manager must be careful that it not attempt to provide data that has
not been explicitly requested. In particular, a memory manager
must ensure that
it does not provide writable data again before it receives back modifications
from the kernel. This may require that the memory manager remember which
pages it has provided, or that it exercise other cache control functions (via
memory_object_lock_request) before proceeding. The kernel prohibits the
overwriting of live data pages and will not accept pages it has not requested.
Only generic errors apply.