Esempio n. 1
0
kern_return_t	
vnode_pager_data_request(
	memory_object_t		mem_obj,
	memory_object_offset_t	offset,
	__unused vm_size_t	length,
	__unused vm_prot_t	desired_access,
	memory_object_fault_info_t	fault_info)
{
	register vnode_pager_t	vnode_object;
	vm_size_t		size;
#if MACH_ASSERT
	memory_object_offset_t	original_offset = offset;
#endif /* MACH_ASSERT */

	vnode_object = vnode_pager_lookup(mem_obj);

	size = MAX_UPL_TRANSFER * PAGE_SIZE;

	if (memory_object_cluster_size(vnode_object->control_handle, &offset, &size, fault_info) != KERN_SUCCESS)
	        size = PAGE_SIZE;

	assert(original_offset >= offset &&
	       original_offset < offset + size);

	return vnode_pager_cluster_read(vnode_object, offset, size);
}
Esempio n. 2
0
kern_return_t	
vnode_pager_data_request(
	memory_object_t		mem_obj,
	memory_object_offset_t	offset,
	__unused memory_object_cluster_size_t	length,
	__unused vm_prot_t	desired_access,
	memory_object_fault_info_t	fault_info)
{
	vnode_pager_t		vnode_object;
	memory_object_offset_t	base_offset;
	vm_size_t		size;
	uint32_t		io_streaming = 0;

	vnode_object = vnode_pager_lookup(mem_obj);

	size = MAX_UPL_TRANSFER * PAGE_SIZE;
	base_offset = offset;

	if (memory_object_cluster_size(vnode_object->control_handle, &base_offset, &size, &io_streaming, fault_info) != KERN_SUCCESS)
	        size = PAGE_SIZE;

	assert(offset >= base_offset &&
	       offset < base_offset + size);

	return vnode_pager_cluster_read(vnode_object, base_offset, offset, io_streaming, size);
}