Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 21 Nov 2011 11:16:47 -0500
From:      John Baldwin <jhb@freebsd.org>
To:        Hans Petter Selasky <hselasky@freebsd.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r227701 - in head/sys: arm/xscale/ixp425 dev/ahci dev/ata dev/gpio dev/mvs dev/ppbus dev/ppc dev/siba dev/siis dev/usb kern sys
Message-ID:  <201111211116.47529.jhb@freebsd.org>
In-Reply-To: <201111191011.pAJABp0N034812@svn.freebsd.org>
References:  <201111191011.pAJABp0N034812@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Saturday, November 19, 2011 5:11:51 am Hans Petter Selasky wrote:
> Author: hselasky
> Date: Sat Nov 19 10:11:50 2011
> New Revision: 227701
> URL: http://svn.freebsd.org/changeset/base/227701
> 
> Log:
>   Move the device_delete_all_children() function from usb_util.c
>   to kern/subr_bus.c. Simplify this function so that it no longer
>   depends on malloc() to execute. Identify a few other places where
>   it makes sense to use device_delete_all_children().
>   
>   MFC after:	1 week

Sorry I didn't review this earlier when you sent it to me.  In general I
think this is a good idea, and reducing the duplicated code is great.  One
style nit below:

> Modified: head/sys/kern/subr_bus.c
> ==============================================================================
> --- head/sys/kern/subr_bus.c	Sat Nov 19 09:16:52 2011	(r227700)
> +++ head/sys/kern/subr_bus.c	Sat Nov 19 10:11:50 2011	(r227701)
> @@ -1881,6 +1881,39 @@ device_delete_child(device_t dev, device
>  }
>  
>  /**
> + * @brief Delete all children devices of the given device, if any.
> + *
> + * This function deletes all children devices of the given device, if
> + * any, using the device_delete_child() function for each device it
> + * finds. If a child device cannot be deleted, this function will
> + * return an error code.
> + * 
> + * @param dev		the parent device
> + *
> + * @retval 0		success
> + * @retval non-zero	a device would not detach
> + */
> +int
> +device_delete_all_children(device_t dev)
> +{
> +	device_t child;
> +	int error;
> +
> +	PDEBUG(("Deleting all children of %s", DEVICENAME(dev)));
> +
> +	error = 0;
> +
> +	while ( (child = TAILQ_FIRST(&dev->children)) ) {

Can you fix the extra whitespace here and explicitly test against NULL?

> +		error = device_delete_child(dev, child);
> +		if (error) {
> +			PDEBUG(("Failed deleting %s", DEVICENAME(child)));
> +			break;
> +		}
> +	}
> +	return (error);
> +}
> +
> +/**
>   * @brief Find a device given a unit number
>   *
>   * This is similar to devclass_get_devices() but only searches for
> 

-- 
John Baldwin



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