オペレーティング システムの概念 (7e、Silberschatz、Galvin、Gagne) を読んでいたときに、Linux カーネルにシステム コールを追加するという研究プロジェクトに出会いました。その本はそう言っている
Linux カーネルの最近のバージョンのシステム コール番号は、/usr/src/linux-2.x/include/asm-i386/unistd.h にリストされています。(たとえば、ファイル記述子を閉じるために呼び出されるシステム コール close() に対応する __NR_close は、値 6 として定義されます。) /usr/src/linux-2.x/arc/i386/kernel/entry見出し ENTRY(sys_call_table) の下の .S。unistd.h ファイルで定義されているシステム コール番号と一致するように、sys_close がテーブルの 6 番目のエントリに格納されていることに注意してください。(75ページ)
ubuntu リポジトリから最新の Linux ソース パッケージをダウンロードしたところ、上記のソース ファイルのディレクトリとファイル名がわずかに変更されていることがわかりました。しかし、ファイル /usr/src/linux-source-2.6.31/arch/x86/kernel/less syscall_table_32.S で私を混乱させる興味深いことがあります。sys_close は本で述べたように 6 番のエントリに格納されていますが、それでも、 unistd.h ファイルで __NR_close が 6 ではなく 57 として定義されています。この違いの理由は何ですか?
前もって感謝します