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>