From owner-FreeBSD-tech-jp@jp.freebsd.org  Wed Jun 10 18:22:14 1998
Received: (from daemon@localhost)
	by jaz.jp.freebsd.org (8.8.8+3.0Wbeta13/8.7.3) id SAA29769;
	Wed, 10 Jun 1998 18:22:14 +0900 (JST)
	(envelope-from owner-FreeBSD-tech-jp@jp.FreeBSD.org)
Received: from sraigw.sra.co.jp (sraigw.sra.co.jp [202.32.10.2])
	by jaz.jp.freebsd.org (8.8.8+3.0Wbeta13/8.7.3) with ESMTP id SAA29756
	for <freebsd-tech-jp@jp.freebsd.org>; Wed, 10 Jun 1998 18:22:10 +0900 (JST)
	(envelope-from furuta@sra.co.jp)
Received: from sranhc.sra.co.jp (sranhc [133.137.20.3])
	by sraigw.sra.co.jp (8.8.7/3.6Wbeta7-sraigw) with ESMTP id SAA22436
	for <freebsd-tech-jp@jp.freebsd.org>; Wed, 10 Jun 1998 18:21:48 +0859 (JST)
Received: from sras63.sra.co.jp (root@sras63 [133.137.20.191])
	by sranhc.sra.co.jp (8.8.7/3.6Wbeta7-srambox) with SMTP id SAA23921
	for <freebsd-tech-jp@jp.freebsd.org>; Wed, 10 Jun 1998 18:22:03 +0900 (JST)
Received: from sras63.sra.co.jp (furuta@localhost [127.0.0.1]) by sras63.sra.co.jp (8.6.12+2.4W3/3.4W-sras63) with ESMTP id SAA04176 for freebsd-tech-jp@jp.freebsd.org; Wed, 10 Jun 1998 18:22:01 +0900
Message-Id: <199806100922.SAA04176@sras63.sra.co.jp>
To: FreeBSD-tech-jp@jp.freebsd.org
In-Reply-To: Your message of "Wed, 10 Jun 1998 17:05:03 +0900"
References: <199806100805.RAA05028@spls63.ccs.mt.nec.co.jp>
X-Mailer: Mew version 1.70 on Emacs 19.28.7 / Mule 2.2
Mime-Version: 1.0
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit
Date: Wed, 10 Jun 1998 18:21:50 +0900
From: Atsushi Furuta <furuta@sra.co.jp>
Reply-To: FreeBSD-tech-jp@jp.freebsd.org
Precedence: bulk
X-Distribute: distribute [version 2.1 (Alpha) patchlevel=24]
X-Sequence: FreeBSD-tech-jp 1530
Subject: [FreeBSD-tech-jp 1530] Re: de dou sun no 
Errors-To: owner-FreeBSD-tech-jp@jp.freebsd.org
Sender: owner-FreeBSD-tech-jp@jp.freebsd.org

  $B8EED$G$9!#(B

>> In article <199806100805.RAA05028@spls63.ccs.mt.nec.co.jp>,
	Nakagawa Yoshihisa <y-nakaga@ccs.mt.nec.co.jp> writes:

