ARPで作ったもののまとめ。次はIPの解析あたりから。
このアプリには2つのスレッドがある
1.ドライバスレッド
2. ARPサービススレッド
2のスレッドが nic_write, nic_readの関数経由でドライバにアクセスしてARPのサービスを提供する
ARPサービス⇔nic_read/nic_write⇔NicServer⇔Nic
ARPサービスとnic_read/nic_writeは同一スレッド(スレッドAと呼ぶ)
NicServerとNicは同一スレッド(スレッドBと呼ぶ)
スレッドAとスレッドBはメッセージ機構を利用して、Frameの取得・提供を行う。
なおFrameデータ自体のやり取りは、メッセージで行わずえせ共有メモリ(というかグローバル変数)を利用する。
これは将来 NicServer と ARPサービスが別プロセス内で実行されるようになったときに共有メモリで置き換えられる。
浮かび上がった課題
IPフレームを処理しているとARPの処理が遅延する
⇒とりあえずこのまま進んでみる