Lines Matching refs:vmap

620 	struct vm_area_struct *vmap;  in linux_cdev_pager_fault()  local
622 vmap = linux_cdev_handle_find(vm_obj->handle); in linux_cdev_pager_fault()
624 MPASS(vmap != NULL); in linux_cdev_pager_fault()
625 MPASS(vmap->vm_private_data == vm_obj->handle); in linux_cdev_pager_fault()
627 if (likely(vmap->vm_ops != NULL && offset < vmap->vm_len)) { in linux_cdev_pager_fault()
628 vm_paddr_t paddr = IDX_TO_OFF(vmap->vm_pfn) + offset; in linux_cdev_pager_fault()
662 struct vm_area_struct *vmap; in linux_cdev_pager_populate() local
666 vmap = linux_cdev_handle_find(vm_obj->handle); in linux_cdev_pager_populate()
667 MPASS(vmap != NULL); in linux_cdev_pager_populate()
668 MPASS(vmap->vm_private_data == vm_obj->handle); in linux_cdev_pager_populate()
674 down_write(&vmap->vm_mm->mmap_sem); in linux_cdev_pager_populate()
675 if (unlikely(vmap->vm_ops == NULL)) { in linux_cdev_pager_populate()
685 vmf.vma = vmap; in linux_cdev_pager_populate()
687 vmap->vm_pfn_count = 0; in linux_cdev_pager_populate()
688 vmap->vm_pfn_pcount = &vmap->vm_pfn_count; in linux_cdev_pager_populate()
689 vmap->vm_obj = vm_obj; in linux_cdev_pager_populate()
691 err = vmap->vm_ops->fault(vmap, &vmf); in linux_cdev_pager_populate()
693 while (vmap->vm_pfn_count == 0 && err == VM_FAULT_NOPAGE) { in linux_cdev_pager_populate()
695 err = vmap->vm_ops->fault(vmap, &vmf); in linux_cdev_pager_populate()
714 *first = vmap->vm_pfn_first; in linux_cdev_pager_populate()
715 *last = *first + vmap->vm_pfn_count - 1; in linux_cdev_pager_populate()
722 up_write(&vmap->vm_mm->mmap_sem); in linux_cdev_pager_populate()
732 linux_cdev_handle_free(struct vm_area_struct *vmap) in linux_cdev_handle_free() argument
735 if (vmap->vm_file != NULL) in linux_cdev_handle_free()
736 fput(vmap->vm_file); in linux_cdev_handle_free()
739 mmput(vmap->vm_mm); in linux_cdev_handle_free()
741 kfree(vmap); in linux_cdev_handle_free()
745 linux_cdev_handle_remove(struct vm_area_struct *vmap) in linux_cdev_handle_remove() argument
748 TAILQ_REMOVE(&linux_vma_head, vmap, vm_entry); in linux_cdev_handle_remove()
755 struct vm_area_struct *vmap; in linux_cdev_handle_find() local
758 TAILQ_FOREACH(vmap, &linux_vma_head, vm_entry) { in linux_cdev_handle_find()
759 if (vmap->vm_private_data == handle) in linux_cdev_handle_find()
763 return (vmap); in linux_cdev_handle_find()
780 struct vm_area_struct *vmap; in linux_cdev_pager_dtor() local
782 vmap = linux_cdev_handle_find(handle); in linux_cdev_pager_dtor()
783 MPASS(vmap != NULL); in linux_cdev_pager_dtor()
789 linux_cdev_handle_remove(vmap); in linux_cdev_pager_dtor()
791 down_write(&vmap->vm_mm->mmap_sem); in linux_cdev_pager_dtor()
792 vm_ops = vmap->vm_ops; in linux_cdev_pager_dtor()
794 vm_ops->close(vmap); in linux_cdev_pager_dtor()
795 up_write(&vmap->vm_mm->mmap_sem); in linux_cdev_pager_dtor()
797 linux_cdev_handle_free(vmap); in linux_cdev_pager_dtor()
1373 struct vm_area_struct *vmap; in linux_file_mmap_single() local
1399 vmap = kzalloc(sizeof(*vmap), GFP_KERNEL); in linux_file_mmap_single()
1400 vmap->vm_start = 0; in linux_file_mmap_single()
1401 vmap->vm_end = size; in linux_file_mmap_single()
1402 vmap->vm_pgoff = *offset / PAGE_SIZE; in linux_file_mmap_single()
1403 vmap->vm_pfn = 0; in linux_file_mmap_single()
1404 vmap->vm_flags = vmap->vm_page_prot = (nprot & VM_PROT_ALL); in linux_file_mmap_single()
1406 vmap->vm_flags |= VM_SHARED; in linux_file_mmap_single()
1407 vmap->vm_ops = NULL; in linux_file_mmap_single()
1408 vmap->vm_file = get_file(filp); in linux_file_mmap_single()
1409 vmap->vm_mm = mm; in linux_file_mmap_single()
1411 if (unlikely(down_write_killable(&vmap->vm_mm->mmap_sem))) { in linux_file_mmap_single()
1414 error = -OPW(fp, td, fop->mmap(filp, vmap)); in linux_file_mmap_single()
1416 up_write(&vmap->vm_mm->mmap_sem); in linux_file_mmap_single()
1420 linux_cdev_handle_free(vmap); in linux_file_mmap_single()
1424 attr = pgprot2cachemode(vmap->vm_page_prot); in linux_file_mmap_single()
1426 if (vmap->vm_ops != NULL) { in linux_file_mmap_single()
1431 if (vmap->vm_ops->open == NULL || in linux_file_mmap_single()
1432 vmap->vm_ops->close == NULL || in linux_file_mmap_single()
1433 vmap->vm_private_data == NULL) { in linux_file_mmap_single()
1435 linux_cdev_handle_free(vmap); in linux_file_mmap_single()
1439 vm_private_data = vmap->vm_private_data; in linux_file_mmap_single()
1460 TAILQ_INSERT_TAIL(&linux_vma_head, vmap, vm_entry); in linux_file_mmap_single()
1462 vm_no_fault = (vmap->vm_ops->fault == NULL); in linux_file_mmap_single()
1468 linux_cdev_handle_free(vmap); in linux_file_mmap_single()
1489 linux_cdev_handle_remove(vmap); in linux_file_mmap_single()
1491 linux_cdev_handle_free(vmap); in linux_file_mmap_single()
1500 (vm_paddr_t)vmap->vm_pfn << PAGE_SHIFT, vmap->vm_len); in linux_file_mmap_single()
1502 *object = vm_pager_allocate(OBJT_SG, sg, vmap->vm_len, in linux_file_mmap_single()
1505 linux_cdev_handle_free(vmap); in linux_file_mmap_single()
1984 vmap(struct page **pages, unsigned int count, unsigned long flags, int prot) in vmap() function