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

Re: reboot without WinCE



こばやしです

 >  - pbsdboot からの移植が十分でないような気がします。
 >    現在実行しているカーネルよりも大きなカーネル、
 >    たとえばインストール用の RAM disk イメージいりカーネルなどを
 >    ロードするとおかしくなりませんか?

この辺のテストをしているのですが、大きいカーネルを入れる領域を確保するため
に single user mode に落として余計なプロセスを消しても、ページキャッシュに
使われたままになっているのか、メモリが取り戻せません。

 |error = uvm_pglistalloc(map.pagesize, avail_start,
 |    avail_end, 0, 0, &mlist, 1, 1);
 |if (error) {
 |	wakeup(&uvm.pagedaemon);
 |	error = uvm_pglistalloc(map.pagesize, avail_start,
 |	    avail_end, 0, 0, &mlist, 1, 1);
 |	if (error) {
 |		printf("mmioctl: can't allocate map\n");
 |		uvm_pglistfree(&mlist);
 |		return (error);
 |	}
 |}

こんなかんじで、一度確保できなかったら pagedaemon を wakeup した後、もう一度
試みてそれでもだめなら諦めるというふうにしてみたのですが、やはりだめです。
どうするのが正しいのでしょう?
-- 
KOBAYASHI Yoshiaki