C 在内核空间中创建共享内存段?

C 在内核空间中创建共享内存段?,c,linux,operating-system,system,C,Linux,Operating System,System,我正在尝试创建一个“邮箱”系统调用,进程可以在其中相互发送消息。我想使用某种共享内存,这样我就可以通过其ID引用“邮箱”,但我不能从另一个系统调用调用系统调用,对吗?是否有其他方法可以通过ID“引用”特定的“邮箱”?我正在考虑使用kmalloc并创建一个结构数组。不是寻找代码,只是关于我应该如何做这件事的一般指针。谢谢大家! 编辑:不要认为我澄清了,但是邮箱必须在内核空间中您当然不能从用户空间调用kmalloc 您所寻找的实际上是POSIX“共享内存” 通常,您可以调用以打开共享内存对象。然后,

我正在尝试创建一个“邮箱”系统调用,进程可以在其中相互发送消息。我想使用某种共享内存,这样我就可以通过其ID引用“邮箱”,但我不能从另一个系统调用调用系统调用,对吗?是否有其他方法可以通过ID“引用”特定的“邮箱”?我正在考虑使用
kmalloc
并创建一个结构数组。不是寻找代码,只是关于我应该如何做这件事的一般指针。谢谢大家!


编辑:不要认为我澄清了,但是邮箱必须在内核空间中

您当然不能从用户空间调用
kmalloc

您所寻找的实际上是POSIX“共享内存”

通常,您可以调用以打开共享内存对象。然后,您可以使用它,这样您就可以通过指针访问它,就像普通内存一样

另见:

  • (包括示例代码)

很抱歉,我忘了提到“邮箱”必须在内核中space@user1813076我真的不明白你想要实现什么,你不能用已经存在的特性来实现。您可以使用许多IPC机制:UNIX套接字(包括基于文件的)、管道、共享内存。这些邮箱拥有哪些通过这些方式无法满足的功能?请注意,UNIX套接字缓冲区所在的实际内存位于内核空间中。它仅用于我的操作系统类中的项目。我们必须创建一些类似于共享内存段的东西,你打算修改Linux内核吗?我认为添加一个系统调用来创建或使用这些邮箱是有意义的。