[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Pocket PostPet



はやし@東工大です。

From: Atsushi Onoe <onoe@sm.sony.co.jp>
Subject: Re: Pocket PostPet 
Date: Wed, 5 Jul 2000 10:53:47 +0900 (JST)

> ただ、NetBSD の lkm は primitive な機能しかないようなので、例えば autoload
> みたいなことはできないんじゃないかと思います。明示的に modload/modunload
> すれば、少なくとも i386 では動きます。

記憶があいまいだったので、チラっとソースを見直してみましたが
lkm 自体は、kernel内にモジュール用のメモリを確保したり、
そこにコードを書きこんだり、その中のエントリを呼ばせるという 
ioctl しか無いです。

以前の ip_filter とかは module にすると、ロード時には、kernel内に予め
用意したhookを書き変えるというかなり荒技を使っていた筈。
(今は、pfil hook を使っている)。
普通のデバイスにはもっとましな方法も用意されていますけど、基本はテーブル
書き変え。( cdevsw[] の中を書きかえるとか )

で、mipsel or eb でも出来ない事は無いと思うのですが、今試せません。
#どうも、R500 で kernel が load 出きなくなってしまって、、、。
ちなみに, sys/lkm の下は lkm の module 側で、kernel側の受け口は
sys/kern/kern_lkm.c です。
もしかしたら、受け口の方は動いたりするんじゃないでしょうか?

余談ですが、

>                                        major 番号などは load 時に決まるので、
> device file 等は modload の postinstall script で作成する必要があります。

major 番号に関しては、自動割り当てで、LKM用の予約スロットを使わずに
kernel 構築時から予約しておけば固定できるみたいです。

-----
yuki@is.titech.ac.jp 
林 幸弘@柴山研.数理計算科学専攻.情報理工学研究科.東京工業大学