そんなことありません(1999年10月中旬)


[Home] [最近の日記] [前の日記] [次の日記]


1999/10/11(月)

あ、どうもありがとうございます。いえいえ、あのコメントがキッカケになったのですから。

-alldirsの説明はexports(5)を真面目に読んだら書いてありました。えーと、多分「The second is to specify the pathname of the root of the filesystem followed by the -alldirs flag」ですね。

ちなみにIBM Personal Power Series 830に搭載されているのはPowerPC 604eではなくてPowerPC 604だったりします。

NetBSD 1.4Lになったようなのでsupしてkernel作り直してmake buildをかけて寝る。

昼頃に起きて引越しの準備を進める。段ボールをスーパーマーケットで貰ってきて、取り敢えず本だけは片付ける。

supしてしまったのでprepのkernelを作り直してみる。NFS mountをしようとしてtrap 700でコケる様になってしまった。うーむ、MI部分は全然判らん。


1999/10/12(火)

hoge大明神様のいじわるー。いじめられると泣きます、えーん。と、言う訳で大明神様から聞いたという外国な人からメールが届いたのでした。

取り敢えず下手すぎてどうしようも無い英語らしい言語で返事は出してみる。あいつの言いたい事が判らないとか言われましたら、大明神様フォローをお願いします。

そう言えばirqの事がユーザーズガイドに載っていた事を思い出したので見てみる。

激謎。電力管理までは用語として理解は出来るけど、分散・統合って何のだ。ついでに関連のありそうなI/O portも見てみる。

0x808は謎だ…。

ppc-make cleandirしてrm *.hしてconfigしなおして、ppc-make dependしてppc-makeしなおしたらコケるのが直ってしまった…。

MI部をいじってしまっていた部分をMD部へ移動する。残っているのはlibsaのread.cだけ。

libsaでF_RAWが立っている時のread処理っておかしい様な気がするのですけど。beboxでboot-loaderにkernelをくっつけた時ってちゃんとkernelが読めますか。

ま、どうもありがとうございます。

うーむ、今日はprep刺さりまくり。一昨日の方が安定してたな。

うわぁ、何が何だかって事になってるんですけど。て言うか情報伝わるの早すぎ。で、どーでも良いけどnonaka@koharu.q.asahi-net.or.jpってどこから持ってきたんだよ…Deamon Newsよ。あ、もしかしてあのページのboot message logからか。

MCAは全然判りません。というかPCI-MCA搭載マシンなんてあるのかな。

メール送ったらdtiに弾かれた。sendmailの設定していないのバレバレ。


1999/10/13(火)

うーむ、動いていますか。。えーと、それでは例えばloadfile.c:elf_exec()の280行目辺りの処理で、

	for (first = 1, i = 0; i < elf->e_phnum; i++) {
		Elf_Phdr phdr;
		if (lseek(fd, elf->e_phoff + sizeof(phdr) * i, SEEK_SET)
		    == -1)  {
			WARN(("lseek phdr"));
			return 1;
		}       
		if (read(fd, (void *)&phdr, sizeof(phdr)) != sizeof(phdr)) {
			WARN(("read phdr"));
			return 1;
		}               

lseek()でoffsetをelf->e_phoff + sizeof(phdr) * iに変更しています。で、次にoffsetからsizeof(phdr)分読み出そうとします。read()では、

ssize_t
read(fd, dest, bcount)
	int fd;
	void *dest;
	size_t bcount;
{
	register struct open_file *f = &files[fd];
	size_t resid;

	if (f->f_flags & F_RAW) {
		errno = DEV_STRATEGY(f->f_dev)(f->f_devdata, F_READ,
			btodb(f->f_offset), bcount, dest, &resid);
		if (errno)
			return (-1);
		f->f_offset += resid;
		return (resid);
	}
}

読み出すデバイスがin()だとすると、DEV_STRATEGYの実体はinkernel.c:instrategy()ですよね。で、さっきlseek()で移動したoffsetはDEV_BSIZE単位の値となります。

int
instrategy(devdata, func, blk, size, buf, rsize)
	void *devdata;	/* device uniq data */
	int func;	/* function (read or write) */
	daddr_t blk;	/* block number */
	size_t size;	/* request size in bytes */
	void *buf;	/* buffer */
	size_t *rsize;	/* bytes transferred */
{

	memcpy(buf, (char *)(KERNENTRY + blk * DEV_BSIZE), size);
	*rsize = size;
	return (0);
}

で、実際に読み込まれるのはDEV_BSIZE単位に切り詰められたoffsetの先頭からsizeof(phdr)分になりますよね。読みだしたいものはoffsetからsizeof(phdr)なのに。どこかで読み違えていますかねぇ。

とりあえずcvsとsshの使い方を勉強しないと。


1999/10/14(木)

日本でならその逆の様な気が;-)

