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