什么是未实现的系统调用?

什么是未实现的系统调用?

我正在修改Linux系统调用。我发现有几个调用是未实现的系统调用。例如:系统调用。我不明白如果它们尚不可用,为什么它们会包含在手册页中。

  1. 它们没有在内核中实现。那么谁来实施它们呢?它们会在未来的内核版本中提供吗?或者用户必须实现它们?或者发行版会实现它们吗?

  2. 它们真的有必要吗?未实现的系统调用有什么用?

  3. 如果有人实现了这些调用,我如何知道它们已实现,我必须传递哪些参数以及它们将返回什么?

答案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.

相关内容