vm: region: memmove_v() now supports iovec arrays stored in userspace
This commit is contained in:
@@ -876,6 +876,15 @@ kern_status_t vm_region_map_object(
|
|||||||
return KERN_INVALID_ARGUMENT;
|
return KERN_INVALID_ARGUMENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tracek("vm_region_map_object(%s, %zx, %s, %zx, %zx, %x, %p)",
|
||||||
|
region->vr_name,
|
||||||
|
region_offset,
|
||||||
|
object->vo_name,
|
||||||
|
object_offset,
|
||||||
|
length,
|
||||||
|
prot,
|
||||||
|
out);
|
||||||
|
|
||||||
struct vm_region_mapping *mapping
|
struct vm_region_mapping *mapping
|
||||||
= vm_cache_alloc(&mapping_cache, VM_NORMAL);
|
= vm_cache_alloc(&mapping_cache, VM_NORMAL);
|
||||||
if (!mapping) {
|
if (!mapping) {
|
||||||
@@ -1339,8 +1348,8 @@ extern kern_status_t vm_region_memmove_v(
|
|||||||
size_t bytes_to_move)
|
size_t bytes_to_move)
|
||||||
{
|
{
|
||||||
struct iovec_iterator src, dest;
|
struct iovec_iterator src, dest;
|
||||||
iovec_iterator_begin(&src, src_vecs, nr_src_vecs);
|
iovec_iterator_begin_user(&src, src_region, src_vecs, nr_src_vecs);
|
||||||
iovec_iterator_begin(&dest, dest_vecs, nr_dest_vecs);
|
iovec_iterator_begin_user(&dest, dest_region, dest_vecs, nr_dest_vecs);
|
||||||
|
|
||||||
iovec_iterator_seek(&src, src_offset);
|
iovec_iterator_seek(&src, src_offset);
|
||||||
iovec_iterator_seek(&dest, dest_offset);
|
iovec_iterator_seek(&dest, dest_offset);
|
||||||
|
|||||||
Reference in New Issue
Block a user