> | $B%3!<%I$NFI$a$J$$HSEg$+$i8+$k$H(B $B!V9-$2$9$.!W$K;W$($^$9!#(B
> step by step $B$G$$$-$^$R$g!#$^$:$O(B "old config" tool $B$N$^$^$G$b$$$$(B
> $B$+$i!"%I%i%$%P$N9=B$$@$1(B struct device $B%Y!<%9$N$b$N$K$7$A$c$C$F$b(B
> $B$$$$$s$8$c$J$$$C$9$+!#(B

  $B$H$j$"$($:!"A0$K8@$C$?!V(B2.2.1 base $B$G(B config.new $B$G(B single user boot 
$B$K@.8y$7$?$b$N!W$r8x3+$7$^$9$N$G!"C!$-Bf$K$9$k$J$j!";29M$K$9$k$J$j!"H?(B
$BLL65;U$K$9$k$J$j$9$k$HNI$$$N$G$O$J$$$+$H!#(B

  $B=`Hw$,$G$-$?$i!"JLES=q$-$^$9!#(B

# $B$b$N$O$"$k$s$G$9$,!"$A$g$C$H$G$b@bL@$r=q$+$J$$$H$5$C$Q$jM}2rITG=$J(B
# $B%7%m%b%N$G$9$N$G!#(B

> $B$"$H!"(Bnew config $B$K>\$7$$J}$K$*4j$$!#$^$:$3$l$rFI$a!"$H$$$&%=!<%9(B 
> && $B;qNA$r>R2p$7$F$/$@$5$$!#!J(BNetBSD $B$N%=!<%9$rFI$a!"$C$F$N$J$i!"6q(B
> $BBNE*$K$I$NJU$j$H$+!#!K(B

  $BF~<j$N$7$d$9$5$@$H!"(B NetBSD-1.3 $B$"$?$j$N%=!<%9%3!<%I$+$J$!!#(B

  $B0J2<$K!"(Bconfigure process $B$N35N,$r;d$,M}2r$9$k$?$a$K=q$$$?%a%b$,$"$j(B
$B$^$9$N$G!"$3$3$K=P$F$/$k4X?t$"$?$j$r96$a$F$_$k$H$$$$$+$J$!!#$"$H$O(B
sys/device.h $B$N%G!<%?9=B$$rGD0.$9$k!#$?$@!"$3$N$"$?$j$rM}2r$9$k$K$O!"(B
config $B$,@8@.$7$?(B "ioconf.c" $B$H$$$&%U%!%$%k$r8+$F9M$($J$$$H$D$i$$$+$b!#(B

  $BB?$/$N?M$K:n6H$7$F$b$i$&$K$O!"$3$N$"$?$j$N$-$A$s$H$7$?;qNA$rB7$($k$N(B
$B$,I,MW$G$7$g$&!#(B

================
arch/i386/i386/autoconf.c:configure()
	config_found("mainbus", NULL);

kern/subr_autoconf.c:config_rootfound()
	match = config_rootsearch(NULL, "mainbus", NULL);
	config_attach(ROOT, match, NULL, NULL);

kern/subr_autoconf.c:config_rootsearch()
	struct matchinfo m;
	m.fn = fn; (NULL)
	m.parent = ROOT;
	m.aux = aux; (NULL)
	m.match = NULL;
	m.indirect = 0;
	m.pri = 0;
	cf = (ioconf.c, mainbus);
	mapply(&m, cf);
	return m.match

kern/subr_autoconf.c:mapply()
	pri = mainbus_match(ROOT, cf, NULL(m.aux));
	m.match = cf;

arch/i386/i386/mainbus.c:mainbus_match()
	return 1;

kern/subr_autoconf.c:config_attach()
	dev = config_make_softc(parent(ROOT), cf(mainbus));
	mainbus_attach(parent(ROOT), dev, aux(NULL));

kern/subr_autoconf.c:config_make_softc()
	....

arch/i386/i386/mainbus.c:mainbus_attach()
	mba.mba_iba.iba_busname = "isa";
	...
	config_found(self(dev), &mba, mainbus_print);
#define config_found(d, a, p)	config_found_sm((d), (a), (p), NULL)

kern/subr_autoconf.c:config_found_sm()
	match = config_search(submatch(NULL), parent(dev), aux(mba));
	config_attach(parent(dev), match(isa), aux(mba), print(mainbus_print));

kern/subr_autoconf.c:config_search()
	m.fn = fn(NULL);
	m.parent = parent(dev);
	m.aux = aux(mba);
	m.match = NULL;
	m.indirect = 0; (mainbus->cd_indirect);
	m.pri = 0;
	cf = (ioconf.c, isa);
	mapply(&m, cf);
	return m.match

kern/subr_autoconf.c:mapply()
	pri = isamatch(parent(dev), cf(isa), aux(mba));
	m.match = cf;

dev/isa/isa.c:isamatch()
	strcmp(aux(mba)->iba_busname, cf->cd_name);
	return 1;

kern/subr_autoconf.c:config_attach()
	dev(isasoftc) = config_make_softc(parent(mainbus_softc), cf(isa));
	isaattach(parent(mainbus_softc), dev(isasoftc), aux(mba));

dev/isa/isa.c:isamatch()
	config_scan(isascan, self(isasoftc));

kern/subr_autoconf.c:config_scan()
	softc = config_make_softc(parent(isasoftc), cf(ed));
	isascan(parent(isasoftc), softc(ed));

dev/isa/isa.c:isascan()
	edmatch(parent(isasoftc), softc(ed), &ia);
================
--
$B8EED(B $BFX(B
furuta@sra.co.jp

