LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1428|回复: 1

关于do_mmap返回-EINVAL的问题

[复制链接]
发表于 2010-8-10 01:34:47 | 显示全部楼层 |阅读模式
我想把一个文件offet为0x400、长度为0x200的区段映射到内存指定地址addr开始处,但是do_mmap返回-EINVAL,经查阅资料发现可能是页对齐的问题,于是尝试将offset修改为0,结果能够返回我设置的addr,但是设为我需要的0x400就不行,所以想问大家,我怎么才能实现我所需要的功能?

另外,do_mmap似乎会将len修正为页大小,那假如offset+len超出文件的长度怎么办?

总感觉do_mmap的行为很是诡异……

附调用方法:map_addr = do_mmap(pfile, addr, 0x200, prot, flag, 0x400);
 楼主| 发表于 2010-8-10 17:53:05 | 显示全部楼层
我有一些理解了,do_mmap要求len和offset必须页对齐,如果想实现我这种想法,大概需要向前多读一些数据以满足对其要求,然后手动处理一下吧。

大家有更好的办法吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表