版块
论坛
喜欢
话题
应用
搜索
登录
注册
liwashington的个人空间
访问量
0
新鲜事
帖子
资料
http://bbs3.driverdevelop.com/index.php?m=space&uid=81517
linux下关于内存映射的困惑
我在一个MODULE中拦截了sys_open的调用,然后在这个函数里还想再调用sys_getcwd等内核函数,但是这些函数要求输入的内存是用户态内存地址,而我在MODULE里又只能分配内核内存,结果导致sys_getcwd函数调用失败!找了一些资料,说可以通过remap_page...
全文
回复
(
5
)
2009-11-15 15:53
来自版块 -
LINUX&UNIX核心开发
◆
◆
表情
告诉我的粉丝
提 交
yjc17
:
调用sys_getcwd 之前,先set_ds(KERNEL_DS) 一下,试试吧
(2010-05-20 14:03)
回复
yjc17
:
sys_getcwd
(2010-05-20 14:01)
回复
cyliu
:
似乎内核中可以直接使用vfs_write等调用 要做内核的产品就别总想着移植性问题,必须稳定下来一个内核。所以说你的这用想法是不正确的,是违背了规律,因为内核本来就是在不停的变化,不变的是对外的系统调用。 要想移植性好,就做个应用层的程序,和内核不停的交互,把内核容易变化的放...
(2009-11-23 19:45)
回复
liwashington
:
我最初就是这样实现的,但是这样一来版本依赖非常严重,LINUX又改来改去,要N多个版本,非常恼火。后来想到用do_mmap映射一段内存,然后找到VMA,再安装NOPAGE例程,但是又发现do_mmap并不一定是产生新的VMA,这样的话,安装NOPAGE又会影响其它的内存,还是比较...
(2009-11-23 13:42)
回复
cyliu
:
自己实现一个内核版:去掉copy_to_user,代替为内核的内存copy就可以了
(2009-11-21 18:49)
回复
liwashington
加关注
写私信
0
关注
0
粉丝
150
帖子
返回顶部