对于大学作业,我们必须向Linux内核添加系统调用。我有“你好,世界”没有问题。在添加更复杂的调用方面,我知道(或者至少认为)我不能使用像malloc这样的C函数,但我想知道我可以使用syscall()来使用其他系统调用吗?
答案 0 :(得分:3)
内核对几乎所有内容都有自己的特定调用。您无权访问系统调用或<sys/xxxx.h>
头文件。
对于您的例子,是的,您无法使用malloc()
,但可以使用kmalloc()
在旧版本的内核(2.4)中,您可以通过syscall()
宏使用syscallN()
。我很确定已被删除。
一般来说,来自内核的syscalls()
并不是一个好主意。真正的系统调用只是用户空间进入内核做某事的一种方式,所以如果你已经在内核中,应该有更好的方法去做你想要做的事情。