cvs commit: src/sys/i386/i386 bios.c

M. Warner Losh imp at bsdimp.com
Thu Jun 17 19:46:13 GMT 2004


In message: <200406171538.08813.jhb at FreeBSD.org>
            John Baldwin <jhb at FreeBSD.org> writes:
: On Thursday 17 June 2004 03:25 pm, M. Warner Losh wrote:
: > In message: <200406171247.04461.jhb at FreeBSD.org>
: >
: >             John Baldwin <jhb at FreeBSD.org> writes:
: > : On Tuesday 15 June 2004 11:02 pm, M. Warner Losh wrote:
: > : > In message: <200406152008.50656.jhb at FreeBSD.org>
: > : >
: > : >             John Baldwin <jhb at freebsd.org> writes:
: > : > : On Monday 14 June 2004 10:12 pm, Nate Lawson wrote:
: > : > : > njl         2004-06-15 02:12:12 UTC
: > : > : >
: > : > : >   FreeBSD src repository
: > : > : >
: > : > : >   Modified files:
: > : > : >     sys/i386/i386        bios.c
: > : > : >   Log:
: > : > : >   We only need the devclass_find() result, not the softc.
: > : > :
: > : > : The devclass still exists if there is no acpi0 device due to 'set
: > : > : hint.acpi.0.disabled=1'.  Perhaps devclass_get_device() is more
: > : > : appropriate than devclass_get_softc() though.
: > : >
: > : > The hint is insufficient to create the devclass, I believe.  It exists
: > : > because there's a node in the tree or could be a node in the tree.
: > : > devclass_get_device() and checking to see if it is attached might be
: > : > even better.
: > :
: > : The devclass exists even if there is no acpi0 device is my point.  If
: > : acpi.ko is loaded or compiled into the kernel, then the driver is going
: > : to be loaded and the devclass added to the kernel's list.
: >
: > I think we're saying basically the same thing and arguing over how it
: > gets there :-)
: >
: > Fetching the softc likely isn't the right answer.
: > device_is_attached(dev) is likely a better way to go.
: 
: Yes, using that instead of getting the softc would be fine.  However, it would 
: need to check that the passed in dev is NULL in that case.  You would need to 
: do:
: 
: 	device_t acpidev;
: 
: 	acpidev = devclass_get_device(devclass_find("acpi"), 0);
: 	if (acpidev != NULL && device_is_attached(acpidev))
: 		return;
: 
: rather than:
: 
: 	if (devclass_get_softc(devclass_find("acpi"), 0) != NULL)
: 		return;

True.

: Which requires an extra variable, etc.  If device_is_attached() checked for 
: NULL argument you could do:
: 
: 	if (device_is_attached(devclass_get_device(devclass_find("acpi"), 0)))
: 		return;	

Easy enough to arrange...

Warner


More information about the cvs-src mailing list