Syscall实现内核模块2.6

eek*_*nay 1 system-calls kernel-module linux-kernel

在做了一些阅读之后,我开始明白通过LKM添加新的系统调用在2.6中变得更难.似乎syscall表不再导出,因此在运行时插入新调用(不可能?).

我想要实现的目标如下.

我有一个正在执行特定任务的内核模块.此任务取决于应由用户土地过程提供的输入.此信息需要到达模块.为此,我将介绍一个新的系统调用,它在内核模块中实现,并可从用户域进程调用.

如果我必须重新编译内核以添加我的新系统调用,我还需要在内核模块之外编写实际的系统调用逻辑,对吗?

还有另一种方法吗?

干杯,eeknay

Eri*_*nen 5

Syscalls不是这种工作的正确接口.至少,这就是内核开发人员难以添加系统调用的原因.

在用户空间和内核模块之间移动数据有很多种不同的方法:procsysfs伪文件系统,字符设备接口(使用读或写或ioctl),或本地伪网络接口netlink.

您选择哪一个取决于您要发送的数据类型的数量.如果你打算只传递少量数据,你应该只使用proc/sysfs; 对于大批量转移,char device或netlink更适合.