我想要实现的目标如下。
我有一个正在执行特定任务的内核模块。 此任务取决于应由用户土地过程提供的输入。 此信息需要到达模块。 为此,我将介绍一个新的系统调用,它在内核模块中实现,并可从用户域进程调用。
如果我必须重新编译内核以添加新的系统调用,我还需要在内核模块之外编写实际的系统调用逻辑,对吗?
还有其他办法吗?
干杯, eeknay
答案 0 :(得分:5)
Syscalls不是这种工作的正确接口。至少,这就是内核开发人员难以添加系统调用的原因。
在用户空间和内核模块之间移动数据有很多种不同的方法:proc
和sysfs
伪文件系统,char设备接口(使用read或write或ioctl)或本地伪网络接口netlink
。
您选择哪一个取决于您要发送的数据类型的数量。如果你打算只传递少量数据,你应该只使用proc / sysfs;对于大批量转移,char device或netlink更适合。
答案 1 :(得分:0)
不可能 - 没有。 AV模块和rootkit一直都在这样做。