Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 4 Feb 2005 16:51:03 +0000
From:      Doug Rabson <dfr@qubesoft.com>
To:        "M. Warner Losh" <imp@bsdimp.com>
Cc:        nate@root.org
Subject:   Re: cvs commit: src/sys/ia64/ia64 machdep.c
Message-ID:  <d14fd465b7f6775b458e51f8e5a21e0d@qubesoft.com>
In-Reply-To: <20050204.094615.123623745.imp@bsdimp.com>
References:  <5539563a425020d35ef1878057f4f85d@qubesoft.com> <20050204.093654.114275559.imp@bsdimp.com> <4f339e2416fad9f0baab265cec8a744d@qubesoft.com> <20050204.094615.123623745.imp@bsdimp.com>

next in thread | previous in thread | raw e-mail | index | archive | help

On 4 Feb 2005, at 16:46, M. Warner Losh wrote:

> In message: <4f339e2416fad9f0baab265cec8a744d@qubesoft.com>
>             Doug Rabson <dfr@qubesoft.com> writes:
> :
> : On 4 Feb 2005, at 16:36, M. Warner Losh wrote:
> :
> : > In message: <5539563a425020d35ef1878057f4f85d@qubesoft.com>
> : >             Doug Rabson <dfr@qubesoft.com> writes:
> : > :
> : > : On 4 Feb 2005, at 16:14, M. Warner Losh wrote:
> : > :
> : > : > In message: <84e9ba659174ea3f7c7b2930c0ae3759@xcllnt.net>
> : > : >             Marcel Moolenaar <marcel@xcllnt.net> writes:
> : > : > : > I'm not sure if my approach is correct -- should different
> : > drivers
> : > : > for
> : > : > : > the same hardware share the same devclass?
> : > : > :
> : > : > : A datapoint: sio(4) and uart(4) are different drivers for the
> : > same
> : > : > : hardware.
> : > : > : They don't share the devclass.
> : > : >
> : > : > Neither do they share the same name.
> : > :
> : > : Just to make things clear, if two drivers use the same name, they
> : > will
> : > : always share the devclass automatically (whether or not they use 
> the
> : > : same variable to reference the devclass) and will allocate
> : > : non-conflicting unit numbers.
> : >
> : > Cool.  I'd thought I'd wound up with two instances of ed0 when I 
> had
> : > different devclasses in the if_ed_isa and if_ed_pci files once 
> upon a
> : > time...
> :
> : This shouldn't be possible - both the driver registrations should go
> : through devclass_find_internal() to find their devclasses and this
> : always searches for an existing class before it creates one. If this
> : happens then its a serious bug...
>
> I think I had this problem in 4.0-current before 4.0 release.  Maybe
> there used to be a bug, or I did something stupid...
>
> If this is the case, why then do we have the allocation of devclass in
> the drivers and not just leave it to subr_bus.c?

It is in subr_bus.c - the drivers end up in driver_module_handler() 
where they sort out the devclass and add the driver to the parent's 
driver list etc.

You can call devclass_create() if you have some other unusual reason 
(perhaps some some generic code which does cdevsw[] handling for ell 
"foobar" devices or whatever) but it also ends up going through 
devclass_find_internal() which returns the existing devclass if there 
already is one.

>



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