回答:
最初に読んでCを学ぶ必要がある場合、Linuxカーネルはあなたが始めるところではありません。それはかなり非典型的な低レベルのプログラムです(私はそれが非常によく構造化されていることがわかりましたが)。
むしろ、いくつかのBSDユーティリティプログラム、たとえばOpenBSDのソースコードを見てください。プログラムのセミフォーマルで高レベルな仕様については、そのマンページをお読みください。
Spinellisのコード読み取りやカーニハンとパイクのプログラミングの実践のコピーを入手してください。
最後に、UnixまたはLinuxカーネルの内部に関する優れた本を読んで、カーネルを読み始めてください。(モーリスJ.バッハのUnixオペレーティングシステムの設計(1986年頃)は、たとえLinuxであっても、まだ良い出発点であることがわかりました。)
私が同じことをしたいとき(あなたがしたいこと)を見て驚いたのは、そのような複雑なコードで関連するコメント(もしあれば)をほとんど見つけられないことです。
ドキュメントは正しいコードである必要がありますが、コメント機能は理由によりCプログラミング言語に存在します。
それらが削除された場合、それはおそらく理由にもあります。それを避けるためです。
私は、すべてのカーネル開発者がこのクリーンアップされたコードベースに取り組む必要があることを心から疑っています。私の考えでは、(少なくとも)任意のカーネル「機能」(議論のためにepollのような)の作者がコメントのすべてが欠落しているコードのプライベートバージョン。
なぜ私はこれを信じるのですか?
有名なカーネル開発者の1人が、G-WANサーバーのソースコードをオープンソースとしてリリースするように説得しようとして、「できるだけ読みにくくする」ようにアドバイスしました。
彼は、この戦術が彼のすべての「オープンソース」プロジェクトで何十年にもわたって素晴らしい働きをしたと付け加えました。
広く使用されている「オープンソース」プロジェクトの重要な部分をしっかりと把握することは、収益がコンサルティングのみに由来する場合に明らかにチャンスを生み出します。
したがって、あなたの質問に戻って、このコードを理解するためにできる最も有用なことは、コードを段階的に調査し、不足しているコメントを追加することです。
その後、徐々に、それは意味をなすようになります(そして、コメントが削除された理由がわかります)。
i++ // increment i by 1