Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/xen/gntdev/gntdev.c
Show First 20 Lines • Show All 1,062 Lines • ▼ Show 20 Lines | |||||
*/ | */ | ||||
static int | static int | ||||
mmap_gref(struct per_user_data *priv_user, struct gntdev_gref *gref_start, | mmap_gref(struct per_user_data *priv_user, struct gntdev_gref *gref_start, | ||||
uint32_t count, vm_size_t size, struct vm_object **object) | uint32_t count, vm_size_t size, struct vm_object **object) | ||||
{ | { | ||||
vm_object_t mem_obj; | vm_object_t mem_obj; | ||||
struct gntdev_gref *gref; | struct gntdev_gref *gref; | ||||
mem_obj = vm_object_allocate(OBJT_PHYS, size); | mem_obj = vm_pager_allocate(OBJT_PHYS, NULL, size, VM_PROT_ALL, 0, | ||||
curthread->td_ucred); | |||||
if (mem_obj == NULL) | if (mem_obj == NULL) | ||||
return (ENOMEM); | return (ENOMEM); | ||||
mtx_lock(&priv_user->user_data_lock); | mtx_lock(&priv_user->user_data_lock); | ||||
VM_OBJECT_WLOCK(mem_obj); | VM_OBJECT_WLOCK(mem_obj); | ||||
for (gref = gref_start; gref != NULL && count > 0; gref = | for (gref = gref_start; gref != NULL && count > 0; gref = | ||||
RB_NEXT(gref_tree_head, &priv_user->gref_tree, gref)) { | RB_NEXT(gref_tree_head, &priv_user->gref_tree, gref)) { | ||||
if (gref->page->object) | if (gref->page->object) | ||||
▲ Show 20 Lines • Show All 209 Lines • Show Last 20 Lines |