私は現在、さまざまなシステム コールにフックし、呼び出されたシステム コールに応じてログに書き込むプロジェクトに取り組んでいます。そのため、たとえば、ファイルのアクセス許可を変更するときは、古いアクセス許可と新しいアクセス許可を追跡するログ ファイルに小さなエントリを書き込みます。しかし、私が見るべき場所を正確に特定するのに苦労しています. 上記の例では、strace は、「chmod」コマンドがシステム コール sys_fchmodat() を使用していることを示しています。ただし、sys_chmod() と sys_fchmod() もあります。
カーネル開発者は自分たちが何をしているのかを知っていると確信していますが、私は疑問に思います: これらの (一見) 冗長なシステムコールのポイントは何ですか? また、どのシステムコールが何に使用されるかについての規則はありますか? (つまり、"at" システムコールか、それとも "f" で始まるシステムコールか?)