최대 1 분 소요

user단에서 kernel단에서 할당한 address를 곧장 접근할수 있도록 한다.

——————usr app ———————————-

void *uva;

uva = (char *) mmap( 0,

MMAP_SIZE,

PROT_READ PROT_WRITE,

MAP_SHARED,

fd,

0 );

——————-driver[kernel]—————————-

int led_mmap(struct file *filp , struct vm_area_struct *vma )

{

vma->vm_flags = VM_RESERVED;
vma->vm_flags = VM_IO;

vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);

if(remap_pfn_range(vma,vma->vm_start, 0xE02001C0 /- PAddress*- » PAGE_SHIFT,  4096 , vma->vm_page_prot))

return -EAGAIN;

return 0;

}

static struct file_operations led_fops = {

.owner   = THIS_MODULE,

.read      = led_read,

.write   = led_write,

.open    = led_open,

.release = led_release,

.mmap     = led_mmap,

};