- int vm_insert_pfn_prot(struct vm_area_struct * vma, unsigned long addr, unsigned long pfn, pgprot_t pgprot);
- user vma to map to
- target user address of this page
- source kernel pfn
- pgprot flags for the inserted page
This is exactly like vm_insert_pfn, except that it allows drivers to to override pgprot on a per-page basis.
This only makes sense for IO mappings, and it makes no sense for cow mappings. In general, using multiple vmas is preferable; vm_insert_pfn_prot should only be used if using multiple VMAs is impractical.