14/16
記憶を頼りに
引き続きmem.cの調査結果報告。
read_memを調べる。
チャンク単位で読み込んでいるようだ。
物理アドレスと仮想記憶との返還らしき関数もある。
ループを利用しているがなぜ自作のデバイスドライバが無限ループを起こしたのか原因不明……
多分ここでコケると皆死ぬくらい重要であると思われるcopy_to_userが使われている。
こいつが無限ループの原因なのは見当がついているのだが対処方法はとんと不明。
さらにkallocがある、おそらくmallocのカーネル版であると予想する、常時インライン展開される関数の模様。
おそらくmallocが使えないのでシステムコールでメモリを確保しているはず。
ここで物理アドレスと論理アドレスの返還らしきことを行っている場所が示唆されている。
筆者のつたない英語力では詳細実装を追いきれない……
ページング処理らしきものもあるが詳細は不明。
現状こいつが一番読めるカーネルファイルなのでここを手がかかりに解読していくしかない、つらい……