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

John Baldwin jhb at FreeBSD.org
Thu Jun 17 19:37:37 GMT 2004


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;

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;	

-- 
John Baldwin <jhb at FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org


More information about the cvs-src mailing list