Linuxカーネルに関する技術情報を集めていくプロジェクトです。現在、Linuxカーネル2.6解読室の第2章までを公開中。
プロトコル処理の基本的な実行コンテキストに注目することにする。
送信処理は、原則送信要求を行ったプロセスのコンテキストでドライバまで走り切る。ただしドライバの能力を越えて送信要求があった場合は送信データをnet_device構造体に繋ぎ、ソフト割り込みハンドラにより遅延して再度ドライバの送信処理を起動する。再送機能をサポートするプロトコルではタイマ処理の延長で送信処理が動作することもある。
受信処理において、割り込みハンドラで実行するのはドライバの割り込みハンドラのみであり、その後の処理はソフト割り込みハンドラに委ねる(softnet_dataにデータを繋ぎソフト割り込みハンドラの起動要求を出す)。ソフト割り込みハンドラは、受信可能な状態にデータを整えsock構造体にリンクするところまでを実行する。プロセスコンテキストで行われる処理はsock構造体からデータを取り出す処理だけである。
この構成は、以下のような効果がある。
(NIS)HirokazuTakahashi
2000年12月09日 (土) 23時55分06秒 JST1
[PageInfo]
LastUpdate: 2008-08-27 14:18:14, ModifiedBy: hiromichi-m
[Permissions]
view:all, edit:login users, delete/config:members