そう言えばport maintainerとdeveloperは何が違うのでしょうか。触れるソースの範囲とかなのかな。

分散・統合はDMA転送の事なんですか。検索エンジンで探してみたら日本語で解説されているページを発見、なるほど。しかし、変に訳されると余計に判らなくなりますね。そのままScatter/Gatherと書いてくれればいいのに。

実はmake cleandirを結構頻繁にしてたりします。union mountでcurrentのソースに被せて開発をしていると、supしてきたソースよりもオブジェクトファイルが新しい事がありますので。

gzipped kernelなら大丈夫ですね。gzipped kernelの場合にはDEV_BSIZE単位でしか読みださないようです。

DMAについて調べ物をしていたらFreeBSD handbook24.3. DMAとはどういったものでどういう働きをするのかというページがあることを発見。うーむ、素晴らしい。

RTC_OFFSET=0とかしてみる悪い子:-)


1999/10/15(金)

疲れた…。

やっぱりnews68kの方が…というのもPower Series 830を持っている人は検索エンジンで探せば見つかるのですが、その全部の人がlinuxppcを入れているのです。よっぽどBSDに思い入れが無ければ乗り換えるとも思えません。


1999/10/17(日)

以前メールを送ってきた外国な人は残念ながらOpenfirmware搭載機種だったらしい。今のところ対応する予定もマシンもやる気もありません、スマン。もし対応させるとしたら、メモリが不連続である事を考慮しないといけないのか。

やはりprepなんて名前つけなければ良かったのかも…。

ぅぉ、見学しに行かなくては。

ext_intr()が呼ばれない…外部割り込みが入らなくなってしまったのか。その割にはシリアルコンソールからの入力は受け付けるしなぁ。

という事で何故ならば私が書き直したところだからだの教えに従い(とは言っても怪しそうな部分は自分で書いたものばかりなんだけど)、multi-user mode到達時点のソースに戻してみる。

流石に動く…MI部での変更をMD部に移動させたコードが悪いみたいだ。…ドライバを組み込んでいないデバイスのI/Oやメモリをenableしては駄目な様だ。当たり前だと言われればそれはそうなんだけど…。

うぐぅ、またtrap 700でコケる様になってしまった。


1999/10/18(月)

自棄になって最適化オプションを-O2にしてみたらtrapでコケなくなってしまった。マズイ。

そんな訳?でkernel clean-upの一貫として、

CWARNFLAGS?=	-Werror -Wall -Wmissing-prototypes -Wstrict-prototypes \
		-Wpointer-arith 

makeしてみる。いきなりpio.hbus.hで大量にmissing prototypeが出てめげそうになる。

…prototype関係のwarning出まくり。ハマりの元だな、これは。

あー、もう嫌になった。prototype系のwarningは無視する事に決定。


1999/10/19(火)

/sys/arch/prep以下のwarningは全部取り除いたと思う。正しいかは別としてだけど。/sys/arch/powerpcの方はまた後で。

union mountして開発するのも面倒になったのでcvsとか使ってみる…。NetBSD-currentのsourceをimportして、cvs rtagで枝を作ってcheckoutしたらディスクの空き容量がピンチになってしまった。

Filesystem  1K-blocks     Used    Avail Capacity  Mounted on
/dev/wd0a       31938    17195    13146    56%    /
/dev/wd0e       87254    68728    14163    82%    /usr
/dev/wd0f      127018     3487   117180     2%    /var
mfs:128         48359      239    45702     0%    /tmp
/dev/wd0g     2633940  2299425   202818    91%    /.u
kernfs              1        1        0   100%    /kern
procfs              4        4        0   100%    /proc
/.u/home      2633940  2299425   202818    91%    /home
/.u/local     2633940  2299425   202818    91%    /usr/local
/.u/X11       2633940  2299425   202818    91%    /usr/X11
/.u/pkg       2633940  2299425   202818    91%    /usr/pkg
/.u/src       2633940  2299425   202818    91%    /usr/src
/.u/xsrc      2633940  2299425   202818    91%    /usr/xsrc
/.u/pkgsrc    2633940  2299425   202818    91%    /usr/pkgsrc

これではmake buildするとかなり危ういな。うーむ、6.4GB HDDを買うべきか。いい加減サスペンド・レジュームできないのも辛いしな。

NetBSD/prepで対象とするマシンは特に遅いという訳では無いのだけれど…うぐぅ。


NONAKA Kimihiro / aw9k-nnk at asahi-net dot or dot jp