编写新系统调用时可用的功能

时间:2012-10-29 15:21:15

标签: c linux linux-kernel system-calls kernel

对于大学作业,我们必须向Linux内核添加系统调用。我有“你好,世界”没有问题。在添加更复杂的调用方面,我知道(或者至少认为)我不能使用像malloc这样的C函数,但我想知道我可以使用syscall()来使用其他系统调用吗?

1 个答案:

答案 0 :(得分:3)

内核对几乎所有内容都有自己的特定调用。您无权访问系统调用或<sys/xxxx.h>头文件。

对于您的例子,是的,您无法使用malloc(),但可以使用kmalloc()

在旧版本的内核(2.4)中,您可以通过syscall()宏使用syscallN()。我很确定已被删除。

一般来说,来自内核的syscalls()并不是一个好主意。真正的系统调用只是用户空间进入内核做某事的一种方式,所以如果你已经在内核中,应该有更好的方法去做你想要做的事情。