_ [comp] 続々・ kernel 2.6 module で遊ぼう

w3m の inflate.ccrypto/deflate.cReadWriteFile.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 使えばよかった