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.