Untitled
public text v1 · immutableint simple_mmap (struct file *filp, struct vm_area_struct *vma)
{
unsigned long physical = PHYSICAL_ADDRESS ;
unsigned long off = 0 ;
vma->vm_pgoff = off >> PAGE_SHIFT;
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
vma->vm_flags = vma->vm_flags | VM_IO | VM_RESERVED ;
/* Memory mapped I/O and DONT Swap out */
printk (KERN_WARNING "Start Address\n", vma -> vm_start) ;
if (io_remap_pfn_range (vma, vma->vm_start, physical >> PAGE_SHIFT,
vma->vm_end - vma->vm_start, vma->vm_page_prot) ) {
printk (KERN_WARNING "io_remap_pfn failed\n") ;
return -1 ;
} else {
printk (KERN_WARNING "io_remap_pfn succeeds\n") ;
return 0 ;
}
}