- 论坛徽章:
- 0
|
回复 8# sep
我的kernel为2.6.29. mem_map_reserve和remap_page_range都没有定义,用SetPageReserved和remap_pfn_range
现在代码为:
pdata=(char *)kmalloc(4096, GFP_KERNEL);
page=virt_to_page(pdata);
SetPageReserved(page);
static int test_mmap(struct file *flip,struct vm_area_struct *vma)
{
unsigned long pfn;
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); //no cache
vma->vm_flags |= VM_IO;
vma->vm_flags |= VM_RESERVED;
pfn = virt_to_phys(pdata) >> PAGE_SHIFT;
if(remap_pfn_range(vma, vma->vm_start, pfn, vma->vm_end - vma->vm_start, vma->vm_page_prot))
return -EAGAIN;
vma->vm_ops = &test_vm_ops;
test_vm_open(vma);
return 0;
}
问题依旧,不知kmalloc出的页面怎么设置为nocache? |
|