Lines Matching refs:vmap

449 	struct vm_area_struct *vmap;  in linux_cdev_pager_fault()  local
451 vmap = linux_cdev_handle_find(vm_obj->handle); in linux_cdev_pager_fault()
453 MPASS(vmap != NULL); in linux_cdev_pager_fault()
454 MPASS(vmap->vm_private_data == vm_obj->handle); in linux_cdev_pager_fault()
456 if (likely(vmap->vm_ops != NULL && offset < vmap->vm_len)) { in linux_cdev_pager_fault()
457 vm_paddr_t paddr = IDX_TO_OFF(vmap->vm_pfn) + offset; in linux_cdev_pager_fault()
491 struct vm_area_struct *vmap; in linux_cdev_pager_populate() local
495 vmap = linux_cdev_handle_find(vm_obj->handle); in linux_cdev_pager_populate()
496 MPASS(vmap != NULL); in linux_cdev_pager_populate()
497 MPASS(vmap->vm_private_data == vm_obj->handle); in linux_cdev_pager_populate()
503 down_write(&vmap->vm_mm->mmap_sem); in linux_cdev_pager_populate()
504 if (unlikely(vmap->vm_ops == NULL)) { in linux_cdev_pager_populate()
514 vmf.vma = vmap; in linux_cdev_pager_populate()
516 vmap->vm_pfn_count = 0; in linux_cdev_pager_populate()
517 vmap->vm_pfn_pcount = &vmap->vm_pfn_count; in linux_cdev_pager_populate()
518 vmap->vm_obj = vm_obj; in linux_cdev_pager_populate()
520 err = vmap->vm_ops->fault(&vmf); in linux_cdev_pager_populate()
522 while (vmap->vm_pfn_count == 0 && err == VM_FAULT_NOPAGE) { in linux_cdev_pager_populate()
524 err = vmap->vm_ops->fault(&vmf); in linux_cdev_pager_populate()
543 *first = vmap->vm_pfn_first; in linux_cdev_pager_populate()
544 *last = *first + vmap->vm_pfn_count - 1; in linux_cdev_pager_populate()
551 up_write(&vmap->vm_mm->mmap_sem); in linux_cdev_pager_populate()
561 linux_cdev_handle_free(struct vm_area_struct *vmap) in linux_cdev_handle_free() argument
564 if (vmap->vm_file != NULL) in linux_cdev_handle_free()
565 fput(vmap->vm_file); in linux_cdev_handle_free()
568 mmput(vmap->vm_mm); in linux_cdev_handle_free()
570 kfree(vmap); in linux_cdev_handle_free()
574 linux_cdev_handle_remove(struct vm_area_struct *vmap) in linux_cdev_handle_remove() argument
577 TAILQ_REMOVE(&linux_vma_head, vmap, vm_entry); in linux_cdev_handle_remove()
584 struct vm_area_struct *vmap; in linux_cdev_handle_find() local
587 TAILQ_FOREACH(vmap, &linux_vma_head, vm_entry) { in linux_cdev_handle_find()
588 if (vmap->vm_private_data == handle) in linux_cdev_handle_find()
592 return (vmap); in linux_cdev_handle_find()
609 struct vm_area_struct *vmap; in linux_cdev_pager_dtor() local
611 vmap = linux_cdev_handle_find(handle); in linux_cdev_pager_dtor()
612 MPASS(vmap != NULL); in linux_cdev_pager_dtor()
618 linux_cdev_handle_remove(vmap); in linux_cdev_pager_dtor()
620 down_write(&vmap->vm_mm->mmap_sem); in linux_cdev_pager_dtor()
621 vm_ops = vmap->vm_ops; in linux_cdev_pager_dtor()
623 vm_ops->close(vmap); in linux_cdev_pager_dtor()
624 up_write(&vmap->vm_mm->mmap_sem); in linux_cdev_pager_dtor()
626 linux_cdev_handle_free(vmap); in linux_cdev_pager_dtor()
1266 struct vm_area_struct *vmap; in linux_file_mmap_single() local
1292 vmap = kzalloc(sizeof(*vmap), GFP_KERNEL); in linux_file_mmap_single()
1293 vmap->vm_start = 0; in linux_file_mmap_single()
1294 vmap->vm_end = size; in linux_file_mmap_single()
1295 vmap->vm_pgoff = *offset / PAGE_SIZE; in linux_file_mmap_single()
1296 vmap->vm_pfn = 0; in linux_file_mmap_single()
1297 vmap->vm_flags = vmap->vm_page_prot = (nprot & VM_PROT_ALL); in linux_file_mmap_single()
1299 vmap->vm_flags |= VM_SHARED; in linux_file_mmap_single()
1300 vmap->vm_ops = NULL; in linux_file_mmap_single()
1301 vmap->vm_file = get_file(filp); in linux_file_mmap_single()
1302 vmap->vm_mm = mm; in linux_file_mmap_single()
1304 if (unlikely(down_write_killable(&vmap->vm_mm->mmap_sem))) { in linux_file_mmap_single()
1307 error = -OPW(fp, td, fop->mmap(filp, vmap)); in linux_file_mmap_single()
1309 up_write(&vmap->vm_mm->mmap_sem); in linux_file_mmap_single()
1313 linux_cdev_handle_free(vmap); in linux_file_mmap_single()
1317 attr = pgprot2cachemode(vmap->vm_page_prot); in linux_file_mmap_single()
1319 if (vmap->vm_ops != NULL) { in linux_file_mmap_single()
1324 if (vmap->vm_ops->open == NULL || in linux_file_mmap_single()
1325 vmap->vm_ops->close == NULL || in linux_file_mmap_single()
1326 vmap->vm_private_data == NULL) { in linux_file_mmap_single()
1328 linux_cdev_handle_free(vmap); in linux_file_mmap_single()
1332 vm_private_data = vmap->vm_private_data; in linux_file_mmap_single()
1353 TAILQ_INSERT_TAIL(&linux_vma_head, vmap, vm_entry); in linux_file_mmap_single()
1355 vm_no_fault = (vmap->vm_ops->fault == NULL); in linux_file_mmap_single()
1361 linux_cdev_handle_free(vmap); in linux_file_mmap_single()
1382 linux_cdev_handle_remove(vmap); in linux_file_mmap_single()
1384 linux_cdev_handle_free(vmap); in linux_file_mmap_single()
1393 (vm_paddr_t)vmap->vm_pfn << PAGE_SHIFT, vmap->vm_len); in linux_file_mmap_single()
1395 *object = vm_pager_allocate(OBJT_SG, sg, vmap->vm_len, in linux_file_mmap_single()
1398 linux_cdev_handle_free(vmap); in linux_file_mmap_single()
1890 vmap(struct page **pages, unsigned int count, unsigned long flags, int prot) in vmap() function