svn commit: r215544 - head/sys/kern
John Baldwin
jhb at freebsd.org
Fri Nov 19 21:21:29 UTC 2010
On Friday, November 19, 2010 4:09:28 pm Jung-uk Kim wrote:
> On Friday 19 November 2010 02:43 pm, Attilio Rao wrote:
> > Author: attilio
> > Date: Fri Nov 19 19:43:56 2010
> > New Revision: 215544
> > URL: http://svn.freebsd.org/changeset/base/215544
> >
> > Log:
> > Scan the list in reverse order for the shutdown handlers of
> > loaded modules. This way, when there is a dependency between two
> > modules, the handler of the latter probed runs first.
> >
> > This is a similar approach as the modules are unloaded in the
> > same linkerfile.
> >
> > Sponsored by: Sandvine Incorporated
> > Submitted by: Nima Misaghian <nmisaghian at sandvine dot com>
> > MFC after: 1 week
>
> Hmm... It is not directly related but I was thinking about doing
> similar things for sys/kern/subr_bus.c. What do you think about the
> attached patch?
Hmm, the patches for suspend and resume that I had for this took the opposite
order, they did suspend in forward order, but resume in backwards order.
Like so:
--- //depot/vendor/freebsd/src/sys/kern/subr_bus.c 2010-11-17 22:30:24.000000000 0000
+++ //depot/user/jhb/acpipci/kern/subr_bus.c 2010-11-19 17:19:02.000000000 00
@@ -3426,9 +3429,9 @@
TAILQ_FOREACH(child, &dev->children, link) {
error = DEVICE_SUSPEND(child);
if (error) {
- for (child2 = TAILQ_FIRST(&dev->children);
- child2 && child2 != child;
- child2 = TAILQ_NEXT(child2, link))
+ for (child2 = TAILQ_PREV(child, device_list, link);
+ child2 != NULL;
+ child2 = TAILQ_PREV(child2, device_list, link))
DEVICE_RESUME(child2);
return (error);
}
@@ -3447,7 +3450,7 @@
{
device_t child;
- TAILQ_FOREACH(child, &dev->children, link) {
+ TAILQ_FOREACH_REVERSE(child, &dev->children, device_list, link) {
DEVICE_RESUME(child);
/* if resume fails, there's nothing we can usefully do... */
}
(Likely mangled whitespace.)
I couldn't convince myself which order was "more" correct for suspend and resume.
--
John Baldwin
More information about the svn-src-head
mailing list