linux内核模块创建共享内存

内核编译和嵌入式产品的设计与开发
回复
nffy
帖子: 1
注册时间: 2013-07-10 10:13
系统: 12.04

linux内核模块创建共享内存

#1

帖子 nffy » 2014-05-03 22:08

用户空间进程可以通过shmget创建共享内存。
如果两个内核模块要通过共享内存进行通信,一个模块向共享内存里面写入数据,另一个内核模块从该共享内存里读出数据。
请问能否像用户空间进程一样,通过shmget,shmat,shmdt,shmctl等函数建立共享内存?
两个内核模块要通过共享内存进行通信,该如何操作?
O(∩_∩)O谢谢
头像
ttand
帖子: 1745
注册时间: 2005-08-22 14:05
来自: 离开北京

Re: linux内核模块创建共享内存

#2

帖子 ttand » 2014-05-04 12:58

好像很深。。。
可能在slab接口里有这种功能
错过好多好贴,没占到广告位后悔啊
头像
astolia
论坛版主
帖子: 6456
注册时间: 2008-09-18 13:11

Re: linux内核模块创建共享内存

#3

帖子 astolia » 2014-05-05 16:45

最简单的方法是直接把符号导出

char mybuffer[100];
EXPORT_SYMBOL(mybuffer);

另外一个模块就直接用就是了

extern char *mybuffer;
mybuffer[0] = 1;
头像
ttand
帖子: 1745
注册时间: 2005-08-22 14:05
来自: 离开北京

Re: linux内核模块创建共享内存

#4

帖子 ttand » 2014-05-06 9:37

astolia 写了:最简单的方法是直接把符号导出

char mybuffer[100];
EXPORT_SYMBOL(mybuffer);

另外一个模块就直接用就是了

extern char *mybuffer;
mybuffer[0] = 1;
如果模块在不同的进程上下文中。虚拟地址会不会不同。
错过好多好贴,没占到广告位后悔啊
weicz
帖子: 49
注册时间: 2007-03-17 1:15

Re: linux内核模块创建共享内存

#5

帖子 weicz » 2014-05-09 13:52

nffy 写了:用户空间进程可以通过shmget创建共享内存。
如果两个内核模块要通过共享内存进行通信,一个模块向共享内存里面写入数据,另一个内核模块从该共享内存里读出数据。
请问能否像用户空间进程一样,通过shmget,shmat,shmdt,shmctl等函数建立共享内存?
两个内核模块要通过共享内存进行通信,该如何操作?
O(∩_∩)O谢谢
写一个共享内存的驱动,在/dev下建立节点,任何需要共享的程序在用户空间打开相应的/dev节点对文件操作就行了
回复