我正在修改Linux系统调用。我发现有几个调用是未实现的系统调用。例如:系统调用。我不明白如果它们尚不可用,为什么它们会包含在手册页中。
它们没有在内核中实现。那么谁来实施它们呢?它们会在未来的内核版本中提供吗?或者用户必须实现它们?或者发行版会实现它们吗?
它们真的有必要吗?未实现的系统调用有什么用?
如果有人实现了这些调用,我如何知道它们已实现,我必须传递哪些参数以及它们将返回什么?
答案1
其中大多数曾经在 Linux 内核历史上的某个时刻实现过,但至少有一些vserver
仍然在特定内核中实现。
这些调用中的大多数现在基本上已过时,但它们的插槽仍然存在并包含一个存根,其作用不是破坏旧代码并允许在需要时在专用或新内核中重新实现。
答案2
手册页给出了 3 个原因。
Note that ftime(3), profil(3), and ulimit(3) are implemented as
library functions.
Some system calls, like alloc_hugepages(2), free_hugepages(2),
ioperm(2), iopl(2), and vm86(2) exist only on certain architectures.
Some system calls, like ipc(2), create_module(2), init_module(2), and
delete_module(2) exist only when the Linux kernel was built with
support for them.