В настоящее время я работаю над проектом, который подключается к различным системным вызовам и записывает данные в журнал, в зависимости от того, какой из них был вызван. Так, например, когда я меняю права доступа к файлу, я записываю небольшую запись в файл журнала, который отслеживает старое и новое разрешение. Однако у меня возникают проблемы с определением того, где именно я должен смотреть. В приведенном выше примере strace сообщает мне, что команда "chmod" использует системный вызов sys_fchmodat (). Однако есть также sys_chmod () и sys_fchmod ().
Я уверен, что разработчики ядра знают, что делают, но мне интересно: в чем смысл всех этих (казалось бы) избыточных системных вызовов и есть ли какое-то правило, какие из них для чего используются? (т.е. системные вызовы "at" или вызовы с префиксом "f" предназначены для чего-то конкретного?)





История :-)
После того, как системный вызов был создан, его нельзя изменить, поэтому, когда требуется новая функциональность, создается новый системный вызов. (Конечно, это означает, что перед созданием нового системного вызова есть очень высокая планка).
Да, есть некоторые правила именования.