vm_insert_page — insert single page into user vma
int vm_insert_page ( | struct vm_area_struct * vma, |
unsigned long addr, | |
struct page * page) ; |
This allows drivers to insert individual pages they've allocated into a user vma.
The page has to be a nice clean _individual_ kernel allocation.
If you allocate a compound page, you need to have marked it as
such (__GFP_COMP), or manually just split the page up yourself
(see split_page
).
NOTE! Traditionally this was done with “remap_pfn_range
” which
took an arbitrary page protection parameter. This doesn't allow
that. Your vma protection will have to be set up correctly, which
means that if you want a shared writable mapping, you'd better
ask for a shared writable mapping!
The page does not need to be reserved.