使用shm_open& amp;将用户空间映射到内核空间内存MMAP

时间:2015-12-05 17:16:35

标签: c linux kernel

我想要做的是,我想在用户空间中创建一个共享内存,然后我发送这个共享内存的名称&它的大小是自定义系统调用,然后这个系统调用打开这个共享内存&修改它。使用shm_open& mmap。在用户空间和用户之间可以做到这一点内核空间?

我的问题是

每当我尝试make到新的自定义内核时,我都会遇到以下错误

  • shm_open&的隐含声明MMAP
  • PROT_READ,PROT_WRITE等...

以下是包含的头文件

  • unistd.h stdlib sys/types sys/stat sys/shm sys/mman fcntl&其他标题。

在gcc中我会调用此命令gcc example.c -lrt&它运作得很好。

2 个答案:

答案 0 :(得分:0)

根据manual page,您需要:

#include <sys/mman.h>
#include <sys/stat.h>        /* For mode constants */
#include <fcntl.h>           /* For O_* constants */

在你的档案中。具体来说,<sys/stat.h>包含缺少的常量。也许你错过了.h

如果这没有帮助,我建议您发布一个说明问题的最小例子。

答案 1 :(得分:0)

  

每当我尝试pip install --user virtualenvwrapper 到新的自定义内核时,我得到以下内容   错误

     
      
  • shm_open&amp;的隐含声明MMAP
  •   
不能从内核代码中使用

库函数,如makeshm_open
您可能希望查看tutorials的实现,但请注意,例如,使用了库函数mmap,以上适用;在您的内核代码中,您将使用e。 G。而是shm_open