Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 22 Nov 2005 00:07:10 +0800
From:      kylin <fierykylin@gmail.com>
To:        freebsd-hackers@freebsd.org
Subject:   sysinit how does nexus find legacy's driver?
Message-ID:  <87ab37ab0511210807p64282a42i657aeca9ef481e3d@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
The nexus_attach(device_t dev) will call

int
bus_generic_probe(device_t dev)
{
=09devclass_t dc =3D dev->devclass;
=09driverlink_t dl;

=09TAILQ_FOREACH(dl, &dc->drivers, link) {//here configure has point out
the relation?
=09=09DEVICE_IDENTIFY(dl->driver, dev);//here refer to the son's
IDENTIFY,make son's device structure
=09}

=09return (0);
}
the question is
in TAILQ_FOREACH(dl, &dc->drivers, link)
how does nexus get legacy's  driver in its devclass ?
have it done in the SI_SUB_DRIVER part?of initialization?

What happen during sSI_SUB_DRIVER ,does devclass for each driver initialize=
d?


May be the before SI_SUB_CONFIGURE, SI_SUB_DRIVER will first be
implement ,and the relative drivers will connect to each other.
I am sure that in autoconf.c ,the dl->link does not be add in ,so
where does the nexus find legacy?
In devclass_find_inernal
=09TAILQ_FOREACH(dc, &devclasses, link) {
=09=09if (!strcmp(dc->name, classname))
=09=09=09break;
=09}found nothing ,

//////////////////

--
we who r about to die,salute u!



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?87ab37ab0511210807p64282a42i657aeca9ef481e3d>