続々・ kernel 2.6 module で遊ぼう
_ [comp] 続々・ kernel 2.6 module で遊ぼう
w3m の inflate.c と crypto/deflate.c、ReadWriteFile.c を組み合わせ、gzip されたファイルを読み込んで gunzip して書き出すモジュールを作ってみた。ポイントとしては、
- inflateInit2 では windowBits を +32 すると gzip ヘッダを読み飛ばしてくれるようだけど、zlib_inflateInit2 ではやってくれない?ようなので、arch/ppc/boot/openfirmware/common.c の gunzip() を参考に読み飛ばしを追加。
- zstream.zalloc zstream.zfree zstream.opaque の代わりに zstream.workspace を使う必要がある。
他には、変数の確保の仕方とか kmalloc とかよくわかってなくて、モジュールを読み込んだ瞬間 kernel ごと刺さったりとか。早めに QEMU 使えばよかった。
つづき: