设备驱动程序怎么使用nopage实现mmap

狐仙大人 2018-06-25 10:14:04
求问:我想实现一个简单的设备驱动程序,使用nopage实现mmap,但编写nopage需要编写fault函数,下面的simple_vma_fault函数是我从网上摘抄的一段,编译时出现错误,原因是struct scullv_dev 未完成,我该怎么写它的结构体呢?谢谢!

struct file_operations mymmap_dev_fops=
{
open:mymmap_dev_open,
release:mymmap_dev_close,
read:mymmap_dev_read,
write:mymmap_dev_write,
mmap:simple_nopage_mmap,
};
static struct vm_operations_struct simple_nopage_vm_ops = {
.open = simple_vma_open,
.close = simple_vma_close,
.fault = simple_vma_fault,
};

static int simple_nopage_mmap(struct file *filp, struct vm_area_struct *vma)
{
unsigned long offset = vma->vm_pgoff << PAGE_SHIFT;
if (offset >= __pa(high_memory) || (filp->f_flags & O_SYNC))
vma->vm_flags |= VM_IO;
vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP;
vma->vm_ops = &simple_nopage_vm_ops;
simple_vma_open(vma);
return 0;
}







...全文
96 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

21,597

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