我在一个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)
yjc17sys_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)

返回顶部